【问题标题】:CMU Sphinx4 - Custom Language ModelCMU Sphinx4 - 自定义语言模型
【发布时间】:2015-10-08 21:44:15
【问题描述】:

我有一个非常具体的要求。我正在开发一个应用程序,它允许用户在应用程序中说出他们的员工编号,其格式为 HN56C12345(任何字母数字字符序列)。我已经浏览了链接:http://cmusphinx.sourceforge.net/wiki/tutoriallm,但我不确定这是否适用于我的用例。

所以我的问题是三方面的:

  1. Sphinx4 能否以高精度识别字母数字序列,例如我的 emp 数字?
  2. 如果是,谁能给我指出一个具体的示例/参考页面,其中有人从头开始在 Sphinx4 中构建了自定义语言支持。我还没有找到详细的分步文档。有人研究过基于字母数字序列的字典或语言模型吗?
  3. 如何为此场景构建声学模型?

【问题讨论】:

    标签: cmusphinx sphinx4 language-model


    【解决方案1】:

    您不需要新的声学模型,而是需要自定义语法。请参阅http://cmusphinx.sourceforge.net/wiki/tutoriallm#building_a_grammarhttp://cmusphinx.sourceforge.net/doc/sphinx4/edu/cmu/sphinx/jsgf/JSGFGrammar.html 了解更多信息。如果您在语法中以空格分隔,Sphinx4 可以很好地识别字符:

    #JSGF V1.0
    grammar jsgf.emplID;
    <digit> = zero | one | two | three | four | five | six | seven | eight | nine ;
    <digit2> = <digit> <digit>   ;
    <digit4> = <digit2> <digit2> ;
    <digit5> = <digit4> <digit>  ;
    // This rule accepts IDs of a kind: hn<2 digits>c<5 digits>.
    public <id> = h n <digit2> c <digit5> ;
    

    至于准确性,有两种方法可以提高它。如果员工人数不是太多,您可以使用所有可能的员工 ID 来制作语法。如果这不是您的情况,那么拥有通用语法是您唯一的选择。尽管可以制作一个自定义记分器,该记分器将使用上下文信息来比通用算法更好地预测员工 ID。这种方式需要一些 ASR 和 CMU Sphinx 代码方面的知识。

    【讨论】:

    • 感谢亚历山大的回复。在按照您在 Sphinx4 上的说明并像您展示的那样编写我自己的语法之后,我尝试使用 maven 运行 LiveSpeechRecognizer。但是我收到了消息:字典缺少单词“H”和其他单词的音标。我究竟做错了什么?我使用了本教程 - cmusphinx.sourceforge.net/wiki/tutorialsphinx4 字典路径集:configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
    • 是的,我忘记了 CMU Sphinx 有小写字典,所以将 'H' 更改为 'h' 等等。我更新了上面的答案。
    • 我也用单词替换了数字,因为 CMU 字典没有。
    • 再次感谢。我稍后会试试这个。但是您是否也认为最小化我目前使用的通用字典大小对我们的情况有帮助?很多次我观察到,当我说 MH 时,识别器会从字典中提取“图像”这个词。经过仔细观察,我发现字典实际上被定义为同样处理该发音。我能做些什么吗?
    • 添加整个字母表的唯一方法是一个字母一个字母地构造相应的规则,例如&lt;alpha&gt; = a | b | c | d ... 。至于准确性 - 你必须分享你的录音以及代码,否则很难猜测是什么导致了问题。我建议将与这些类似的问题发布到sphinx forum
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多