1

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

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

  1. 在我的情况下,Sphinx4 可以像 emp 数字一样准确地识别字母数字序列吗?
  2. 如果是的话,任何人都可以指向一个具体的示例/参考页面,其中有人从头开始在 Sphinx4 中构建了自定义语言支持。我还没有找到详细的分步文档。有没有人研究基于字母数字序列的字典或语言模型?
  3. 如何为这种情况建立声学模型?
4

1 回答 1

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 代码的知识。

于 2015-10-08T22:42:31.277 回答