以Kinect SDK的示例为模型
private static RecognizerInfo GetKinectRecognizer()
{
foreach (RecognizerInfo recognizer in SpeechRecognitionEngine.InstalledRecognizers())
{
string value;
recognizer.AdditionalInfo.TryGetValue("Kinect", out value);
if ("True".Equals(value, StringComparison.OrdinalIgnoreCase) && "en-US".Equals(recognizer.Culture.Name, StringComparison.OrdinalIgnoreCase))
{
return recognizer;
}
}
return null;
}
在窗口加载
RecognizerInfo ri = GetKinectRecognizer();
if (null != ri)
{
this.speechEngine = new SpeechRecognitionEngine(ri.Id);
var directions = new Choices();
directions.Add(new SemanticResultValue("forward", "FORWARD"));
directions.Add(new SemanticResultValue("backward", "BACKWARD"));
directions.Add(new SemanticResultValue("turn left", "LEFT"));
directions.Add(new SemanticResultValue("turn right", "RIGHT"));
var gb = new GrammarBuilder { Culture = ri.Culture };
gb.Append(directions);
var g = new Grammar(gb);
speechEngine.SpeechRecognized += SpeechRecognized;
speechEngine.SpeechRecognitionRejected += SpeechRejected;
speechEngine.SetInputToAudioStream(
kinect.AudioSource.Start(), new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
speechEngine.RecognizeAsync(RecognizeMode.Multiple);
}
错误:
类型'System.InvalidOperationException'的未处理异常 发生在Microsoft.Speech.dll
附加信息:之前必须至少加载一个语法 做出表彰。
我能做什么?
答案 0 :(得分:1)
我遇到了同样的错误。 ri为null,您的计算机中未安装语言包。即使你已经安装了它们,它也找不到它们。你需要做的是卸载一切,kinect sdk,驱动程序,运行时,工具包,微软语音x64 / x86和语言包。然后按此顺序再次安装所有内容:
1ST:KINECT SDK(它附带所有其他你需要的驱动程序) 第二名:微软演讲 第3名:语言包
我正在使用kinect sdk 1.5我在4天内遇到了同样的问题,直到有人从微软告诉我这可能是一个可能的解决方案而且确实如此。
问候! 卡罗来纳州