Microsoft 语音识别 setInputToDefaultAudioDevice 引发异常

LaL*_*Dev 5 c# speech

大家好,我在 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 是否有问题?

Art*_*ior 1

您很可能正在使用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 上安装的默认录音设备。