了解pocketsphinx关键字列表文件格式

时间:2018-02-22 15:22:50

标签: android speech-recognition pocketsphinx pocketsphinx-android

我正在使用西班牙语模型测试基于GitHub演示的应用程序,我希望它能够持续听取一小部分关键字并采取相应的行动,但我仍然是这个主题的业余爱好者。我现在的主要问题如下:

鉴于我当前的 setupRecognizer 方法

private void setupRecognizer(File assetsDir) throws IOException {

    recognizer = SpeechRecognizerSetup.defaultSetup()
            .setAcousticModel(new File(assetsDir, "es-ptm"))
            .setDictionary(new File(assetsDir, "es.dict"))
            .setRawLogDir(assetsDir)
            .getRecognizer();
    recognizer.addListener(this);

    File actionGrammar = new File(assetsDir, "actions.list");
    recognizer.addKeywordSearch(SEARCH, actionGrammar);

    File languageModel = new File(assetsDir, "es_model.lm");
    recognizer.addNgramSearch(SEARCH, languageModel);

    startSearch(SEARCH);
}

在相同的标识符字符串(我的代码中为“SEARCH”)下添加 addKeywordSearch addNGramSearch 会发生什么?我是在提高认可度还是让它变得更糟?

在一次绝望的尝试中,我将字典缩减为只想要识别的字词,例如:

atrás a t r a s 
listo l i s t o 
listo(2) l i s t a
listo(3) l i s t a s
listos(4) l i s t o s
repetir rr e p e t i r
repetir(2) rr e p e t i d o
repetirse(3) rr e p e t i r s e

现在它被简化为只识别这些词,但是它行为不端,识别出我没说的话。我猜PocketSphinx是基于概率的,因为我减少了字典,这些字很有可能被识别。我是对的吗?

另外,为了提高我的准确性,我做了 actions.list

listo /1.0/
atrás /1.0/
repetir /1.0/

虽然我不确定这个值是什么意思。它在文档中说使用1e-1表示较小的单词,而增加表示1e-50表示较大的单词。这是什么符号,它是什么意思?

我真的很担心让它尽可能准确,我是否走在正确的道路上?

提前致谢!

1 个答案:

答案 0 :(得分:1)

  

通过在相同的标识符字符串(" SEARCH"在我的代码中)添加addKeywordSearch和addNGramSearch会发生什么?

ngram搜索取代关键字搜索,关键字搜索是垃圾收集

  

这是什么记法

What is E in floating point?