c# speech-recognition uwp

C#UWP SpeechRecognizer problemas



speech-recognition (1)

Estoy desarrollando UWP y quiero usar SpeechRecognizer. Debe reaccionar solo a las palabras "Siguiente" y "Atrás". Pero a menudo, reconoce "NExt" como "Atrás". Mi código está abajo. ¿Cómo resolver esto?

var defaultLanguage = SpeechRecognizer.SystemSpeechLanguage; _speechRecognizer = new SpeechRecognizer(defaultLanguage); _coreDispatcher = CoreWindow.GetForCurrentThread().Dispatcher; var constraintList = new SpeechRecognitionListConstraint(new List<string>() { "Next", "Back" }); _speechRecognizer.Constraints.Add(constraintList); var result = await _speechRecognizer.CompileConstraintsAsync(); if (result.Status == SpeechRecognitionResultStatus.Success) { _speechRecognizer.ContinuousRecognitionSession.ResultGenerated += ContinuousRecognitionSession_ResultGenerated; _speechRecognizer.ContinuousRecognitionSession.Completed += ContinuousRecognitionSession_Completed; await _speechRecognizer.ContinuousRecognitionSession.StartAsync(); }

Aquí está ResultGeneratedEvent:

private async void ContinuousRecognitionSession_ResultGenerated(SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionResultGeneratedEventArgs args) { { await _coreDispatcher.RunAsync(CoreDispatcherPriority.High, () => { string command = args.Result.Text; Messenger.Default.Send(new VoiceReactMessage(command)); switch (command) { case "Next": SetHorizontalOffset(-ItemsPanelRoot.ActualWidth); break; case "Back": SetHorizontalOffset(ItemsPanelRoot.ActualWidth); break; } }); }


Desafortunadamente, usted ha superado las dificultades de trabajar con reconocimiento de voz y habrá momentos en que no podrá reconocer exactamente lo que ha dicho.

Una de las cosas que recomendaría es aprovechar el nivel de confianza que obtiene como parte del resultado. Usando la confianza, puede decidir si desea aceptar el resultado o intentar pedirle al usuario que repita lo que dijo.