语音识别引擎无法正常工作

时间:2012-03-11 16:16:58

标签: c# speech-recognition

我正在编写一个应用程序,它应该监听用户命令并将键击发送到另一个程序。我正在使用语音识别引擎类,但我的脚本无法正常工作。

如果我使用自定义语法(只有很少的单词,如“开始”或“退出”),程序将始终识别我的一个单词,即使我说的完全不同。 对于istance,我说“stackoverflow”,程序识别“开始”。

使用默认字典,程序几乎不可能使用(我必须100%正确,否则它将无法理解)。

奇怪的是,如果我使用语音识别器而不是语音识别引擎,我的程序工作得很完美,但每当我说一些不相关的东西时它就会混乱,因为Windows语音识别会处理结果,我不希望这种情况发生。这就是我实际使用语音识别引擎的原因。

我做错了什么?

Choices c = new Choices(new string[] { "use", "menu", "map", "save", "talk", "esc" });
GrammarBuilder gb = new GrammarBuilder(c);
Grammar g = new Grammar(gb);
sr = new SpeechRecognitionEngine();
sr.LoadGrammar(g);
sr.SetInputToDefaultAudioDevice();
sr.SpeechRecognized += sr_SpeechRecognized;

几乎忘了,我不知道这是否相关,但我使用的是Visual Studio 11 Ultimate Beta。

1 个答案:

答案 0 :(得分:4)

对于检测到的每个语音识别结果,您也会获得识别的置信度 - 低置信度表示引擎对结果“不太确定”,您可能想要拒绝它,例如:

private void SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    if (e.Result.Confidence >= 0.7)
    {
       //high enough confidence, use result
    }
    else
    {
      //reject result
    }
}