【问题标题】:Understanding pocketsphinx keyword list file format了解pocketsphinx关键字列表文件格式
【发布时间】:2018-02-22 15:22:49
【问题描述】:

我正在使用西班牙语模型测试基于 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);
}

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

在绝望的尝试中,我将字典缩减为只有我想被识别的单词,例如:

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 表示较大的单词。这是什么符号,是什么意思?

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

提前致谢!

【问题讨论】:

    标签: android speech-recognition pocketsphinx pocketsphinx-android


    【解决方案1】:

    在同一个标​​识符字符串(我的代码中的“SEARCH”)下同时添加 addKeywordSearch 和 addNGramSearch 会发生什么?

    ngram搜索代替关键词搜索,关键词搜索被垃圾回收

    这是什么符号

    What is E in floating point?

    【讨论】:

    • 嗯,好的,感谢您的澄清!阈值如何影响检测过程?拼写单词所需的时间?
    • 阈值影响结果,而不是过程或时间。不同的阈值给出不同数量的检测结果。
    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    相关资源
    最近更新 更多