如何可靠地拒绝PocketSphinx中的语法外单词

时间:2013-01-07 18:14:36

标签: android cmusphinx

我在Android上成功使用PocketsphinxDemo。我有一组非常有限的单词需要被识别,比如3个不同的单词。 我目前得到很多误报 - 在谈话时,Pocketsphinx会识别我的3个单词中的一个,尽管他们没有被说出来。

由于我找不到有关pocketphinx使用的参数的任何参考,这里是我的问题:

是否有参数使Pocketsphinx的反应更具限制性?

我希望它只有在Pocketsphinx非常“确定”匹配正确的单词时才会返回其识别猜测。

以下是我目前使用的默认参数:

c.setFloat("-samprate", 8000.0);
c.setInt("-maxhmmpf", 2000);
c.setInt("-maxwpf", 10);
c.setInt("-pl_window", 2);
c.setBoolean("-backtrace", true);
c.setBoolean("-bestpath", false);

1 个答案:

答案 0 :(得分:2)

现在不支持在pocketpshinx中简单地拒绝语法外单词,尽管它很快就会出现。有关更多信息,请参阅

http://cmusphinx.sourceforge.net/wiki/faq#qcan_pocketsphinx_reject_out-of-grammar_words_and_noises

您仍然可以通过电话循环模拟语法外的单词,这可能会让您有所拒绝。为此,您需要以特殊方式构造语法并在那里添加垃圾电话。有关详细信息,请参阅

http://sourceforge.net/p/cmusphinx/discussion/help/thread/1c6cb941/?limit=50#efa9

语法格式化在那里,但想法很简单,你只需在循环中添加手机:

 <result> = word1 | word2 | (phone1 | phone2 | .... | phone 39)*

对于IPhone Openears实施一个拒绝的特殊模块,它不是主要发行版的一部分:

http://www.politepix.com/rejecto/