我正在使用微软的语音识别进行编程。我举了一个例子,效果很好。但如果我打开语音识别,程序将始终在里面。我想每次发动机在识别出单词时停止。这可能。
我的代码有点像这样:
_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()
,但引擎根本无法工作并让我休息一下。
答案 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();
}