private async void OnTranslateRecognizing(object sender, TranslationRecognitionEventArgs args)
        {
            if (args.Result.Reason == ResultReason.TranslatingSpeech)
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    // origin
                    if (!string.IsNullOrEmpty(args.Result.Text))
                    {
                        recognitionData = new RecognitionData(dictatedTextBuilder.ToString(), null);
                        UpdateTextBox(this.dictationTextBlock, recognitionData, args.Result.Text);
                    }

                    // translation
                    var firstLanguage  = this.firstTranslateLanguageCombobox.SelectedItem as SupportedLanguage;
                    var secondLanguage = this.secondTranslateLanguageCombobox.SelectedItem as SupportedLanguage;
                    var translations   = args.Result.Translations;
                    foreach (var translation in translations)
                    {
                        if (firstLanguage != null && firstLanguage.TranslationCode.Contains(translation.Key) && !string.IsNullOrEmpty(translation.Value))
                        {
                            firstTranslationRecognitionData = new RecognitionData(firstTranslatedTextBuilder.ToString(), null);
                            UpdateTextBox(this.firstTranslationTextBlock, firstTranslationRecognitionData, translation.Value);
                        }

                        if (secondLanguage != null && secondLanguage.TranslationCode.Contains(translation.Key) && !string.IsNullOrEmpty(translation.Value))
                        {
                            secondTranslationRecognitionData = new RecognitionData(secondTranslatedTextBuilder.ToString(), null);
                            UpdateTextBox(this.secondTranslationTextBlock, secondTranslationRecognitionData, translation.Value);
                        }
                    }
                });
            }
        }
 private void OnRemoveSecondTranslateLanguageClicked(object sender, RoutedEventArgs e)
 {
     this.secondTranslateLanguageCombobox.SelectedItem = null;
     this.secondTranslationTextBlock.Text = string.Empty;
     this.secondTranslatedTextBuilder.Clear();
     this.secondTranslationRecognitionData = new RecognitionData();
     UpdateTranslationView();
 }
 private async void OnRecognizing(object sender, SpeechRecognitionEventArgs args)
 {
     if (!string.IsNullOrEmpty(args.Result.Text))
     {
         await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
         {
             recognitionData = new RecognitionData(dictatedTextBuilder.ToString(), null);
             SetRecognitionData(recognitionData, args.Result.Text);
         });
     }
 }
 private async void OnRecognized(object sender, SpeechRecognitionEventArgs args)
 {
     if (!string.IsNullOrEmpty(args.Result.Text))
     {
         dictatedTextBuilder.Append(args.Result.Text + "\n");
         await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
         {
             recognitionData = new RecognitionData(dictatedTextBuilder.ToString(), this.inputLanguageCombobox.SelectedItem as SupportedLanguage);
             SetRecognitionData(recognitionData);
         });
     }
 }
        public void SetRecognitionData(RecognitionData inputData, TranslationRecognitionData outputData)
        {
            if (inputData != null)
            {
                UpdateTextBox(this.dictationTextBlock, inputData);
            }

            if (outputData?.FirstTranslationText != null)
            {
                UpdateTextBox(this.firstTranslationTextBlock, outputData.FirstTranslationText);
            }

            if (outputData?.SecondTranslationText != null)
            {
                UpdateTextBox(this.secondTranslationTextBlock, outputData.SecondTranslationText);
            }
        }
        private async void OnCanceled(object sender, SpeechRecognitionCanceledEventArgs args)
        {
            if (args.Reason == CancellationReason.Error)
            {
                stopRecognitionTaskCompletionSource?.TrySetResult(0);

                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    dictatedTextBuilder = new StringBuilder($"ErrorCode={args.ErrorCode};\nErrorDetails={args.ErrorDetails}");
                    recognitionData     = new RecognitionData(dictatedTextBuilder.ToString(), null);
                    SetRecognitionData(recognitionData);

                    ShowNotificationEventHandler?.Invoke(this, new NotificationViewModel {
                        NotificationType = NotificationType.Error
                    });
                });
            }
        }
        public void SetRecognitionData(RecognitionData recognitionData, string tempText = "")
        {
            this.dictationTextBlock.Text = recognitionData.Text;
            if (!string.IsNullOrEmpty(tempText))
            {
                var runText = new Run()
                {
                    Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 120, 215)),
                    Text       = tempText
                };
                this.dictationTextBlock.Inlines.Add(runText);
            }

            if (recognitionData.HighlightStyle)
            {
                this.dictationTextBlock.FontStyle  = Windows.UI.Text.FontStyle.Italic;
                this.dictationTextBlock.Foreground = new SolidColorBrush(Colors.Gray);
            }
        }