在PocketSphinx关键字检测的语法文件中设置阈值

时间:2014-11-12 22:55:17

标签: java android pocketsphinx

我试图完成这个线程的作者所做的/解决的事情:

Recognizing multiple keywords using PocketSphinx

他说语法文件应该是这样的,以避免检测不在语法文件中的单词:

up /1e-1/
down /1e-1/
left /1e-1/
right /1e-1/
forwards /1e-1/
backwards /1e-1/

....但如果它完全是这样的话它就不起作用了。我可以这样做:

#JSGF V1.0;
grammar digits;
public <digits> =   /1e-1/ left |
                    /1e-1/ right;

但这并没有改变任何东西,/ 1.0 /也没有改变任何东西。它一直在检测左/右的假词。

将阈值放在每个单词的右侧(如作者)会导致应用崩溃。

有人可以帮我吗?

更新

我通过在函数setupRecognizer(File assetsDir)中使用addKeywordSearch解决了这个问题。在我的情况下,它仍然像在PocketSphinx-Demo addGrammarSearch中。为了完整性(就像链接问题的作者的setupRecognizer函数一样):

private void setupRecognizer(File assetsDir)
{
    File modelsDir = new File(assetsDir, "models");

    recognizer = defaultSetup().setAcousticModel(new File(modelsDir, "hmm/en-us-semi"))
                               .setDictionary(new File(modelsDir, "dict/cmu07a.dic"))
                               .setRawLogDir(assetsDir).setKeywordThreshold(1e-20f)
                               .getRecognizer();

    recognizer.addListener(this);

    File digitsGrammar = new File(modelsDir, "grammar/digits.gram");
    recognizer.addKeywordSearch(DIGITS_SEARCH, digitsGrammar);
}

如果语法文件看起来(也像作者发布的那样)完全,那么它会起作用:

up /1e-1/
down /1e-1/
left /1e-1/
right /1e-1/
forwards /1e-1/
backwards /1e-1/

0 个答案:

没有答案