2015-10-06 133 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上的默认录制设备。