2013-10-13 59 views

回答

5

.NET包含用於語音識別的程序集。 你需要添加引用到

System.Speech

而且隨着

using System.Speech.Recognition; 

下面的代碼添加命名空間會分析你的言語和文字添加到文本框:

private void startRecognition() 
    { 
     SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); //default culture 
     //SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(new CultureInfo("de-DE")); 
     //With specified culture | Could cause an CultureNotFoundException 
     Grammar dictationGrammar = new DictationGrammar(); 
     recognizer.LoadGrammar(dictationGrammar); 
     try 
     { 
      recognizer.SetInputToDefaultAudioDevice(); 
      RecognitionResult result = recognizer.Recognize(); 
      if(result != null) 
       result_textBox.Text += result.Text + "\r\n"; 
     } 
     catch (InvalidOperationException exception) 
     { 
      MessageBox.Show(exception.Message,exception.Source); 
     } 
     finally 
     { 
      recognizer.UnloadAllGrammars(); 
     }     
    } 

要改變tim的次數EOUT的認可,更改以下屬性:

recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(3); 
    recognizer.BabbleTimeout = TimeSpan.FromSeconds(2); 
    recognizer.EndSilenceTimeout = TimeSpan.FromSeconds(1); 
    recognizer.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(1.5); 

來源:

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

+0

這就像一個魅力兄弟!非常感謝! – Xeon

+0

不客氣,只是找到了一些改進。如果我們開始識別並且不會說話,結果將爲空,並且將文本結果添加到文本框將導致NullReferenceException。爲了避免這種情況:'if(result!= null)result_textBox.Text + = result.Text +「\ r \ n」;' –