【问题标题】:windows 7 speech recognition only on wordwindows 7语音识别仅在word上
【发布时间】:2012-07-12 02:31:13
【问题描述】:

我正在使用 c# 和 windows 语音识别来与我的程序进行通信。唯一要识别的词是“是”,这在我的程序中运行良好唯一的问题是,由于语音识别被激活,它会输入我所说的内容有没有办法限制语音识别程序只识别一个词,在这种情况下是“是”这个词?

谢谢

【问题讨论】:

  • 发布代码,这似乎是导致此行为的可能原因。
  • 没有代码不是问题。如果语音识别开启,它会听你说什么并在有效的情况下执行这些命令。
  • 我不想打开和关闭我想说的一切。

标签: c# speech-recognition


【解决方案1】:

您是什么意思“由于语音识别被激活,它会输入我所说的内容”?您是说桌面识别器继续运行和处理命令吗?也许您应该使用 inproc 识别器而不是共享识别器(请参阅Using System.Speech.Recognition opens Windows Speech Recognition

您使用的是听写语法吗?如果您只想识别有限的一组单词或命令,请不要使用听写语法。使用 GrammarBuilder(或类似的)并创建一个简单的语法。见http://msdn.microsoft.com/en-us/library/hh361596

几年前在http://msdn.microsoft.com/en-us/magazine/cc163663.aspx 发表了一篇非常好的文章。这可能是迄今为止我找到的最好的介绍性文章。它有点过时了,但很有帮助。 (AppendResultKeyValue 方法在 beta 之后被删除。)看看他们如何构建订购披萨的语法的示例。

要记住一件事,一个单词的语法可能会显示很多误报(因为识别器会尝试匹配您语法中的某些内容)。您可能希望至少输入 Yes 和 No,这样它就可以进行比较。

【讨论】:

    【解决方案2】:

    如果您的代码类似于以下:

    SpeechRecognitionEngine recognitionEngine = new SpeechRecognitionEngine();
    recognitionEngine.SetInputToDefaultAudioDevice();
    recognitionEngine.SpeechRecognized += (s, args) =>
    {
        foreach (RecognizedWordUnit word in args.Result.Words)
        {
            Console.WriteLine(word.Text);
        }
    };
    recognitionEngine.LoadGrammar(new DictationGrammar());
    

    只需使用 if 语句:

    foreach (RecognizedWordUnit word in args.Result.Words)
    {
        if (word.Text == "yes")
            Console.WriteLine(word.Text);
    }
    

    请注意,recognitionEngine.SpeechRecognized 是一个事件处理程序,只要它识别一个单词就会发生,并且可以以其他方式使用,例如:

    {
        recognitionEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
    }
    //this method is static because I called it from a console main method. It can be changed.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
         Console.WriteLine(e.Result.Text);
    }
    

    我的示例在控制台中,但它在 GUI 中的工作方式相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多