Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni su come gestire i problemi di qualità dell'input audio durante il riconoscimento vocale nell'app SDK per app di Windows.
Importante
Il riconoscimento vocale richiede l'identità del pacchetto MSIX. Le Windows.Media.SpeechRecognition API sono disponibili solo quando l'app viene eseguita con l'identità del pacchetto (in pacchetto o in pacchetto con posizione esterna). Le app non in pacchetto non possono usare queste API.
API chiave
Overview
La qualità dell'input audio può influire sull'accuratezza del riconoscimento vocale. Il rumore di fondo, i microfoni muffati e il volume basso sono cause comuni di errori di riconoscimento. Gestisci l'evento RecognitionQualityDegrading per consentire all'utente di sapere quando la qualità audio può impedire un riconoscimento preciso.
Gestire la riduzione della qualità
L'evento RecognitionQualityDegrading viene generato quando i problemi audio possono interferire con il riconoscimento vocale. Utilizzare la SpeechRecognitionQualityDegradingEventArgs.Problem proprietà per determinare il problema specifico.
Poiché questo evento viene generato in un thread in background, usare DispatcherQueue.TryEnqueue per aggiornare l'interfaccia utente:
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;
}
});
}
Per usare questo gestore, iscriviti all'evento dopo aver creato il riconoscitore:
speechRecognizer.RecognitionQualityDegrading += SpeechRecognizer_RecognitionQualityDegrading;
Considerazioni sul thread dell'interfaccia utente
In WinUI 3, usare DispatcherQueue invece di CoreDispatcher per eseguire il marshalling delle chiamate al thread dell'interfaccia utente. Ottieni un riferimento a DispatcherQueue per il thread corrente nel costruttore della pagina o nella logica di inizializzazione:
private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue =
Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
dispatcherQueue.TryEnqueue(...) Usare quindi nei gestori eventi per aggiornare in modo sicuro gli elementi dell'interfaccia utente.