Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Naučte se zpracovávat problémy s kvalitou zvukového vstupu během rozpoznávání řeči v aplikaci Windows App SDK.
Important
Rozpoznávání řeči vyžaduje identitu balíčku MSIX. Rozhraní API Windows.Media.SpeechRecognition jsou dostupná pouze když vaše aplikace běží s identitou balíčku (v balíčku nebo v balíčku s externím umístěním). Nevybalené aplikace nemůžou tato rozhraní API používat.
Klíčová rozhraní API
Přehled
Kvalita vstupu zvuku může ovlivnit přesnost rozpoznávání řeči. Příčinou selhání rozpoznávání jsou šum na pozadí, změklé mikrofony a nízká hlasitost.
RecognitionQualityDegrading Při zpracování události dejte uživateli vědět, kdy kvalita zvuku může zabránit přesnému rozpoznávání.
Řešení zhoršení kvality
Událost RecognitionQualityDegrading se vyvolá, když problémy se zvukem mohou narušovat rozpoznávání řeči.
SpeechRecognitionQualityDegradingEventArgs.Problem Pomocí vlastnosti určete konkrétní problém.
Vzhledem k tomu, že se tato událost aktivuje ve vlákně na pozadí, použijte DispatcherQueue.TryEnqueue k aktualizaci uživatelského rozhraní:
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;
}
});
}
Chcete-li použít tuto obslužnou funkci, zaregistrujte se k události po vytvoření rozpoznávače:
speechRecognizer.RecognitionQualityDegrading += SpeechRecognizer_RecognitionQualityDegrading;
Důležité informace o vláknech uživatelského rozhraní
Ve WinUI 3 použijte DispatcherQueue místo CoreDispatcher k předávání volání do vlákna uživatelského rozhraní. Získejte odkaz na DispatcherQueue pro aktuální vlákno v konstruktoru stránky nebo v inicializační logice:
private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue =
Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
Pak můžete v obslužných rutinách událostí použít dispatcherQueue.TryEnqueue(...), abyste mohli bezpečně aktualizovat prvky uživatelského rozhraní.
Související články
Windows developer