我正在开发一个网络语音识别应用程序。我正在使用recorderJS来捕获声音并将其发送到应该使用CMU Sphinx进行处理的后端。我使用默认声学模型,语言模型和词典发现了最新版本5prealpha的库,然后使用JSGF语法减少了识别单词的数量,因此我使用了1.0 beta6版本。使用1.0 beta6版本的麦克风识别是非常准确的,但是当我录制声音时,它总是很差。我想知道如何提高准确度。我尝试使用StreamSpeechRecognizer和最新版本,但它也给出了不好的结果。
答案 0 :(得分:1)
我设法获得了很好的准确性。我查看了edu.cmu.sphinx.frontend.util.Microphone类的实现,发现采样率为16000,比特率为16,通道数等于1.我在recorderJS和I中进一步查看发现在谷歌浏览器中,采样率是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>