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

18

我终于成功编译并运行了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

然而,PocketSphinx仍然无法识别这两个单词。我知道你可以指定一个jsgf文件,但那更多地是用于短语和语法。我该如何让PocketSphinx识别常见的单词,比如pencil和spaghetti?

谢谢

-Mike


有人吗?有人吗?................ - Mike6679
嗨,Mike,很高兴找到有人能在Android上构建和运行pocketsphinx。我想做同样的事情,但我在构建从cmusphinx.sourceforge.net下载的“PocketSphinxAndroidDemo”时遇到了问题。你能分享一下你的经验,并列出你是如何做到的步骤吗?“pocketsphinx_continuous”是什么?那是pocketsphinx的不同分支吗?谢谢! gwofu - user602410
user602410:pocketsphinx_continuous是随pocketsphinx发行版一起提供的程序。 - Jeremy Salwen
6个回答

10

对于这种情况,你无法确定,但我可以提供以下建议:

  1. 也许是语言模型对 "spaghetti" 和 "pencil" 的概率较低。正如你所建议的那样,你可以使用JSGF来测试识别效果,而不是使用N-gram模型,而是使用简单语法(包括20个单词,包括spaghetti和pencil)。这样你就可以看到是不是语言模型使得识别这些单词变得困难,如果它认为所有单词的概率相等,则可以做得很好。

  2. 也许你发音不好,即使使用替代的字典词条也是如此。尝试A.测试其他人的声音,或B.将声学模型适应你的声音(参见http://cmusphinx.sourceforge.net/wiki/tutorialam)。

  3. 此外,当它识别失败时,它将它们识别为什么? 如果可能的话,请从字典中删除其错误识别为的单词。

同样,为了提高整体准确性,只有三件事情真正能帮到你:限制语法,适应声学模型,也许是获取更高质量的录音输入。


7

学习如何添加新单词的链接显示404错误。您知道我们是否可以在其他地方找到它吗? - Edu Zamora
不想重启一个已经死掉的线程,但是这个URL似乎是:http://ghatage.com/2012/12/13/Make-Pocketsphinx-recognize-new-words/。 - OldWolf
正确的链接是 - http://www.ghatage.com/tech/2012/12/13/Make-Pocketsphinx-recognize-new-words。看起来永久链接结构已经改变了。 - rajagrawal

3

确保你在发音开始之前的单词后面放置一个制表符(而不是空格)。


2
也许问题出在Pocketsphinx上。我用Pocketsphinx的结果也不是很好。但是,当使用Sphinx4(针对美国说话者和降噪麦克风)时,我的准确率非常高。因此,我使用相同的音频记录比较了这两种工具。对于Pocketsphinx,我使用pocketsphinx_batch与WSJ音频模型以及小词汇语言模型和字典(使用CMU剑桥语言建模工具在线创建)。对于Sphinx4,我编写了一个使用Sphinx4库的小Java程序。结果是Sphinx4要更准确。所有详细信息都在http://www.jaivox.com/pocketsphinx.html

1
为了使用PocketSphinx获得较好的准确度:
  • 重要!检查您的麦克风、音频设备和文件是否支持16 kHz,因为一般模型是用16 kHz声学示例训练的。
  • 您应该创建自己的有限词典,不能使用cmusphinx-voxforge-de.dic,否则准确度会大幅下降。
  • 您应该创建自己的语言模型。

您可以搜索Jasper GitLab上的项目 以查看它是如何实现的。 此外,请查看文档


0

这是在CMUSphinx网站上的内容

“有各种不同的音素集来表示音素,例如IPA或SAMPA。CMUSphinx目前还不要求您使用任何知名的音素集,而且它更喜欢使用仅包含字母的电话名称,而不带有特殊符号。这个要求简化了一些处理算法,例如,您可以创建包含电话名称作为文件名的文件,而不违反操作系统文件名的要求。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接