你好,我在MS语音识别方面遇到了麻烦.
我的代码很简单.
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: Cannot find the requested data
item, such as a data key or value.)
SetInputToDefaultAudioDevice();方法
我下载了MSSpeech sdk并安装了它(Microsoft.speech.dll).
还下载了语言包. (en-us,ko-kr)
还在控制面板中安装并启用了我的麦克风驱动程序.
请帮我.
我的操作系统是Windows 10是使用语音识别API的问题吗?
最佳答案 很可能你使用的是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上安装的默认录制设备.