Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aprenda a gerir problemas com a precisão do reconhecimento de voz causados pela qualidade da entrada áudio.
APIs importantes: SpeechRecognizer, RecognitionQualityDegrading, SpeechRecognitionAudioProblem
Avaliar a qualidade da entrada de áudio
Quando o reconhecimento de fala está ativo, utilize o evento RecognitionQualityDegrading do seu reconhecedor de fala para determinar se um ou mais problemas de áudio podem estar a interferir com a entrada da fala. O argumento do evento (SpeechRecognitionQualityDegradingEventArgs) fornece a propriedade Problema , que descreve os problemas detetados com a entrada de áudio.
O reconhecimento pode ser afetado por demasiado ruído de fundo, um microfone abalado e o volume ou velocidade do altifalante.
Aqui, configuramos um reconhecedor de fala e começamos a escutar o evento RecognitionQualityDegrading.
private async void WeatherSearch_Click(object sender, RoutedEventArgs e)
{
// Create an instance of SpeechRecognizer.
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
// Listen for audio input issues.
speechRecognizer.RecognitionQualityDegrading += speechRecognizer_RecognitionQualityDegrading;
// Add a web search grammar to the recognizer.
var webSearchGrammar = new Windows.Media.SpeechRecognition.SpeechRecognitionTopicConstraint(Windows.Media.SpeechRecognition.SpeechRecognitionScenario.WebSearch, "webSearch");
speechRecognizer.UIOptions.AudiblePrompt = "Say what you want to search for...";
speechRecognizer.UIOptions.ExampleText = "Ex. 'weather for London'";
speechRecognizer.Constraints.Add(webSearchGrammar);
// Compile the constraint.
await speechRecognizer.CompileConstraintsAsync();
// Start recognition.
Windows.Media.SpeechRecognition.SpeechRecognitionResult speechRecognitionResult = await speechRecognizer.RecognizeWithUIAsync();
//await speechRecognizer.RecognizeWithUIAsync();
// Do something with the recognition result.
var messageDialog = new Windows.UI.Popups.MessageDialog(speechRecognitionResult.Text, "Text spoken");
await messageDialog.ShowAsync();
}
Gerir a experiência de reconhecimento de fala
Use a descrição fornecida pela propriedade Problema para ajudar o utilizador a melhorar as condições de reconhecimento.
Aqui, criamos um manipulador para o evento RecognitionQualityDegrading, que verifica se o nível de volume está baixo. Depois usamos um objeto SpeechSynthesizer para sugerir que o utilizador tente falar mais alto.
private async void speechRecognizer_RecognitionQualityDegrading(
Windows.Media.SpeechRecognition.SpeechRecognizer sender,
Windows.Media.SpeechRecognition.SpeechRecognitionQualityDegradingEventArgs args)
{
// Create an instance of a speech synthesis engine (voice).
var speechSynthesizer =
new Windows.Media.SpeechSynthesis.SpeechSynthesizer();
// If input speech is too quiet, prompt the user to speak louder.
if (args.Problem == Windows.Media.SpeechRecognition.SpeechRecognitionAudioProblem.TooQuiet)
{
// Generate the audio stream from plain text.
Windows.Media.SpeechSynthesis.SpeechSynthesisStream stream;
try
{
stream = await speechSynthesizer.SynthesizeTextToStreamAsync("Try speaking louder");
stream.Seek(0);
}
catch (Exception)
{
stream = null;
}
// Send the stream to the MediaElement declared in XAML.
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
{
this.media.SetSource(stream, stream.ContentType);
});
}
}
Artigos relacionados
Amostras
Windows developer