2015-10-06 131 views
3

你好我在MS語音識別中遇到了麻煩。Microsoft語音識別setInputToDefaultAudioDevice拋出異常

我的代碼很簡單。

static void init() 
    { 
     string enUsEngine = string.Empty; 


     foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers()) 
     { 
      Console.WriteLine(ri.Culture); 
      if (ri.Culture.Name.Equals("en-US") == true) 
      { 
       enUsEngine = ri.Id; 
      } 
     } 

     SpeechRecognitionEngine recogEngine = new SpeechRecognitionEngine(enUsEngine); 

     Grammar grammar = new Grammar("grammar.xml"); 
     recogEngine.LoadGrammar(grammar); 

     recogEngine.SpeechRecognized += recogEngine_SpeechRecognized; 
     recogEngine.RecognizeCompleted += recogEngine_RecognizeCompleted; 

     recogEngine.SetInputToDefaultAudioDevice(); 

     recogEngine.RecognizeAsync(RecognizeMode.Multiple); 

    } 

,然後拋出呼叫

InvalidOperationException(System.InvalidOperationException:無法找到所請求的數據 項目,如數據鍵或值)

SetInputToDefaultAudioDevice();方法

我下載了MSSpeech sdk並安裝了它(Microsoft.speech.dll)。 也下載了語言包。 (zh-cn,ko-kr)

以及我的麥克風驅動程序已在控制面板中安裝並啓用。

請幫幫我。

我的操作系統是Windows 10是使用語音識別api的問題嗎?

+0

你整理了一下嗎? –

+0

@JakobLithner我不知道什麼是錯的,但是在這段代碼工作正常後的幾天內,它有線。我沒有改變任何東西。 – LaLaAsDev

回答

0

最有可能使用的是Microsoft.Speech.Recognition,你雷爾應該使用System.Speech.Recognition

更改此:

using Microsoft.Speech.Recognition; 

這樣:

using System.Speech.Recognition; 

您可以保留代碼的其餘部分,因爲它是。

Wh?那麼這裏有一些答案: What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?

總之Microsoft.Speech.Recognition是用於服務器和低質量的音頻就像你在呼叫中心(用於自動化等)找到,這意味着它不兼容與所有音頻輸入設備。

與此相反System.Speech.Recognition適用於桌面應用程序,它完全支持安裝在Windows上的默認錄製設備。