Mittels des Kinect-SDK lassen sich relativ schnell Resultate erzielen. Hier zeige ich euch eine simple Sprachsteuerung mit der Kinect.
Voraussetzungen: Installiertes Kinect SDK (http://www.microsoft.com/en-us/kinectforwindows/)
Hier ist der Code für die Erkennung von “starten, stoppen, menü, zurück”.
private 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; } // Kinect initialisieren und verbinden KinectSensor kinect = KinectSensor.KinectSensors[0]; kinect.Start(); SpeechRecognitionEngine speechEngine; RecognizerInfo recognizerInfo = GetKinectRecognizer(); speechEngine = new SpeechRecognitionEngine(recognizerInfo.Id); // Kommandos festlegen var commands = new Choices(); commands.Add("starten"); commands.Add("stoppen"); commands.Add("menü"); commands.Add("zurück"); // etc... var grammarBuilder = new GrammarBuilder { Culture = recognizerInfo.Culture }; grammarBuilder.Append(commands); var grammar = new Grammar(grammarBuilder); speechEngine.LoadGrammar(grammar); // Event-Handler für erkannte Sprachkommandos: speechEngine.SpeechRecognized += (sender, args) => { // Erkanntes Commando: e.Result.Text }; // Ein paar Konfigurationen: kinect.AudioSource.BeamAngleMode = BeamAngleMode.Automatic; speechEngine.SetInputToAudioStream(kinect.AudioSource.Start(), new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); speechEngine.RecognizeAsync(RecognizeMode.Multiple);
0 Comments