1

以 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);
        }

错误:

Microsoft.Speech.dll 中出现“System.InvalidOperationException”类型的未处理异常

附加信息:在进行识别之前,必须至少加载一种语法。

我能做什么?

4

1 回答 1

1

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

第 1:KINECT SDK(它附带您需要的所有其他东西,如驱动程序) 第 2:Microsoft Speech 第 3:语言包

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

问候!卡罗来纳

于 2013-05-07T19:58:28.290 回答