微软语音识别编程。每当有一个单词时,我怎么能关闭语音识别引擎

时间:2014-07-25 00:28:38

标签: c# speech-recognition

我正在使用微软的语音识别进行编程。我举了一个例子,效果很好。但如果我打开语音识别,程序将始终在里面。我想每次发动机在识别出单词时停止。这可能。

我的代码有点像这样:

_trainer = new SpeechRecognitionEngine();
_trainer.LoadGrammar(new Grammar(new GrammarBuilder(word))); // load a word
_trainer.SpeechRecognized += _trainer_SpeechRecognized;
_trainer.SpeechRecognitionRejected += _trainer_SpeechRecognitionRejected;
_trainer.SetInputToDefaultAudioDevice(); // set the input to the default audio device
_trainer.RecognizeAsync(RecognizeMode.Single);

感谢您的帮助。

我试图在最后调用_trainer.Dispose(),但引擎根本无法工作并让我休息一下。

2 个答案:

答案 0 :(得分:3)

RecognizeCompleted 事件添加到 SpeechRecognitionEngine

_trainer.RecognizeCompleted += _trainer_RecognizeCompleted;

_trainer_RecognizeCompleted 添加

_trainer.RecognizeAsyncStop();

手动取消 SpeechRecognitionEngine

_trainer.RecognizeAsyncCancel();

再次启动 SpeechRecognitionEngine 再次调用识别异常

_trainer.RecognizeAsync(RecognizeMode.Single);

请参阅MSDN示例

1-) SpeechRecognitionEngine.RecognizeAsync Method (RecognizeMode) (System.Speech.Recognition) 2-) RecognizeMode Enumeration (System.Speech.Recognition)

答案 1 :(得分:0)

您必须在发生语音识别时(在捕获单词时)停止识别器

private void _trainer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
       //Do your work 
         _trainer.RecognizeAsyncStop();
    }