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 识别铅笔和意大利面条等常用词?

谢谢

-麦克风

4

6 回答 6

10

有了这样的东西,你不能确定,但​​我可以提供以下建议:

  1. 也许语言模型在某种程度上具有“意大利面条”和“铅笔”的低概率。正如您所建议的,您可以使用 JSGF 来测试如果它不使用 N-gram 模型,而是使用简单的语法(给它大约 20 个单词,包括意大利面条和铅笔),它是如何进行识别的。通过这种方式,您可以查看是否是语言模型难以识别这些单词,如果它认为所有单词具有相等的概率,它就可以了。

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

  3. 此外,当它失败时,它是如何识别它们的?如果可能,从字典中删除它错误识别的单词。

同样,为了整体准确性,只有三件事会真正帮助您:限制语法、调整声学模型,以及获得更高质量的录音输入。

于 2011-05-18T04:10:43.030 回答
7

为了提高准确性,您可能需要尝试使声学模型适应您的声音。 http://cmusphinx.sourceforge.net/wiki/tutorialadapt

学习如何添加新词: http: //ghatage.com/tech/2012/12/13/Make-Pocketsphinx-recognize-new-words/

于 2012-12-25T07:39:30.227 回答
3

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

于 2012-12-15T01:58:04.543 回答
2

可能问题出在 Pocketsphinx 上。我也没有使用 Pocketsphinx 获得好的结果。但是我使用 Sphinx4 获得了非常好的准确性(对于带有降噪麦克风的美国扬声器)。因此,我使用相同的录音对两者进行了比较。对于pocketsphinx,我使用带有WSJ 音频模型的pocketsphinx_batch 和一个小型词汇语言模型和字典(使用CMU Cambridge 语言建模工具包在线创建)。对于Sphinx4,我使用Sphinx4 库编写了一个小型Java 程序。结果是 Sphinx4 更加准确。所有血腥细节都在http://www.jaivox.com/pocketsphinx.html

于 2013-01-08T02:12:54.693 回答
1

要使用 pocketshinx 获得良好的准确性:

  • 重要的!检查您的麦克风、音频设备、文件是否支持 16 kHz,同时使用 16 kHz 声学示例训练通用模型。
  • 您应该创建自己的有限字典,但不能使用 cmusphinx-voxforge-de.dic,而准确性会大大下降。
  • 您应该创建自己的语言模型。

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

于 2019-02-26T10:16:11.307 回答
0

这是在 CMUSphinx 网站上

“有各种不同的phoneset来表示电话,例如IPA或SAMPA。CMUSphinx还没有要求你使用任何知名的phoneset,而且它更喜欢使用没有特殊符号的只有字母的电话名称。这个要求简化了一些处理算法,例如,您可以创建将电话名称作为文件名一部分的文件,而不会违反操作系统文件名要求。

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

于 2019-07-04T21:35:29.997 回答