Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak obsługiwać problemy z jakością danych wejściowych audio podczas rozpoznawania mowy w aplikacji Zestaw SDK do aplikacji systemu Windows.
Ważna
Rozpoznawanie mowy wymaga tożsamości pakietu MSIX. Interfejsy API Windows.Media.SpeechRecognition są dostępne tylko wtedy, gdy aplikacja działa z identyfikatorem pakietu (spakietowana lub spakietowana z lokalizacją zewnętrzną). Aplikacje rozpakowane nie mogą używać tych interfejsów API.
Kluczowe interfejsy API
Przegląd
Jakość danych wejściowych audio może mieć wpływ na dokładność rozpoznawania mowy. Szum w tle, wyciszone mikrofony i mała głośność są typowymi przyczynami awarii rozpoznawania. Obsłuż zdarzenie RecognitionQualityDegrading, aby poinformować użytkownika, gdy jakość dźwięku może uniemożliwić dokładne rozpoznanie.
Radzenie sobie z pogorszeniem jakości
Zdarzenie RecognitionQualityDegrading jest uruchamiane, gdy problemy z dźwiękiem mogą zakłócać rozpoznawanie mowy. Użyj właściwości , SpeechRecognitionQualityDegradingEventArgs.Problem aby określić konkretny problem.
Ponieważ to zdarzenie jest wywoływane w tle, użyj DispatcherQueue.TryEnqueue, aby zaktualizować interfejs użytkownika:
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;
}
});
}
Aby użyć tej procedury obsługi, zasubskrybuj zdarzenie po utworzeniu aparatu rozpoznawania:
speechRecognizer.RecognitionQualityDegrading += SpeechRecognizer_RecognitionQualityDegrading;
Zagadnienia dotyczące wątków interfejsu użytkownika
W WinUI 3 użyj DispatcherQueue zamiast CoreDispatcher do przekazywania wywołań do wątku interfejsu użytkownika. Pobierz odwołanie do obiektu DispatcherQueue dla bieżącego wątku w konstruktorze strony lub w logice inicjalizacji:
private Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue =
Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
Następnie użyj dispatcherQueue.TryEnqueue(...) programu obsługi zdarzeń, aby bezpiecznie zaktualizować elementy interfejsu użytkownika.