Exemple #1
0
 public Stream startAudioSource()
 {
     if (activeSensor != null)
     {
         return(activeSensor.startAudioSource());
     }
     else
     {
         throw new Exception("No active sensor found. Please wait for connection event.");
     }
 }
        void sensorManager_SensorConnected(KinectSensorManager sensorManager)
        {
            destroySpeechEngine();

            Console.WriteLine("{0} Found", sensorManager.Type);

            RecognizerInfo ri = GetKinectRecognizer();

            if (null != ri)
            {
                this.speechEngine = new SpeechRecognitionEngine(ri.Id);

                var choices = new Choices();

                foreach (var command in commands)
                {
                    //Ignore
                    choices.Add(new SemanticResultValue(command.Item1, "IGNORE"));
                    //Require prefix
                    speechActions.Add(command.Item1, command.Item2);
                    choices.Add(new SemanticResultValue(String.Format(prefix, command.Item1), command.Item1));
                }

                var gb = new GrammarBuilder {
                    Culture = ri.Culture
                };
                gb.Append(choices);

                var g = new Grammar(gb);

                speechEngine.LoadGrammar(g);

                speechEngine.SpeechRecognized          += speechEngine_SpeechRecognized;
                speechEngine.SpeechRecognitionRejected += speechEngine_SpeechRecognitionRejected;

                // For long recognition sessions (a few hours or more), it may be beneficial to turn off adaptation of the acoustic model.
                // This will prevent recognition accuracy from degrading over time.
                speechEngine.UpdateRecognizerSetting("AdaptationOn", 0);

                speechEngine.SetInputToAudioStream(sensorManager.startAudioSource(), new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
                speechEngine.RecognizeAsync(RecognizeMode.Multiple);
            }
            else
            {
                //No recognizer
            }

            if (SensorConnected != null)
            {
                SensorConnected.Invoke();
            }
        }