Как выполнить непрерывную речь к тексту на аудио-потоке webrtc в мобильном приложении - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь добавить непрерывную речь в распознаватель текста в мобильном приложении во время разговора только по звуку webrtc.

Я использую реагировать нативно на мобильной стороне, с response-модуль native-webrtc и пользовательский веб-интерфейс для сигнальной части.У меня есть рука веб-API, поэтому я могу добавить функцию на его стороне, если это единственное решение, но я предпочитаю выполнять его на стороне клиента, чтобы избежать использования полосы пропускания, если в этом нет необходимости.

Во-первых, я разработал и проверил некоторые идеи на своем ноутбуке.Моей первой идеей было использовать интерфейс SpeechRecognition из webspeechapi: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition

Я объединил демонстрацию webrtc только для аудио с демонстрацией аудиовизуализатора на одной страницено там я не нашел, как подключить mediaElementSourceNode (созданный с помощью AudioContext.createMediaElementSource(remoteStream) в строке 44 streamvisualizer.js ) к классу web_speech_api SpeechRecognition.В документации Mozilla аудиопоток, похоже, идет с конструктором класса, который может вызывать getUserMedia() api.

Во-вторых, во время моих исследований я обнаружил две речи с открытым исходным кодом для текстового движка: cmusphinx и глубокая речь Мозиллы .Первый из них имеет js привязку и выглядит замечательно с audioRecoder, который я могу кормить своим собственным mediaElementSourceNode с первой попытки.Тем не менее, как внедрить это в мое собственное приложение реакции?

Есть также модули webrtc для Android и iOS, которые я могу подключить к привязкам, специфичным для платформы cmusphinx ( iOS , Android ), но я не знаю о совместимости родных классов.Можете ли вы помочь мне с этим?

Я еще не создал ни одной "грамматики" или определил "горячие слова", потому что я не уверен в задействованных технологиях, но я могу сделать это позже, если смогуподключите механизм распознавания речи к моему аудиопотоку.

1 Ответ

1 голос
/ 09 мая 2019

Вам необходимо передать аудио на сервер ASR, добавив другую сторону webrtc к вызову или по другому протоколу (TCP / Websocket / и т. Д.). На сервере вы выполняете распознавание и отправляете результаты обратно.

Во-первых, я разработал и протестировал некоторые идеи на своем ноутбуке. Моей первой идеей было использование интерфейса SpeechRecognition из webspeechapi: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition

Это экспериментально и на самом деле не работает в Firefox. В Chrome он принимает только микрофонный вход напрямую, а не двойной поток от звонящего и вызываемого абонента.

Первый из них имеет привязку js и, кажется, отлично работает с audioRecoder, который я могу передать с помощью своего собственного mediaElementSourceNode с первой попытки.

Вы не сможете запустить это как локальное распознавание в своем собственном приложении

...