尝试使用processRaw edu.cmu.sphinx.pocketsphinx 来检测关键字。
我已经直接使用getDecoder()设置了SpeechRecognizer的解码器。 setKeyphrase (KWS_SEARCH,KEYPHRASE); 首先调用解码器。 startUtt ();然后很少调用带有PCM缓冲区片的 processRaw ,然后调用解码器。 endUtt ()。我对解码器有一个空洞的假设。 hyp ();
尝试为 setKeywordThreshold 设置几个不同的值。没有运气。
缺少了什么?
据我了解,在调用 processRaw 时,最后一个参数 full_utt 在调用 endUtt 之前应该为False,对吗?
full_utt 应该何时设置为True?以及它如何影响识别?
编辑: 需要提及的是,起初我尝试检测“哦,威力强大的计算机”短语,该短语正是使用SpeechRecognizer自己的 RecognizerThread 正确识别的演示短语。 但是使用 processRaw 时没有检测到。两次尝试的音频条件都相同。
谢谢。
答案 0 :(得分:0)
缺少什么?
必须调整阈值以在错误警报和未命中之间取得平衡 检测。 最好的方法是使用预先录制的音频 文件。常见的调整过程如下:
长时间录制,很少出现您的关键字, 其他声音。您可以拍摄电影声音或其他声音。长度 音频的时间大约为1小时。在上运行关键字 该文件的每个关键字具有不同的阈值,请使用 以下命令:pocketsphinx_continuous -infile -keyphrase \ -kws_threshold -time yes该命令将打印许多行,其中一些是带有 检测时间和置信度。您也可以使用禁用其他日志 -logfn your_file.log选项可避免混乱。
从您的关键字发现结果中可以计算出多少错误警报和 错过了您遇到的检测。选择阈值 最少的误报和漏检。为了最好 准确度最好是有3-4个音节的关键词。太 简短的短语很容易混淆。