Microsoft语音识别setInputToDefaultAudioDevice抛出异常

时间:2015-10-06 04:35:15

标签: c# speech

你好,我在MS语音识别方面遇到了麻烦。

我的代码很简单。

    tableView.beginUpdates()                    

    let indexSet = NSMutableIndexSet()
    indexSet.addIndex(indexPath.section)
    tableView.deleteSections(indexSet, withRowAnimation: UITableViewRowAnimation.Fade)

    tableView.endUpdates()

然后在通话中抛出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); }

  

(System.InvalidOperationException:找不到请求的数据   项目,例如数据键或值。)

InvalidOperationException方法

我下载了MSSpeech sdk并安装了它(Microsoft.speech.dll)。 还下载了语言包。 (en-us,ko-kr)

还在控制面板中安装并启用了我的麦克风驱动程序。

请帮帮我。

我的操作系统是Windows 10,这是使用语音识别API的问题吗?

1 个答案:

答案 0 :(得分:1)

很可能您使用的是 Microsoft.Speech.Recognition ,并且您应该使用 System.Speech.Recognition

改变这个:

using Microsoft.Speech.Recognition;

到此:

using System.Speech.Recognition;

您可以保留其余代码。

瓦时?那么这里有一些答案: What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?

简而言之, Microsoft.Speech.Recognition 适用于服务器,可以使用您在呼叫中心(用于自动化等)中找到的低质量音频,这意味着它与所有音频输入都不兼容设备。

相反, System.Speech.Recognition 适用于桌面应用,它完全支持Windows上安装的默认录制设备。