我想看看是否可以使用getUserMedia
或与最新浏览器类似的方式直接访问Opus。
我一直在研究它,但没有很好的结果。
我知道Opus或Speex实际上都在webkitSpeechRecognition
API中使用。我想做语音识别但是使用我自己的服务器而不是谷歌。
答案 0 :(得分:14)
因此有很多关于Emscripten的建议,但没有人这样做,所以我使用Emscripten将编码器opus-tools移植到JavaScript。根据人们的想法,现在有以下机会:
getUserMedia
stream MediaRecorder
,它还允许在支持的平台上将任意声音文件转换为Opus格式以及AudioContext.decodeAudioData()
答案 1 :(得分:4)
我们使用emscripten进行编码和解码,使用带有getUserMedia的gsm610,即使在移动设备上也能很好地工作。这些天javascript几乎提供了本机性能,因此emscripten可用于编译编解码器。唯一的问题是可能非常大的.js文件,所以你只想编译你正在使用的部分。
答案 2 :(得分:3)
不幸的是,目前无法直接从JavaScript访问浏览器编解码器进行编码。唯一的方法是利用WebRTC并在服务器上设置录制。我试过通过编译libjingle与Chromium中的其他代码来使它在Node.js服务器上运行...这几乎是不可能的。
您目前唯一能做的就是将原始PCM数据发送到您的服务器。这会占用相当多的带宽,但您可以通过将float32样本转换为16位(如果您的语音识别可以处理它而将8位)转换为最小化。
希望媒体录制器API很快就会出现,以便我们可以使用浏览器编解码器。
答案 3 :(得分:3)
这不是一个完整的解决方案,@ Brad的答案实际上是正确的答案。
一种方法是编译Opus to Emscripten并希望您的PC可以使用JavaScript处理编码。另一种方法是使用speex.js。