我使用的是中文Windows7,语音识别效果很好,如果我使用语法识别用Choice.But对象构造的英语句子,SpeechRecognitionEngine对象只会出现SpeechDetectedEventArgs,而不会出现LoadGrammarCompletedEventArgs或RecognizeCompletedEventArgs,而语法对象是用SrgsDocement.There对象构造的,这是我的项目片段。
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine ( System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"));
SrgsDocument srgsdoc = new SrgsDocument(./commongreetingGrammar.grxml");
recognizer.MaxAlternates = 5;
recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
recognizer.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(recognizer_SpeechDetected);
recognizer.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);
recognizer.LoadGrammar(new Grammar(srgsdoc));
recognizer.SetInputToDefaultAudioDevice();
recognizer.RecognizeAsync (RecognizeMode .Multiple);
}
catch (Exception ex)
{ Console.WriteLine(ex.Message); }
Console.ReadKey();
}
static void recognizer_SpeechDetected(object sender, SpeechDetectedEventArgs e)
{
Console.WriteLine("Detect that someone is speeching");
}
static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
{
if (e.Error == null)
Console.WriteLine("complete to load grammar ");
else
Console.WriteLine("Fail to load grammar");
}
static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
{
if (e.Result.Semantics["step"].Value.ToString() == "A1")
{
Console.WriteLine("A start to speak:{0}", e.Result.Text);
}
}还有一个名为commongreetingGrammar.grxml的文件,它构造了名为srgsdoc的SrgsDocement对象。(抱歉,添加的是.grxml文件的图像,而不是.grxml文件的纯文本)
![enter image description here][1]发布于 2013-03-10 12:08:02
恐怕我没有把我的问题讲清楚。我尝试使用SpeechRecognitionEngine类来识别英语句子,它是SAPI5.4的一部分,在一个安装了微软语音识别器8.0 .Using Windows (简体中文)的中文Windows7上,用Choice类的对象构造的语法类的对象,加载语法的SpeechRecognitionEngine类的对象可以识别一些简单的英语句子,例如,“How are you”,“yes”,“quit”。然而,使用由.grxml文件构造的SrgsDocement对象构造的语法类对象,加载语法的SpeechRecognitionEngine对象不能识别一些简单的英语句子,只能检测如下的audioinput.The代码片段。
幸运的是,我今天找到了问题的解决方案。问题是我没有安装英语语言包,并且错误地构造了语法对象,这导致SpeechRecognitionEngine对象无法识别我在CodeProject中发布的解决方案的英语sentences.The详细信息。
https://stackoverflow.com/questions/15301523
复制相似问题