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());
 }