- PVSM.RU - https://www.pvsm.ru -

Делаем свой Skype с переводом речи в реальном времени, только лучше

Делаем свой Skype с переводом речи в реальном времени, только лучше - 1Не так давно Skype анонсировал реал-тайм перевод во время видеообщения с собеседником. Эта тема уже давно не дает покоя человечеству: многие помнят фильм «Автостопом по галактике» и Babel fish. Мы решили разобраться, как сделать это существо на Voximplant. Описание и демка – под катом.

Описание сервиса

Начнем с того, что нужно определиться с функциональностью. Идея сервиса достаточно простая: есть некий URL, пройдя по которому юзер создает комнату, куда может пригласить собеседника. Как только собеседник подключается к комнате, между юзером и его собеседником устанавливается видеосессия и можно начинать общаться. Если необходимо активировать перевод в реальном времени, то нажатием на специальную кнопку вызывается диалог, в нем выбираются языки (с какого и на какой будет осуществляться перевод) после чего можно активировать функцию. Опционально можно заглушить оригинальный звук и заставить систему озвучивать переведенные фразы с помощью text-to-speech.

Реализация сервиса

Как вы, наверное, догадались для реализации данного сервиса нам потребуется распознавание речи, стримминг и переводчик с API. К нашей платформе уже подключено распознавание речи от Google, которое поддерживает около 80 языков, стримминг из браузера в сторону платформы осуществляется с помощью Web SDK (которое, в свою очередь, использует WebRTC/ORTC), а перевод мы будем делать с помощью Google Translate API. Схема решения будет выглядеть как-то так:

Делаем свой Skype с переводом речи в реальном времени, только лучше - 2

На стороне облака Voximplant у нас работает JavaScript-сценарий (точнее несколько сценариев), которые будут отвечать за логику работы сервиса, включая взаимодействие с Google Translate API по HTTP (интеграция со Speech API уже встроена в платформу и обеспечивается с помощью модуля ASR [1]).

Сценарии VoxEngine и клиентское приложение

Клиентское приложение мы собрали на базе React, TypeScript и Voximplant WebSDK. Кода получилось многовато, поэтому смысла про него тут рассказывать нет. Приведем лишь небольшие выдержки, которые связаны со сценарием, крутящимся в облаке. Логика клиента следующая:
1. Авторизация – мы на лету создаем юзера через HTTP API [2] и потом логинимся через SDK [3].
2. Генерим код комнаты (он же код конференции на стороне Voximplant).
3. После авторизации звоним в конференцию [4] (звонок на сервер).
4. Конфа рассылает клиентам список подключенных юзеров, используя механизм отправки сообщений [5] внутри звонка.
5. Делаем P2P-звонок между двумя участниками (по аналогии с этим туториалом [6]).
Подробнее про распознавание речи можно почитать в одной из предыдущих наших статей [7].

Делаем свой Skype с переводом речи в реальном времени, только лучше - 3

Делаем свой Skype с переводом речи в реальном времени, только лучше - 4

Озвучка результата перевода

Если вы хотите, чтобы собеседник не слышал ваш голос, можно активировать text-to-speech — звук с микрофона в P2P-звонке с вашей стороны будет выключен, а сценарий начнет озвучивать результат перевода через серверный звонок. Синтез речи доступен более чем на 20 языках [8].

Делаем свой Skype с переводом речи в реальном времени, только лучше - 5

Делаем свой Skype с переводом речи в реальном времени, только лучше - 6

Демо

Попробовать сервис вы можете, пройдя по ссылке demos02.voximplant.com/babelfish [9].
Настоятельно рекомендуем не пробовать его на одном и том же компьютере, так как эхокомпенсация WebRTC снизит качество распознавания до плинтуса. Здесь есть, правда, один workaround — замьютить микрофон в одном из инстансов приложения (а лучше в обоих).

P.S. Работает в браузерах Chrome, Firefox, Microsoft Edge. С удовольствием ответим на любые ваши вопросы в комментариях.

Автор: Voximplant

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/250142

Ссылки в тексте:

[1] модуля ASR: http://voximplant.com/docs/references/appengine/Module_ASR.html

[2] HTTP API: http://voximplant.com/docs/references/httpapi/#toc-adduser

[3] логинимся через SDK: http://voximplant.com/docs/references/websdk/classes/client.html#loginwithonetimekey

[4] звоним в конференцию: http://voximplant.com/blog/voximplant-audio-conferencing/

[5] механизм отправки сообщений: http://voximplant.com/docs/references/appengine/Call.html#sendMessage

[6] с этим туториалом: http://voximplant.com/blog/voximplant-p2p-video-chat/

[7] в одной из предыдущих наших статей: https://habrahabr.ru/company/Voximplant/blog/310684/

[8] более чем на 20 языках: http://voximplant.com/docs/references/appengine/Language.html

[9] demos02.voximplant.com/babelfish: https://demos02.voximplant.com/babelfish/

[10] Источник: https://habrahabr.ru/post/320828/