Pocketsphinx - 添加单词并提高准确性

时间:2010-12-26 20:02:18

标签: sphinx speech-recognition speech-to-text

我已经设法最终构建并运行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

6 个答案:

答案 0 :(得分:9)

有了这样的话,你无法确定,但我可以提出以下建议:

  1. 也许语言模型以某种方式对“意大利面”和“铅笔”的概率较低。正如你所建议的那样,你可以使用JSGF来测试它如何用于识别,如果它不使用N-gram模型,而是做一个简单的语法(给它像20个单词,包括意大利面条和铅笔)。通过这种方式,您可以看到它是否是一种语言模型,使得识别这些单词变得困难,如果它认为所有单词具有相同的概率,它就可以。

  2. 也许您只是简单地发音这些单词,即使使用替代字典条目也是如此。尝试A.测试其他人的声音,或B.使声学模型适应你的声音(见http://cmusphinx.sourceforge.net/wiki/tutorialam

  3. 此外,它是什么让它们认识到失败的时候?如果可能,请从字典中删除它误识别的字词。

  4. 同样,对于整体准确性,只有三件事能真正帮助你:限制语法,调整声学模型,并可能获得更高质量的录音输入。

答案 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达到良好的精度,请执行以下操作:

  • 重要!在使用此类声学示例训练通用模型时,请检查您的麦克风,音频设备,文件是否支持16 kHz的声音。
  • 您应该创建自己的有限词典,在准确性急剧下降的情况下,不能使用cmusphinx-voxforge-de.dic。
  • 您应该创建自己的语言模型。

您可以搜索Jasper project on GitLab,以了解其实现方式。 或者,您可以使用documentation

答案 5 :(得分:0)

这是在CMUSphinx网站上

“有多种电话机代表电话,例如IPA或SAMPA。CMUSphinx尚未要求您使用任何知名的电话机,而且,它更喜欢使用不带特殊符号的纯字母电话名。此要求简化了某些处理算法,例如,您可以使用电话名作为文件名的一部分来创建文件,而不会违反操作系统的文件名要求。

词典应包含您感兴趣的所有单词,否则识别器将无法识别它们。但是,在词典中包含单词是不够的。识别器在字典和语言模型中都寻找单词。没有语言模型,即使单词存在于词典中也不会被识别。” https://cmusphinx.github.io/wiki/tutorialdict/