Exemplo n.º 1
0
        private void SpeechRecognized(object sender, ASR.Events.AnswerSelectedEventArgs e)
        {
            var dbHandler = new DbDataHandler();
            var result    = dbHandler.Handle(engine.AnswersCopy, new KeyValuePair <string, string>(e.FieldName, e.SelectedAnswer));

            if (result.Success)
            {
                foreach (var newValue in result.ValuesToAdd)
                {
                    engine.AddAnswer(newValue.Key, newValue.Value);
                }
                SetNewQuestion(e);
                currentVarrialbes.Varriables.Items.Clear();
                var answers = engine.AnswersCopy.ToArray();
                foreach (var field in answers)
                {
                    currentVarrialbes.Varriables.Items.Add(new { Name = field.Key, Value = field.Value });
                }
                CollectionViewSource.GetDefaultView(currentVarrialbes.Varriables.Items).Refresh();
            }
            else
            {
                SpeechNotRecognized(this, new EventArgs());
            }
        }
Exemplo n.º 2
0
 public Window1()
 {
     InitializeComponent();
     dbDataHandler       = new DbDataHandler(new WordDbContexts());
     WordBox1.IsReadOnly = true;
     word = dbDataHandler.SearchWord();
     WordBox1.AppendText(word.HungarianWord);
 }
Exemplo n.º 3
0
        private Task SetNewQuestion(ASR.Events.AnswerSelectedEventArgs previousAnswer = null)
        {
            return(Task.Run(() =>
            {
                if (previousAnswer != null)
                {
                    var info = engine.AddAnswer(previousAnswer.FieldName, previousAnswer.SelectedAnswer);
                    tts.Speak(string.Join(".", info));
                }
                if (!engine.IsDialogFinished)
                {
                    var dbValuesRequired = new List <string>();
                    var dbHandler = new DbDataHandler();
                    var dialog = engine.GetQuestion(out dbValuesRequired);
                    if (!string.IsNullOrEmpty(dialog.OtherText))
                    {
                        tts.Speak(dialog.OtherText);
                    }
                    foreach (var value in dbValuesRequired)
                    {
                        engine.AddAnswer(value, dbHandler.GetVarValue(value, engine.AnswersCopy));
                    }
                    if (dbValuesRequired != null && dbValuesRequired.Any())
                    {
                        engine.ReLoadPompt(dialog.Model);
                    }

                    if (dialog.Model is null)
                    {
                        viewModel.Dialog.Question = dialog.OtherText;
                        viewModel.Dialog.Answers = new DictationAnswerViewModel();
                    }
                    else
                    {
                        viewModel.Dialog = dialog.Model;
                        StartRecognitionOfCurrentQuestion();
                        tts.Speak(viewModel.Dialog.Question);
                    }
                }
                else
                {
                    viewModel.Dialog.Question = "Goodbye";
                    viewModel.Dialog.Answers = new DictationAnswerViewModel();
                    tts.Speak("Goodbye");
                }
            })
                   .ContinueWith((t) =>
            {
                if (t.Status == TaskStatus.Faulted)
                {
                    var exception = t.Exception.Flatten();
                    Console.WriteLine("Error :" + Environment.NewLine + exception.ToString());
                    tts.Speak("Error occured, please try again");
                    StartRecognitionOfCurrentQuestion();
                }
            }, TaskScheduler.FromCurrentSynchronizationContext()));
        }