0

例如,假设我想要一个在屏幕中心单击鼠标的命令“中心”。简单的例子,但我对它的语法方面更感兴趣。

如果我只想匹配“中心”怎么办?

因此,如果我暂停,说“中心”,然后暂停它是匹配的。

但是,如果我说“我在房间的中央”,我就找不到匹配项。

以下代码似乎与“中心”一词相匹配,无论它是在短语的哪个部分说的:

            Choices center = new Choices( new string[] { "center" } );
            SemanticResultKey centerKeys = new SemanticResultKey( "center", center );

            GrammarBuilder centerGrammarBuilder = new GrammarBuilder();
            centerGrammarBuilder.Append( centerKeys );

           speechRecognitionEngine.UnloadAllGrammars();

           speechRecognitionEngine.LoadGrammar(new Grammar(centerGrammarBuilder));
4

1 回答 1

0

语音引擎通常做得不错,确保它们不能识别句子中间的语法词。但并非总是如此,如果您发现引擎识别句子中的术语的边缘情况之一,我可以推荐两件事来提供帮助。

  • 将垃圾规则添加到您的语法中,然后忽略任何包含垃圾规则的识别事件。通常,不建议这样做(但可以工作),因为人们很少使用垃圾规则权衡是在模型构建期间进行的,并且性能会受到影响。此外,您可能会注意到它在某些语言模型中效果更好,而不是在其他语言模型中。同样,这是模型构建和调整的结果。(在 grxml 中,它看起来像这样 < ruleref special="GARBAGE"/>) http://msdn.microsoft.com/en-us/library/system.speech.recognition.srgsgrammar.srgsruleref.garbage(v=VS .85).aspx
  • 检查并调整结果单词的置信度。即使它识别出中间句子,您对该短语的置信度得分也会低得多。不幸的是,这种调音有时需要大量的音频才能正确。
于 2013-05-06T04:04:32.313 回答