C#语音识别错误 - 语法语言与语音识别器的语言不匹配

时间:2012-04-06 16:25:39

标签: c# .net exception speech-recognition

我的语音识别问题。 它适用于“英语”窗口,没有任何问题。 它也适用于一些“外国”窗口。但只有一些。

我得到了那个例外: 语法的语言与语音识别器的语言不匹配

我在词典中添加了自己的单词。

我该如何解决?

2 个答案:

答案 0 :(得分:-1)

不确定您所使用的.net版本,但我会尝试回答。

在您的英文版Windows上,请导航至C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework [YOUR .NET VERSION]

你应该找到System.Speech.dll,

确保将此.dll带到您的外国计算机上,一切都应顺利进行。

答案 1 :(得分:-1)

我的朋友计算机上遇到了同样的问题。所以我做了这个(它只是代码的一部分,因为所有代码都很长):

...
RecognizerInfo recognizerInfo = null;

foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers())
{
   if ((ri.Culture.TwoLetterISOLanguageName.Equals("en")) && (recognizerInfo == null))
   {
      recognizerInfo = ri;
      break;
   }

}

SpeechRecognitionEngine SpeachRecognition = new SpeechRecognitionEngine(recognizerInfo);

GrammarBuilder gb = new GrammarBuilder(startLiserninFraze);
gb.Culture = recognizerInfo.Culture;
grammar = new Grammar(gb);
SpeachRecognition.RequestRecognizerUpdate();
SpeachRecognition.LoadGrammar(grammar);
SpeachRecognition.SpeechRecognized += SpeachRecognition_SpeechRecognized;
SpeachRecognition.SetInputToDefaultAudioDevice();
SpeachRecognition.RecognizeAsync(RecognizeMode.Multiple);
...

所以这应该有效。我的朋友PC支持2个“en”或“eng”实例。不知道为什么。所以代码选择第一个。我在互联网上找到了一些代码,其中一些是由我做的。

 SpeachRecognition.SpeechRecognized += SpeachRecognition_SpeechRecognized;

用于在识别所有内容时发生事件。只需输入:

SpeachRecognition.SpeechRecognized + =

并按下TAB按钮(至少在VS 2013中)几次。然后在代码的底部将生成如下内容:

void SpeachRecognition_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
   {
       //then will be some line that you need to replace with your code
   }

我希望这会有所帮助。 :)