我正在尝试编写一个程序,该程序从文件生成语音识别语法并将短语存储在字典中,其中键是短语。以下代码:
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
使用具有en-US(或Culture.TwoLetterISOLanguageName
of"en"
(文化的RecognizerInfo
。
我已经安装了MS-1033-80-DESK (en-US)
Microsoft Speech Recognizer 8.0 for Windows (English - US)
。
我只需要指定我的语法文化。这是工作代码:
sre.LoadGrammarAsync(new Grammar(
new GrammarBuilder(new Choices(commands.Keys.ToArray())) {
Culture = new System.Globalization.CultureInfo(Settings.CompatibleCultureInfo)
}
));