语音识别语法的InvalidOperationException

时间:2020-05-26 12:49:55

标签: c# speech-recognition grammar

我正在尝试编写一个程序,该程序从文件生成语音识别语法,并将短语存储在字典中,其中的关键是短语。以下代码:

sre.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices(commands.Keys.ToArray()))));

引发此异常:

System.InvalidOperationException: The language for the grammar does not match the language of the speech recognizer.
   vid System.Speech.Recognition.RecognizerBase.ThrowIfSapiErrorCode(SAPIErrorCodes errorCode)
   vid System.Speech.Recognition.RecognizerBase.LoadSapiGrammarFromCfg(SapiGrammar sapiGrammar, Grammar grammar, Uri baseUri, Boolean enabled, Single weight, Int32 priority)
   vid System.Speech.Recognition.RecognizerBase.LoadSapiGrammar(Grammar grammar, SapiGrammar sapiGrammar, Boolean enabled, Single weight, Int32 priority)
   vid System.Speech.Recognition.RecognizerBase.LoadGrammarAsyncCallback(Object grammarObject)

我不知道为什么会这样,因为所有生成的短语都是英语,并且该程序明确要求SpeechRecognitionEngine使用带有{em> en-文化的RecognizerInfo美国(或Culture.TwoLetterISOLanguageName中的"en")。

我已安装MS-1033-80-DESK (en-US) Microsoft Speech Recognizer 8.0 for Windows (English - US)

1 个答案:

答案 0 :(得分:0)

我只需要指定语法的文化。这是工作代码:

sre.LoadGrammarAsync(new Grammar(
    new GrammarBuilder(new Choices(commands.Keys.ToArray())) {
        Culture = new System.Globalization.CultureInfo(Settings.CompatibleCultureInfo)
    }
));