【问题标题】:Microsoft Speech Recognition setInputToDefaultAudioDevice throws exceptionMicrosoft 语音识别 setInputToDefaultAudioDevice 引发异常
【发布时间】:2015-10-06 04:35:14
【问题描述】:

大家好,我在 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: 找不到请求的数据 项,例如数据键或值。)

SetInputToDefaultAudioDevice();方法

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

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

请帮帮我。

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

【问题讨论】:

  • 你解决了吗?
  • @JakobLithner 我不知道出了什么问题,但几天后这段代码可以正常工作。它是有线的。我没有改变任何东西。

标签: c# speech


【解决方案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 上的默认录音设备。

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多