Kinect语音识别资源语法参考

时间:2014-05-11 21:37:32

标签: kinect speech

我目前正在使用Microsoft Kinect SDK开发语音识别应用程序。该应用程序的目标是加载包含语法的任何(有效)XML文件,并使用它来处理语音。

该应用程序基于已有的应用程序,我非常了解其所有代码,除了一部分:

            RecognizerInfo ri = GetKinectRecognizer();
        if (ri != null)
        {
            this.spRecEng = new SpeechRecognitionEngine(ri.Id);
            using (var memoryStream = new MemoryStream(Encoding.ASCII.GetBytes(Properties.Resources.SpeechGrammar)))
            {
                var g = new Grammar(memoryStream);
                spRecEng.LoadGrammar(g);
            }
            spRecEng.SpeechRecognized += spRecEng_SpeechRecognized;
            spRecEng.SpeechRecognitionRejected += spRecEng_SpeechRecognitionRejected;

            spRecEng.SetInputToAudioStream(kinect.AudioSource.Start(), new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
            spRecEng.RecognizeAsync(RecognizeMode.Multiple);

关于" Properties.Resources.SpeechGrammar" referencem当我仔细检查应用程序属性的内容时,它具有以下功能:

  internal static string SpeechGrammar {
        get {
            return ResourceManager.GetString("SpeechGrammar", resourceCulture);
        }

这个功能背后的目的是什么?该应用程序没有包含一个Schema文件,用于验证应用程序加载的XML语法文件,从哪里获取它?

我还包括项目的源代码(它非常小),您可以在以下位置找到它:https://dl.dropboxusercontent.com/u/28555145/KinectForWindowsSpeech.rar

1 个答案:

答案 0 :(得分:1)

该项目包括一个带有语音识别语法的XML文件。这种资源可以通过项目中分配的ID访问,不需要使用常用函数来处理带文件的任务。 关于验证,该项目使用Microsoft.Speech库进行验证,例如,如果xml文件不包含根元素,您将在语法加载中获得异常。