CMU Sphinx4 - 自定义语言模型

时间:2015-10-08 21:44:15

标签: cmusphinx sphinx4 language-model

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

所以我的问题有三个方面:

  1. 在我的情况下,Sphinx4能否真正识别出具有高精度的字母数字序列?
  2. 如果是的话,任何人都可以指向一个具体的示例/参考页面,其中有人从头开始在Sphinx4中构建自定义语言支持。我还没有找到详细的逐步文档。有没有人在基于字母数字序列的词典或语言模型上工作?
  3. 如何为此场景构建声学模型?

1 个答案:

答案 0 :(得分: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代码中的一些知识。