我正在使用西班牙语模型测试一个基于 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 表示较大的单词。这是什么符号,它是什么意思?
我真的很关心让它尽可能准确,我在正确的道路上吗?
提前致谢!