Hola !!!
Después de tanto pedirlo, por fin tenemos weekly builds del nuevo SDK de Kinect V2. Ahora lo interesante es que tenemos una pila de trabajo interesante en cada release para ver lo que tenemos dentro. Asi que hoy,un pequeño review de algo que ya existe en Kinect SDK V1.8 y que necesitábamos en V2: Speech Recognition.
La base es simple y seguro que lo conoces, crear un diccionario con palabras dentro del mismo. Lo interesante es que en la l’inea 18 hacemos la asociación del audio feed de Kinect con el speech grammar que se define en la línea 5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void WindowLoaded(object sender, RoutedEventArgs e) | |
{ | |
kinectSensor = KinectSensor.GetDefault(); | |
kinectSensor.Open(); | |
var audioBeamList = kinectSensor.AudioSource.AudioBeams; | |
var audioStream = audioBeamList[0].OpenInputStream(); | |
convertStream = new KinectAudioStream(audioStream); | |
Var ri = GetKinectRecognizer(); | |
recognitionSpans = new List<Span> { forwardSpan, backSpan, rightSpan, leftSpan }; | |
speechEngine = new SpeechRecognitionEngine(ri.Id); | |
// Create a grammar definition … | |
speechEngine.SpeechRecognized += SpeechRecognized; | |
speechEngine.SpeechRecognitionRejected += SpeechRejected; | |
convertStream.SpeechActive = true; | |
speechEngine.SetInputToAudioStream( | |
convertStream, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); | |
speechEngine.RecognizeAsync(RecognizeMode.Multiple); | |
} | |
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; | |
} |
Otro punto importante es la sección para obtener el KinectRecognizer al final. A ver si cuando llego a Madrid puedo hacer una dem and video cool sobre esto 😀
And as always, the disclaimer
“This is preliminary software and/or hardware and APIs are preliminary and subject to change“
Saludos @AVE
El Bruno