Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du hanterar problem med ljudinmatningskvalitet under taligenkänning i din Windows App SDK app.
Important
Taligenkänning kräver MSIX-paketidentitet.
Windows.Media.SpeechRecognition-API:erna är endast tillgängliga när din app körs med paketidentitet (paketerad eller paketerad med extern plats). Uppackade appar kan inte använda dessa API:er.
Nyckel-API:er
Översikt
Ljudinmatningskvaliteten kan påverka taligenkänningens noggrannhet. Bakgrundsbrus, dämpade mikrofoner och låg volym är vanliga orsaker till igenkänningsfel. Hantera händelsen RecognitionQualityDegrading för att meddela användaren när ljudkvaliteten kan förhindra korrekt igenkänning.
Hantera kvalitetsförsämring
Händelsen RecognitionQualityDegrading utlöses när ljudproblem kan störa taligenkänningen. Använd egenskapen SpeechRecognitionQualityDegradingEventArgs.Problem för att fastställa det specifika problemet.
Eftersom den här händelsen utlöses i en bakgrundstråd använder du DispatcherQueue.TryEnqueue för att uppdatera användargränssnittet:
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;
}
});
}
Om du vill använda den här hanteraren prenumererar du på händelsen när du har skapat din identifierare:
speechRecognizer.RecognitionQualityDegrading += SpeechRecognizer_RecognitionQualityDegrading;
Överväganden för användargränssnittstråd
I WinUI 3 använder du DispatcherQueue i stället för CoreDispatcher att konvertera anrop till användargränssnittstråden. Hämta en referens till DispatcherQueue för den aktuella tråden i sidkonstruktorn eller initieringslogik:
private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue =
Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
Använd dispatcherQueue.TryEnqueue(...) sedan i händelsehanterarna för att på ett säkert sätt uppdatera användargränssnittselement.
Relaterade artiklar
Windows developer