为此,您不需要新的声学模型,而是需要自定义语法。请参阅http://cmusphinx.sourceforge.net/wiki/tutoriallm#building_a_grammar和http://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 代码的知识。