2013-04-14 27 views
0

我正在创建一个将响应用户Commands的语音识别引擎。我已经创建了一个按钮,以便根据用户的便利启用和禁用语音识别功能。我使用了Dispose ()语音引擎的禁用讲话recoginition.here是代码如何在一个类中异步执行代码的特定部分

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     engineOn = !engineOn; 
     if (engineOn) 
     { 
      speechEngine = speech.createSpeechEngine();  //speech is a class that creates and returns a new speech engine. 
      speechEngine.AudioLevelUpdated += new EventHandler<AudioLevelUpdatedEventArgs>(speechEngine_AudioLevelUpdated); 
      // use the system's default microphone 
      speechEngine.SetInputToDefaultAudioDevice(); 
      speechEngine.LoadGrammar(new DictationGrammar()); 

      // start listening 
      speechEngine.RecognizeAsync(RecognizeMode.Multiple); 
     } 
     else 
     { 
      SpeechClass.myEngine.Dispose(); 
     } 

    } 

但语音对象的处置需要time.How做异步? 是否有任何其他方式来打开和关闭语音识别?提前致谢。

+0

你看过RecognizeAsyncStop方法吗? http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.recognizeasyncstop.aspx – sthotakura

回答

0

你只需要使用RecogniseAsync/RecogniseAsyncStop将其关闭并重新开启:

http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.aspx

或者,你可以尝试加载一个空的语法列表,从而本质上的Kinect无关听出来。除非你不想再使用(例如,当应用程序正在关闭时),否则我会避免完全放弃该对象。与处理对象(尤其是语音识别引擎)相关的主要开销,然后再次重新创建。

相关问题