我正在开发一个网络语音识别应用程序。我正在使用recorderJS捕获声音并将其发送到后端,在此应使用CMU Sphinx处理它。我在使用默认声学模型,语言模型和字典来查找最新版本5prealpha版本的库时遇到了精度问题,后来通过使用JSGF语法减少了可识别单词的数量,因此我使用了1.0 beta6版本。 1.0 beta6版本的麦克风识别非常准确,但是当我录制声音时,声音总是很差。我想知道如何提高准确性。我尝试将StreamSpeechRecognizer与最新版本一起使用,但结果也很差。

最佳答案

我设法获得了很好的准确性。我检查了edu.cmu.sphinx.frontend.util.Microphone类的实现,发现采样率是16000,比特率是16,通道数等于1。发现在Google chrome中采样率是44100,所以我寻找了该库的可配置版本,然后发现了Matt Diamond的RecorderJS的Chris Rudmin分支。我没有使用最新版本,因为声音是用ogg导出的,我需要用wav格式,所以我看以前的版本;我使用的是0.3版本,该版本的比特率是可配置的,并且运行良好。后来我修改了它附带的示例,以下参数提供了很好的准确性:

监听增益:0

bitDepth:16

通道数:1

recordOpus:未选中

采样率:16000

比特率:32000

这是cmu sphinx的xml配置文件中流数据源的配置。



    type="edu.cmu.sphinx.frontend.util.StreamDataSource">

    <property name="sampleRate" value="16000" />

    <property name="bitsPerSample" value="16" />

    <property name="bigEndianData" value="false" />

    <property name="signedData" value="true" />

</component>

10-04 16:17