Представьте себе хирурга, который принимает видеозвонки с пациентами по всему миру без помощи переводчика. Что, если молодой стартап мог бы легко расширить свой продукт через границы и выйти на новые географические рынки, предлагая гибкую, точную, многоязычную поддержку клиентов и продажи, и все это без необходимости живого переводчика? Что происходит с вашим бизнесом, когда вы больше не связаны языком?
Сегодня принято проводить виртуальные встречи с международными командами и клиентами, говорящими на разных языках. Будь то внутренние или внешние встречи, смысл часто теряется в сложных дискуссиях, и вы можете столкнуться с языковыми барьерами, которые мешают вам быть максимально эффективными.
В этом посте вы узнаете, как использовать три полностью управляемых сервиса AWS (Amazon транскрибировать, Amazon Translateи Amazon Polly) для создания решения для преобразования речи в речь почти в режиме реального времени, которое может быстро переводить живой голосовой ввод говорящего на разговорный, точный, переведенный целевой язык, и все это без использования машинного обучения (ML).
Обзор решения
Наш транслятор состоит из трех полностью управляемых сервисов AWS ML, работающих вместе в одном скрипте Python с использованием AWS SDK для Python (Boto3) для наших частей перевода текста и преобразования текста в речь, а также SDK для асинхронной потоковой передачи для транскрипции аудиовхода.
Amazon Transcribe: потоковая передача речи в текст
Первый сервис, который вы используете в нашем стеке, — это Amazon Transcribe, полностью управляемый сервис преобразования речи в текст, который принимает входную речь и транскрибирует ее в текст. Amazon Transcribe предлагает гибкие методы приема, пакетный или потоковый, поскольку он принимает либо сохраненные аудиофайлы, либо потоковые аудиоданные. В этом посте вы используете SDK асинхронной потоковой передачи Amazon Transcribe для Python, который использует протокол потоковой передачи HTTP/2 для потоковой передачи аудио в реальном времени и получения транскрипций в реальном времени.
Когда мы впервые создали этот прототип, потоковая передача Amazon Transcribe не поддерживала автоматическое определение языка, но по состоянию на ноябрь 2021 г. это уже не так. И пакетная, и потоковая передача теперь поддерживают автоматическое определение языка для всех поддерживаемые языки. В этом посте мы покажем, как решение на основе параметров в бесшовном многоязычном дизайне без параметров возможно благодаря использованию потокового автоматического определения языка. После того как наш расшифрованный речевой сегмент будет возвращен в виде текста, вы отправляете запрос в Amazon Translate на перевод и возвращаете результаты в наш Amazon Transcribe. EventHandler
метод.
Amazon Translate: современный, полностью управляемый API перевода
Следующим в нашем стеке является Amazon Translate, служба нейронного машинного перевода, которая обеспечивает быстрый, высококачественный, доступный и настраиваемый языковой перевод. По состоянию на июнь 2022 года Amazon Translate поддерживает перевод на 75 языков, при этом постоянно вносятся новые языковые пары и вносятся улучшения. Amazon Translate использует модели глубокого обучения, размещенные в высокомасштабируемой и отказоустойчивой облачной архитектуре AWS, для быстрого предоставления точных переводов либо в режиме реального времени, либо в пакетном режиме, в зависимости от вашего варианта использования. Использовать Amazon Translate просто и не требует управления базовой архитектурой или навыков машинного обучения. Amazon Translate имеет несколько функций, таких как создание и использование пользовательская терминология для обработки сопоставления между отраслевыми терминами. Для получения дополнительной информации об ограничениях сервиса Amazon Translate см. Рекомендации и ограничения. После того как приложение получает переведенный текст на нашем целевом языке, оно отправляет переведенный текст в Amazon Polly для немедленного воспроизведения переведенного аудио.
Amazon Polly: полностью управляемый API для преобразования текста в речь
Наконец, вы отправляете переведенный текст в Amazon Polly, полностью управляемый сервис преобразования текста в речь, который может либо отправлять реалистичные аудиоклипы для немедленного потокового воспроизведения, либо группировать и сохранять их в Простой сервис хранения Amazon (Amazon S3) для последующего использования. Вы можете управлять различными аспектами речи, такими как произношение, громкость, высота тона, скорость речи и т. д., используя стандартизированные Язык разметки синтеза речи (ССМЛ).
Вы можете синтезировать речь для определенных Amazon Polly Нейронные голоса используя стиль Newscaster, чтобы они звучали как теле- или радиоведущий. Вы также можете определить, когда произносятся определенные слова или предложения в тексте, на основе метаданных, включенных в аудиопоток. Это позволяет разработчику синхронизировать графическое выделение и анимацию, например движения губ аватара, с синтезированной речью.
Вы можете изменить произношение определенных слов, таких как названия компаний, аббревиатуры, иностранные слова или неологизмы, например, «P!nk», «ROTFL» или «C'est la vie» (при произнесении на нефранцузском языке). голос), используя пользовательские лексиконы.
Обзор архитектуры
На следующей диаграмме показана архитектура нашего решения.
Рабочий процесс выглядит следующим образом:
- Аудио принимается Python SDK.
- Amazon Polly преобразует речь в текст на 39 возможных языках.
- Amazon Translate преобразует языки.
- Amazon Live Transcribe преобразует текст в речь.
- Звук выводится на динамики.
Предпосылки
Вам нужен хост-компьютер с микрофоном, динамиками и надежным подключением к Интернету. Для этого подойдет современный ноутбук, потому что для этого не требуется никакого дополнительного оборудования. Далее вам нужно настроить машину с помощью некоторых программных инструментов.
У вас должен быть установлен Python 3.7+, чтобы использовать пакет SDK для асинхронной потоковой передачи Amazon Transcribe и модуль Python с именем pyaudio
, который вы используете для управления микрофоном и динамиками устройства. Этот модуль зависит от библиотеки C, называемой portaudio.h
. Если вы столкнулись с проблемами с pyaudio
ошибки, мы предлагаем проверить вашу ОС, чтобы увидеть, есть ли у вас portaudio.h
библиотека установлена.
Для авторизации и аутентификации сервисных вызовов вы создаете Управление идентификацией и доступом AWS (IAM) сервисная роль с разрешениями на вызов необходимых сервисов AWS. Путем настройки Интерфейс командной строки AWS (AWS CLI) с этой сервисной ролью IAM вы можете запустить наш скрипт на своем компьютере без необходимости передавать ключи или пароли, поскольку библиотеки AWS написаны для использования настроенных учетных данных пользователя AWS CLI. Это удобный метод для быстрого прототипирования, который гарантирует, что наши сервисы вызываются авторизованным удостоверением. Как всегда, следуйте принципу наименьших привилегий при назначении политик IAM при создании пользователя или роли IAM.
Подводя итог, вам потребуются следующие предварительные условия:
- Компьютер ПК, Mac или Linux с микрофоном, динамиками и подключением к Интернету.
- Ассоциация
portaudio.h
C библиотека для вашей ОС (brew, apt get, wget), которая нужна для работы pyaudio - AWS CLI 2.0 с правильно авторизованным пользователем IAM, настроенным путем запуска aws configure в AWS CLI
- Python 3.7 +
- Асинхронный Python SDK Amazon Transcribe
- Следующие библиотеки Python:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
Реализуйте решение
В качестве отправной точки вы будете в значительной степени полагаться на SDK Amazon Transcribe для асинхронной потоковой передачи для Python и будете строить на основе этого конкретного SDK. После того, как вы поэкспериментировали с потоковым SDK для Python, вы добавляете потоковый микрофон ввод с помощью pyaudio
, широко используемая библиотека Python с открытым исходным кодом, используемая для управления аудиоданными. Затем вы добавляете вызовы Boto3 в Amazon Translate и Amazon Polly для наших функций перевода и преобразования текста в речь. Наконец, вы снова воспроизводите переведенную речь через динамики компьютера с помощью pyaudio
. Модуль Python concurrent
дает вам возможность запускать блокирующий код в собственном асинхронном потоке, чтобы воспроизвести возвращенную вами речь Amazon Polly плавным и неблокирующим образом.
Давайте импортируем все наши необходимые модули, расшифруем потоковые классы и создадим некоторые глобальные переменные:
Во-первых, вы используете pyaudio
чтобы получить частоту дискретизации устройства ввода, индекс устройства и количество каналов:
Если это не работает, вы также можете просмотреть и распечатать свои устройства, как показано в следующем коде, а затем использовать индекс устройства для получения информации об устройстве с помощью pyaudio
:
Ты используешь channel_count
, sample_rate
и dev_index
как параметры в микрофонном потоке. В функции обратного вызова этого потока вы используете asyncio
неблокирующий потокобезопасный обратный вызов, чтобы поместить входные байты потока микрофона в asyncio
входная очередь. Обратите внимание на объекты цикла и input_queue, созданные с помощью asyncio
и как они используются в следующем коде:
Теперь, когда функция генератора mic_stream()
вызывается, он постоянно выдает входные байты, пока во входной очереди есть входные данные микрофона.
Теперь, когда вы знаете, как получить входные байты от микрофона, давайте посмотрим, как записать выходные аудиобайты Amazon Polly в выходной поток динамика:
Теперь давайте расширим то, что вы построили в посте. Асинхронный Amazon Transcribe Streaming SDK для Python. В следующем коде вы создаете объект-исполнитель, используя ThreadPoolExecutor
подкласс с тремя рабочими с одновременной работой. Затем вы добавляете вызов Amazon Translate к окончательной возвращенной расшифровке в EventHandler и передаете переведенный текст, объект-исполнитель и наш aws_polly_tts()
функция в asyncio
петля с loop.run_in_executor()
, который запускает нашу функцию Amazon Polly (с переведенным входным текстом) асинхронно в начале следующей итерации asyncio
петля.
Наконец, у нас есть loop_me()
функция. В нем вы определяете write_chunks()
, который принимает поток Amazon Transcribe в качестве аргумента и асинхронно записывает в него фрагменты потокового ввода с микрофона. Затем вы используете MyEventHandler()
с выходным потоком транскрипции в качестве аргумента и создать объект-обработчик. Затем вы используете ожидание с asyncio.gather()
и передать write_chunks() и обработчик с помощью метода handle_events() для обработки возможного будущего этих сопрограмм. Наконец, вы собираете все циклы событий и зацикливаете loop_me()
функция с run_until_complete()
, Смотрите следующий код:
Когда предыдущий код выполняется без ошибок, вы можете говорить в микрофон и быстро слышать свой голос, переведенный на китайский язык. Функция автоматического определения языка для Amazon Transcribe и Amazon Translate переводит любой поддерживаемый язык ввода на целевой язык. Вы можете говорить в течение достаточно долгого времени, и из-за неблокирующего характера вызовов функций весь ваш речевой ввод переводится и произносится, что делает его отличным инструментом для перевода живых выступлений.
Заключение
Хотя в этом посте показано, как эти три полностью управляемых API-интерфейса AWS могут без проблем работать вместе, мы рекомендуем вам подумать о том, как вы могли бы использовать эти сервисы другими способами, чтобы обеспечить многоязычную поддержку сервисов или мультимедиа, таких как многоязычные скрытые субтитры, за небольшую часть текущей стоимости. . Медицина, бизнес и даже дипломатические отношения могут выиграть от постоянно совершенствующихся, недорогих и не требующих особого обслуживания услуг по переводу.
Для получения дополнительной информации о базе кода для подтверждения концепции для этого варианта использования ознакомьтесь с нашим Github.
Об авторах
Майкл Тран является архитектором решений в команде Envision Engineering в Amazon Web Services. Он предоставляет технические рекомендации и помогает клиентам ускорить внедрение инноваций, демонстрируя искусство возможного на AWS. Он создал несколько прототипов на основе AI/ML и IoT для наших клиентов. Вы можете связаться со мной @Mike_Trann в Твиттере.
Кэмерон Уилкс является архитектором прототипов в команде AWS Industry Accelerator. Работая в команде, он предоставил клиентам несколько прототипов на основе машинного обучения, чтобы продемонстрировать «Искусство возможного» машинного обучения на AWS. Он увлекается созданием музыки, бездорожьем и дизайном.
- AI
- ай искусство
- генератор искусств ай
- искусственный интеллект
- Amazon Polly
- Amazon транскрибировать
- Amazon Translate
- искусственный интеллект
- сертификация искусственного интеллекта
- искусственный интеллект в банковском деле
- робот с искусственным интеллектом
- роботы с искусственным интеллектом
- программное обеспечение искусственного интеллекта
- Машинное обучение AWS
- блокчейн
- конференция по блокчейну
- Coingenius
- разговорный искусственный интеллект
- криптоконференция ИИ
- дал-и
- глубокое обучение
- google ai
- обучение с помощью машины
- Платон
- Платон Ай
- Платон Интеллектуальные данные
- Платон игра
- ПлатонДанные
- платогейминг
- масштаб ай
- синтаксис
- Технические инструкции
- зефирнет