PocketSphinx-在processRaw之后,对于KeyphraseSearch,getHypstr()返回空

时间:2018-08-20 12:57:28

标签: speech-recognition cmusphinx pocketsphinx pocketsphinx-android

尝试使用processRaw edu.cmu.sphinx.pocketsphinx 来检测关键字。

我已经直接使用getDecoder()设置了SpeechRecognizer的解码器。 setKeyphrase (KWS_SEARCH,KEYPHRASE); 首先调用解码器。 startUtt ();然后很少调用带有PCM缓冲区片的 processRaw ,然后调用解码器。 endUtt ()。我对解码器有一个空洞的假设。 hyp ();

尝试为 setKeywordThreshold 设置几个不同的值。没有运气。

  1. 缺少了什么?

  2. 据我了解,在调用 processRaw 时,最后一个参数 full_utt 在调用 endUtt 之前应该为False,对吗?

  3. full_utt 应该何时设置为True?以及它如何影响识别?

编辑: 需要提及的是,起初我尝试检测“哦,威力强大的计算机”短语,该短语正是使用SpeechRecognizer自己的 RecognizerThread 正确识别的演示短语。 但是使用 processRaw 时没有检测到。两次尝试的音频条件都相同。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

缺少什么?

您错过了tutorial recommendation

  

必须调整阈值以在错误警报和未命中之间取得平衡   检测。 最好的方法是使用预先录制的音频   文件。常见的调整过程如下:

     

长时间录制,很少出现您的关键字,   其他声音。您可以拍摄电影声音或其他声音。长度   音频的时间大约为1小时。在上运行关键字   该文件的每个关键字具有不同的阈值,请使用   以下命令:pocketsphinx_continuous -infile   -keyphrase \ -kws_threshold -time yes该命令将打印许多行,其中一些是带有   检测时间和置信度。您也可以使用禁用其他日志   -logfn your_file.log选项可避免混乱。

     

从您的关键字发现结果中可以计算出多少错误警报和   错过了您遇到的检测。选择阈值   最少的误报和漏检。为了最好   准确度最好是有3-4个音节的关键词。太   简短的短语很容易混淆。