Андре Бек Био: https://www.bell-labs.com/usr/andre.beck
Это первое в серии статей, которые стремятся иллюстрировать реализацию простых облачных приложений на платформах без сервеса, таких как AWS Lambda/Shop Functions или функции облачных IBM.
В этой статье я опишу реализацию простого приложения для перевода речью-речевого языка без речта. Основная идея для приложения — взять на себя английскую запись голоса в качестве ввода и одновременного перевода на три различных целевых языка: итальянский, французский и немецкий. Для каждого целевого языка приложение сначала транскрибирует запись, затем переводит транскриптуру и, наконец, синтезирует перевод обратно в речь. Я реализовал приложение, используя AWS Lambda и STAP-функции, а также следующие службы облачных услуг AWS/IBM: IBM Watson Regive To-Text, Amazon Translate, а также Amazon Polly (текст-речь).
Шаг Функции Дизайн
Поскольку приложение состоит из более чем одной функции, я решил использовать функции AWS STAP для создания Workflow Workflow Workflow для приложения. Шаг Функции представляют собой службу оркестографии AWS, которые моделируют рабочие процессы в качестве стационарных машин. Они определяются с использованием JSON Амазонки государства языки (ASL). Определение рабочего процесса ASL состоит из карты всех возможных состояний рабочего процесса и переходов между ними. Например, стационарные функции State Machine могут указывать последовательность выполнения функций лямбда и способы обрабатывания ошибок выполнения функций (обработка повторных попыток). Вы можете найти больше примеров ASL в Шаг Функции Документы Отказ
Визуализация определения ASL (государственная машина) Я придумал для моего приложения перевода показано ниже. Он использует «параллельное» состояние ASL для обработки операций для каждого целевого языка параллельно. «Параллельное» состояние определяет фиксированное количество ветвей, которые получают один и тот же вход, но выполняются параллельно. Для сценариев, где количество филиалов параллельного исполнения не известно заранее, Amazon недавно добавила Карта штата Что я мог бы использовать для поддержки динамического набора целевых языков.
Определение ASL, показанное ниже, включает только первую ветвь моего штата. Ветви для двух других целевых языков очень похожи. Фактически каждая филиал выполняет то же, что же три AWS Lambda функционируют в следующей последовательности: «Preque2Text», «Translate» и «TTS». Единственное различие между ветвями — это код языка и параметр голоса, переданный на начальную функцию. Я использую состояние ASL ‘Pass’ State и «RESalvicath», чтобы добавить эти параметры на вход функции.
Шаг Функции триггер
Шагные функции, такие как отдельные функции лямбда, могут быть запущены операциями S3. Для моего приложения я решил, что имеет смысл для него срабатывания, когда новая запись голоса загружается в определенное ведро S3. Я настроил триггер функций шагов, следуя шагам в этом AWS Developer Guide Отказ
Я впервые создал новое ведро S3, а затем след в AWS CloudTrail (чтобы получить события S3) и, наконец, правило событий CloudWatch, где я указывал, что любая операция «PUTObject» в моем недавно созданном ведре S3 должна вызвать выполнение моих функций шага Государственный аппарат. Мероприятие, которое передается в качестве ввода в мой государственный автомат, содержит среди других данных, ключ объекта, вызвавшего выполнение.
Функция delection2text.
Функция Lambda «Repear2Text» читает аудио-клип из объекта S3, который вызвал выполнение шаговых функций, и впоследствии отправляет IBM’s Watson Peoplettext Cloud Service. Я также экспериментировал с службой транскрибирования Amazon, но был разочарован длительным временем обработки, особенно для коротких аудиожипов. Amazon Trancride, по-видимому, оптимизирована для звуковых записей, которые 2 минуты или дольше.
IBM речь к тексту Сервис (который имеет свободный уровень до 500 минут в месяц) предоставляет API для отдыха, который я звоню из моей функции лямбда. Служба использует основную схему аутентификации HTTP, в которой ключ API отправляется в качестве значения заголовка запроса HTTP.
Перевести функцию
Функция «Translate», показанная ниже, переводит транскрипты на один из трех целевых языков. Чтобы позвонить в службу перевода Amazon из моей функции LAMBDA, я сначала пришлось добавить правильные разрешения на роль IAM, связанной с моей функцией (см. Ниже).
Помимо исходного текста, API Translate ожидает как код исходного языка («en» в моем случае) и целевой код языка.
Функция TTS.
Функция «TTS», показанная ниже, вызывается после завершения функции «Translate». Он посылает результат перевода к сервису текстовой речи Amazon «POLLY» и сохраняет возвращенные аудиоданные в MP3 в ведро S3, которое я создал для этой цели. Обязательно не напишите переводы в то же ведро, что и исходные аудиожисты или другие функции будут выполняться в цикле. API Polly ожидает, что идентификатор голоса, выходной формат (я использовал MP3) и код языка. Вы можете найти список голосов и соответствующих голосовых идентификаторов здесь Отказ
Закрытие
Serverless Computing — это захватывающая новая парадигма, которая обещает освободить разработчиков программного обеспечения от бремени необходимости управлять серверами и инфраструктурой. Тем не менее, в то же время он также полностью изменяет способ программного обеспечения, развернутого и прогон. Я надеюсь, что эта статья помогла вам получить некоторое понимание в этом новом мире сервезовых вычислений. Вы можете найти полный исходный код для моего приложения перевода речи в речи в моем Github repo Отказ
Оригинал: «https://dev.to/nokiabelllabs/implementing-a-serverless-speech-to-speech-language-translation-app-1mij»