大家好,我在 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);
}
Run Code Online (Sandbox Code Playgroud)
然后抛出InvalidOperationException调用
(System.InvalidOperationException:找不到请求的数据项,例如数据键或值。)
SetInputToDefaultAudioDevice();方法
我下载了 MSSpeech sdk 并安装了它(Microsoft.speech.dll)。还下载了语言包。(en-us、ko-kr)
我的麦克风驱动程序已安装并在控制面板中启用。
请帮我。
我的操作系统是 Windows 10,使用语音识别 api 是否有问题?
您很可能正在使用Microsoft.Speech.Recognition并且您确实应该使用System.Speech.Recognition。
改变这个:
using Microsoft.Speech.Recognition;
Run Code Online (Sandbox Code Playgroud)
对此:
using System.Speech.Recognition;
Run Code Online (Sandbox Code Playgroud)
您可以保留其余代码不变。
啥?这里有一些答案: System.Speech.Recognition 和 Microsoft.Speech.Recognition 之间有什么区别?
简而言之,Microsoft.Speech.Recognition适用于服务器,并且适用于低质量音频,就像您在呼叫中心中找到的那样(用于自动化等),这意味着它不与所有音频输入设备兼容。
相反,System.Speech.Recognition适用于桌面应用程序,它完全支持 Windows 上安装的默认录音设备。