13

我想看看是否可以使用getUserMedia最新浏览器直接访问 Opus 或类似的东西。

我一直在研究它,但没有很好的结果。

我知道webkitSpeechRecognitionAPI 中实际使用了 Opus 或 Speex。我想做语音识别,但使用我自己的服务器而不是谷歌的。

4

4 回答 4

16

所以有很多关于 Emscripten 的建议,但没有人这样做,所以我使用 Emscripten 将编码器opus-tools移植到 JavaScript。取决于一个人的想法,现在有以下机会:

于 2014-12-24T05:37:15.327 回答
4

我们使用 emscripten 使用带有 getUserMedia 的 gsm610 进行编码和解码,它运行得非常好,即使在移动设备上也是如此。如今,javascript 几乎提供了原生性能,因此 emscripten 可用于编译编解码器。唯一的问题是可能非常大的 .js 文件,因此您只想编译正在使用的部分。

于 2014-02-24T00:58:08.650 回答
3

不幸的是,目前无法直接从 JavaScript 访问浏览器编解码器进行编码。唯一的方法是利用 WebRTC 并在服务器上设置记录。我已经尝试过使用 Chromium 中的其他代码编译 libjingle 以使其在 Node.js 服务器上运行……这几乎是不可能的。

您目前唯一能做的就是将原始 PCM 数据发送到您的服务器。这会占用相当多的带宽,但您可以通过将 float32 样本转换为 16 位(如果您的语音识别可以处理,则为 8 位)将其最小化。

希望媒体记录器 API 很快就会出现,以便我们可以使用浏览器编解码器。

于 2013-12-12T17:02:51.667 回答
3

这不是一个完整的解决方案,@Brad 的答案实际上是此时的正确答案。

一种方法是将Opus 编译为 Emscripten,并希望您的 PC 可以使用 JavaScript 处理编码。另一种选择是使用speex.js

于 2013-12-15T12:55:03.457 回答