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

本文关键字:语言 语音识别 不匹配 语法 错误 | 更新日期: 2023-09-27 18:30:10

我的语音识别有问题。它适用于"英语"窗口,没有问题。它也适用于一些"外国"窗口。但只有一部分。

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

我把自己的单词加到字典里。

我该怎么修?

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

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

在您的英文Windows版本上,请导航到C:''Program Files''Reference Assemblys''Microsoft''Framework[您的.NET版本]

您应该找到System.Speech.dll,

请确保将这个.dll带到您的外国计算机上,一切都应该顺利运行。

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

...
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);
...

所以这应该有效。我朋友的电脑支持两个"en"或"eng"实例。不知道为什么。所以代码选择第一个。我在互联网上发现了一些代码,其中一些是我做的。

 SpeachRecognition.SpeechRecognized += SpeachRecognition_SpeechRecognized;

被制作为在所有事物都被识别时产生事件。只是类型:

SpeechRecognition.SpeechRecognited+=

按下TAB按钮(至少在VS2013中)几次。然后在代码的底部,它会生成这样的东西:

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

我希望这会有所帮助