Sound Command that can intercept the Active Thread
-
Good Day all i am working on a Kinect Sensor Program, but i think this question can best be answered by the WPF forum. In my Kinect Project , the User can use Kinect Gestures or Voice Commands. THe Gestures work nicely its like one is using a mouse. i have a challenge with the Voice Commands which follow a certain Process. Please note that this functionality works well when one is not using voice commands. Let me make a simple example. i have a 3 Buttons Button 1 = "System Ok " Button 2 = " View Error" Button 3 = "System Reboot" Step 1: Now the logic say , if a user enter a wrong command , the System must play a sound for Error and the button for " View Error" must Animate. Step 2: The Rule goes on and say if the User has not click the " View Error" within 5 seconds , Stop the Animation on the " View Error" Step 3: and Animate the "System Reboot" and play the Sound for "System Reboot" Now on a normal button click with a Mouse , this would work. But now i am not clicking the Button Physically, i am using Voice Commands and i have trapped the SpeechRecognized event which is defined like this
private void SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
// Speech utterance confidence below which we treat speech as if it hadn't been heard
const double ConfidenceThreshold = 0.3;// Number of degrees in a right angle. const int DegreesInRightAngle = 90; // Number of pixels turtle should move forwards or backwards each time. const int DisplacementAmount = 60; this.ClearRecognitionHighlights(); if (e.Result.Confidence >= ConfidenceThreshold) { switch (e.Result.Semantics.Value.ToString()) { case "VIEWERROR": Error\_Escaped = true; btnViewError\_Click(null, null); break; case "SYSTEMREBOOT": btnSystemReboot\_Click(null, null); break; case "SYSTEMSTATUS": SystemStatus\_Click(null, null); break; } } else { // set the status text this.Status.Content = Properties.Resources.GrammarConfidenceLow; Logger.NormalLog(
-
Good Day all i am working on a Kinect Sensor Program, but i think this question can best be answered by the WPF forum. In my Kinect Project , the User can use Kinect Gestures or Voice Commands. THe Gestures work nicely its like one is using a mouse. i have a challenge with the Voice Commands which follow a certain Process. Please note that this functionality works well when one is not using voice commands. Let me make a simple example. i have a 3 Buttons Button 1 = "System Ok " Button 2 = " View Error" Button 3 = "System Reboot" Step 1: Now the logic say , if a user enter a wrong command , the System must play a sound for Error and the button for " View Error" must Animate. Step 2: The Rule goes on and say if the User has not click the " View Error" within 5 seconds , Stop the Animation on the " View Error" Step 3: and Animate the "System Reboot" and play the Sound for "System Reboot" Now on a normal button click with a Mouse , this would work. But now i am not clicking the Button Physically, i am using Voice Commands and i have trapped the SpeechRecognized event which is defined like this
private void SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
// Speech utterance confidence below which we treat speech as if it hadn't been heard
const double ConfidenceThreshold = 0.3;// Number of degrees in a right angle. const int DegreesInRightAngle = 90; // Number of pixels turtle should move forwards or backwards each time. const int DisplacementAmount = 60; this.ClearRecognitionHighlights(); if (e.Result.Confidence >= ConfidenceThreshold) { switch (e.Result.Semantics.Value.ToString()) { case "VIEWERROR": Error\_Escaped = true; btnViewError\_Click(null, null); break; case "SYSTEMREBOOT": btnSystemReboot\_Click(null, null); break; case "SYSTEMSTATUS": SystemStatus\_Click(null, null); break; } } else { // set the status text this.Status.Content = Properties.Resources.GrammarConfidenceLow; Logger.NormalLog(
I would launch a timer from ViewError(); instead of putting it into a wait state. The speech recognition event can kill the timer if it still running; else the timer sets off whatever needs to be done after time has elapsed. (A basic "timeout" pattern).