我已经设法最终构建并运行pocketsphinx(pocketsphinx_continuous)。我遇到的问题是如何提高准确性。据我所知,您可以指定字典文件(-dict test.dic)。所以我采用了默认的字典文件并添加了一些相同单词的发音,例如:
pencil P EH N S AH L
pencil(2) P EH N S IH L
spaghetti S P AH G EH T IY
spaghetti(2) S P UH G EH T IY
然而,pocketphinx仍然无法识别任何一个词。我知道你也可以指定一个jsgf文件,但对于短语和语法来说似乎更多。如何让pocketphinx识别铅笔和意大利面等常用词?
感谢
-Mike
答案 0 :(得分:9)
有了这样的话,你无法确定,但我可以提出以下建议:
也许语言模型以某种方式对“意大利面”和“铅笔”的概率较低。正如你所建议的那样,你可以使用JSGF来测试它如何用于识别,如果它不使用N-gram模型,而是做一个简单的语法(给它像20个单词,包括意大利面条和铅笔)。通过这种方式,您可以看到它是否是一种语言模型,使得识别这些单词变得困难,如果它认为所有单词具有相同的概率,它就可以。
也许您只是简单地发音这些单词,即使使用替代字典条目也是如此。尝试A.测试其他人的声音,或B.使声学模型适应你的声音(见http://cmusphinx.sourceforge.net/wiki/tutorialam)
此外,它是什么让它们认识到失败的时候?如果可能,请从字典中删除它误识别的字词。
同样,对于整体准确性,只有三件事能真正帮助你:限制语法,调整声学模型,并可能获得更高质量的录音输入。
答案 1 :(得分:7)
为了提高准确度,您可能需要尝试根据您的声音调整声学模型。 http://cmusphinx.sourceforge.net/wiki/tutorialadapt
要了解如何添加新词:http://ghatage.com/tech/2012/12/13/Make-Pocketsphinx-recognize-new-words/
答案 2 :(得分:2)
确保在单词之后和发音开始之前放置一个标签(不是空格)。
答案 3 :(得分:2)
可能是Pocketsphinx的问题。我也没有用Pocketsphinx取得好成绩。但是我对Sphinx4的准确度非常高(对于带有降噪麦克风的美国扬声器。)因此,我使用相同的录音进行了比较。对于pocketsphinx,我使用pocketsphinx_batch与WSJ音频模型和一个小词汇量语言模型和字典(使用CMU剑桥语言建模工具包在线创建。)对于Sphinx4,我使用Sphinx4库编写了一个小型Java程序。结果是Sphinx4更准确。所有血腥细节都在http://www.jaivox.com/pocketsphinx.html。
答案 4 :(得分:1)
要使用Pocketshinx达到良好的精度,请执行以下操作:
您可以搜索Jasper project on GitLab,以了解其实现方式。 或者,您可以使用documentation
答案 5 :(得分:0)
这是在CMUSphinx网站上
“有多种电话机代表电话,例如IPA或SAMPA。CMUSphinx尚未要求您使用任何知名的电话机,而且,它更喜欢使用不带特殊符号的纯字母电话名。此要求简化了某些处理算法,例如,您可以使用电话名作为文件名的一部分来创建文件,而不会违反操作系统的文件名要求。
词典应包含您感兴趣的所有单词,否则识别器将无法识别它们。但是,在词典中包含单词是不够的。识别器在字典和语言模型中都寻找单词。没有语言模型,即使单词存在于词典中也不会被识别。” https://cmusphinx.github.io/wiki/tutorialdict/