2013-03-01 56 views
1

仿照例如,从Kinect的SDKKinect的语音识别

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

在Window负载

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

错误:

An unhandled exception of type 'System.InvalidOperationException' occurred in Microsoft.Speech.dll

Additional information: At least one grammar must be loaded before doing a recognition.

我可以做什么?

回答

1

我有同样的错误。 ri为空,计算机中没有安装语言包。即使你已经安装了它们,它也找不到它们。你必须做的是卸载EVERYTHING,kinect sdk,驱动程序,运行时,工具包,微软语音x64/x86和语言包。然后,按以下顺序重新安装的一切:

1ST:KINECT SDK(它与所有的休息u需要像驱动程序) 2日:微软语音 3:语言包

我使用Kinect的SDK 1.5,我有这个问题持续了4天,直到微软的某个人告诉我这可能是一个可行的解决方案。

问候! Carolina