Kinect语音识别

时间:2013-03-01 12:20:23

标签: kinect speech

以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

     

附加信息:之前必须至少加载一个语法   做出表彰。

我能做什么?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的错误。 ri为null,您的计算机中未安装语言包。即使你已经安装了它们,它也找不到它们。你需要做的是卸载一切,kinect sdk,驱动程序,运行时,工具包,微软语音x64 / x86和语言包。然后按此顺序再次安装所有内容:

1ST:KINECT SDK(它附带所有其他你需要的驱动程序) 第二名:微软演讲 第3名:语言包

我正在使用kinect sdk 1.5我在4天内遇到了同样的问题,直到有人从微软告诉我这可能是一个可能的解决方案而且确实如此。

问候! 卡罗来纳州