![](https://habrastorage.org/files/16c/138/003/16c138003e174004a55a0380304132ba.jpg)
Описание сервиса
Начнем с того, что нужно определиться с функциональностью. Идея сервиса достаточно простая: есть некий URL, пройдя по которому юзер создает комнату, куда может пригласить собеседника. Как только собеседник подключается к комнате, между юзером и его собеседником устанавливается видеосессия и можно начинать общаться. Если необходимо активировать перевод в реальном времени, то нажатием на специальную кнопку вызывается диалог, в нем выбираются языки (с какого и на какой будет осуществляться перевод) после чего можно активировать функцию. Опционально можно заглушить оригинальный звук и заставить систему озвучивать переведенные фразы с помощью text-to-speech.
Реализация сервиса
Как вы, наверное, догадались для реализации данного сервиса нам потребуется распознавание речи, стримминг и переводчик с API. К нашей платформе уже подключено распознавание речи от Google, которое поддерживает около 80 языков, стримминг из браузера в сторону платформы осуществляется с помощью Web SDK (которое, в свою очередь, использует WebRTC/ORTC), а перевод мы будем делать с помощью Google Translate API. Схема решения будет выглядеть как-то так:
![](https://habrastorage.org/files/ae4/9f8/34e/ae49f834eafc4e1a9679d25f7900b25c.jpg)
На стороне облака Voximplant у нас работает JavaScript-сценарий (точнее несколько сценариев), которые будут отвечать за логику работы сервиса, включая взаимодействие с Google Translate API по HTTP (интеграция со Speech API уже встроена в платформу и обеспечивается с помощью модуля ASR).
Сценарии VoxEngine и клиентское приложение
Клиентское приложение мы собрали на базе React, TypeScript и Voximplant WebSDK. Кода получилось многовато, поэтому смысла про него тут рассказывать нет. Приведем лишь небольшие выдержки, которые связаны со сценарием, крутящимся в облаке. Логика клиента следующая:
1. Авторизация – мы на лету создаем юзера через HTTP API и потом логинимся через SDK.
2. Генерим код комнаты (он же код конференции на стороне Voximplant).
3. После авторизации звоним в конференцию (звонок на сервер).
4. Конфа рассылает клиентам список подключенных юзеров, используя механизм отправки сообщений внутри звонка.
5. Делаем P2P-звонок между двумя участниками (по аналогии с этим туториалом).
Подробнее про распознавание речи можно почитать в одной из предыдущих наших статей.
![](https://habrastorage.org/files/144/135/448/1441354485a240ba867d1b942fa29b92.jpg)
![](https://habrastorage.org/files/9ce/4d2/808/9ce4d2808c0e4edf816b2740931a4dc5.jpg)
Озвучка результата перевода
Если вы хотите, чтобы собеседник не слышал ваш голос, можно активировать text-to-speech — звук с микрофона в P2P-звонке с вашей стороны будет выключен, а сценарий начнет озвучивать результат перевода через серверный звонок. Синтез речи доступен более чем на 20 языках.
![](https://habrastorage.org/files/46a/9d7/965/46a9d7965f1e460fa67d4650ba24953c.jpg)
![](https://habrastorage.org/files/2ce/c8e/6ff/2cec8e6ff2c848009f1a5e1f9edf2a88.jpg)
Демо
Попробовать сервис вы можете, пройдя по ссылке demos02.voximplant.com/babelfish.
Настоятельно рекомендуем не пробовать его на одном и том же компьютере, так как эхокомпенсация WebRTC снизит качество распознавания до плинтуса. Здесь есть, правда, один workaround — замьютить микрофон в одном из инстансов приложения (а лучше в обоих).
P.S. Работает в браузерах Chrome, Firefox, Microsoft Edge. С удовольствием ответим на любые ваши вопросы в комментариях.
Поделиться с друзьями
Комментарии (8)
Kaktusgarden
20.03.2017 14:22+1Отлично работает. Но действительно есть проблема с Establishing connection…
Попробовал на Chrome + Windows 7 и Samsung S7 + Chrome
nehrung
21.03.2017 08:40Ну а Скайп-то тут причём? Совсем другой принцип, совсем другой функционал…
И соответственно совсем другой круг пользователей.
dmitryredkin
FF52, Win7, Socks5 proxy.
Establishing connection…