c# – Microsoft语音识别setInputToDefaultAudioDevice抛出异常

你好,我在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上安装的默认录制设备.

点赞