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

Leave a Reply