private async Task AskForColor() { try { SpeechRecognizerUI speechRecognizerUi = new SpeechRecognizerUI(); SpeechRecognizer speechRecognizer = speechRecognizerUi.Recognizer; speechRecognizer.AudioCaptureStateChanged += speechRecognizer_AudioCaptureStateChanged; speechRecognizer.Grammars.AddGrammarFromList("colorList", _colorNames); PromptTextBlock.Text = "Which color?"; ExampleTextBlock.Text = "'Red', 'Blue', 'Green', 'Yellow', 'Purple', 'Orange', 'Black', 'White'"; _speechSynthesizer.SpeakTextAsync("Which color?"); SpeechRecognitionResult result = await speechRecognizer.RecognizeAsync(); if (result.TextConfidence < SpeechRecognitionConfidence.Medium) { FillUi(result); Dispatcher.BeginInvoke(() => PromptTextBlock.Text = "Recognition Confidence too low."); _speechSynthesizer.SpeakTextAsync("Recognition Confidence too low. Please try again."); await AskForColor(); } else { SetColorFromCommand(result.Text); PromptTextBlock.Text = "Color set to " + result.Text; FillUi(result); _speechSynthesizer.SpeakTextAsync("Color set to " + result.Text); } } catch (Exception ex) { MessageBox.Show(ex.Message); //throw; } }
void speechRecognizer_AudioCaptureStateChanged(SpeechRecognizer sender, SpeechRecognizerAudioCaptureStateChangedEventArgs e) { Dispatcher.BeginInvoke(() => CaptureStatusTextBlock.Text = e.State.ToString()); }