如何在移动应用程序的 webrtc 通信音频流上执行连续语音到文本

how to perform continuous speech to text on webrtc communication audio stream in mobile app

我正在尝试在 webrtc 纯音频通话期间向移动应用程序中的文本识别器添加连续语音。

我在移动端使用 React Native,信号部分使用 react-native-webrtc module 和自定义 Web api。我掌握了网络 api,所以如果它是唯一的解决方案,我可以在它的一侧添加该功能,但我更喜欢在客户端执行它以避免在没有时消耗带宽需要。

首先,我使用笔记本电脑浏览器研究并测试了一些想法。我的第一个想法是使用 webspeechapi 中的 SpeechRecognition 接口:https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition

我已将 the audio only webrtc demo with the audiovisualiser demonstration in one page but there, I did not find how to connect a mediaElementSourceNode (created via AudioContext.createMediaElementSource(remoteStream) at line 44 of streamvisualizer.js) 合并到 web_speech_api SpeechRecognition class。在 mozilla 文档中,音频流似乎带有 class 的构造函数,可能会调用 getUserMedia() api.

其次,在我的研究过程中,我发现了两个文本引擎的开源语音:cmusphinx and mozilla's deep-speech. The first one have a js binding 并且看起来很棒 audioRecoder 我可以用我自己的 mediaElementSourceNode 从第一次尝试。但是,如何将其嵌入到我的 React 本机应用程序中?

还有 Android 和 iOS natives webrtc 模块,我也许可以连接到 cmusphinx 平台特定绑定(iOS, Android),但我不知道 native classes 互操作性。你能帮我吗?

我还没有创建任何 "grammar" 或定义 "hot-words" 因为我不确定所涉及的技术,但如果我能够将语音识别引擎连接到我的音频流。

您需要通过在呼叫中添加 another webrtc party 或通过某些其他协议 (TCP/Websocket/etc) 将音频流式传输到 ASR 服务器。在服务器上执行识别并返回结果。

First, I have worked and tested some ideas with my laptop browser. My first idea, was to use the SpeechRecognition interface from the webspeechapi : https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition

这是实验性的,在 Firefox 中并不真正有效。在 Chrome 中,它只直接接受麦克风输入,而不是来自呼叫者和被呼叫者的双流。

The first one have a js binding and seems great with the audioRecoder that I can feed with my own mediaElementSourceNode from the first try.

您将无法运行在您的 React Native 应用程序中将此作为本地识别