Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aprenda a lidar com problemas de qualidade de entrada de áudio durante o reconhecimento de voz na sua aplicação SDK de Aplicações Windows.
Importante
O reconhecimento de voz requer a identidade do pacote MSIX. As APIs Windows.Media.SpeechRecognition estão disponíveis apenas quando a sua aplicação é executada com identidade de pacote (empacotada ou empacotada com localização externa). As aplicações não embaladas não podem usar estas APIs.
APIs principais
Descrição geral
A qualidade da entrada de áudio pode afetar a precisão do reconhecimento de voz. Ruído de fundo, microfones abafados e baixo volume são causas comuns de falha de reconhecimento. Trate o evento RecognitionQualityDegrading para que o utilizador saiba quando a qualidade do áudio pode impedir um reconhecimento preciso.
Lidar com a degradação da qualidade
O evento RecognitionQualityDegrading é acionado quando problemas de áudio podem interferir no reconhecimento de voz. Use a SpeechRecognitionQualityDegradingEventArgs.Problem propriedade para determinar o problema específico.
Uma vez que este evento é acionado numa thread em segundo plano, use DispatcherQueue.TryEnqueue para atualizar a interface do utilizador:
private void SpeechRecognizer_RecognitionQualityDegrading(
SpeechRecognizer sender,
SpeechRecognitionQualityDegradingEventArgs args)
{
dispatcherQueue.TryEnqueue(() =>
{
// Show a message or indicator to the user.
// args.Problem identifies the specific audio quality issue.
switch (args.Problem)
{
case SpeechRecognitionAudioProblem.TooFast:
statusTextBlock.Text = "Try speaking more slowly.";
break;
case SpeechRecognitionAudioProblem.TooSlow:
statusTextBlock.Text = "Try speaking a bit faster.";
break;
case SpeechRecognitionAudioProblem.TooQuiet:
statusTextBlock.Text = "Try speaking louder or move closer to the microphone.";
break;
case SpeechRecognitionAudioProblem.TooLoud:
statusTextBlock.Text = "Try speaking more quietly or move farther from the microphone.";
break;
case SpeechRecognitionAudioProblem.TooNoisy:
statusTextBlock.Text = "Background noise is interfering with recognition. Try a quieter environment.";
break;
case SpeechRecognitionAudioProblem.None:
default:
statusTextBlock.Text = "";
break;
}
});
}
Para usar este handler, subscreva o evento após criar o seu recognizer:
speechRecognizer.RecognitionQualityDegrading += SpeechRecognizer_RecognitionQualityDegrading;
Considerações sobre o tópico da interface
No WinUI 3, use DispatcherQueue em vez de CoreDispatcher para encaminhar chamadas para a thread da IU. Obtenha uma referência para o DispatcherQueue da thread atual no construtor da sua página ou na lógica de inicialização:
private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue =
Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
Depois, usa dispatcherQueue.TryEnqueue(...) nos teus processadores de eventos para atualizar com segurança os elementos da interface do utilizador.
Artigos relacionados
Windows developer