Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak zarządzać problemami związanymi z dokładnością rozpoznawania mowy w wyniku jakości wejścia audio.
Ważne interfejsy API: SpeechRecognizer, RecognitionQualityDegrading, SpeechRecognitionAudioProblem
Ocena jakości wejścia audio
Gdy rozpoznawanie mowy jest aktywne, użyj zdarzenia RecognitionQualityDegrading mechanizmu rozpoznawania mowy, aby określić, czy co najmniej jeden problem z dźwiękiem może zakłócać wprowadzanie mowy. Argument zdarzenia (SpeechRecognitionQualityDegradingEventArgs) udostępnia właściwość Problem , która opisuje problemy wykryte przy użyciu danych wejściowych dźwięku.
Na rozpoznawanie może mieć wpływ zbyt duży szum tła, wyciszony mikrofon oraz głośność lub szybkość głośnika.
W tym miejscu skonfigurujemy rozpoznawanie mowy i rozpoczynamy nasłuchiwanie zdarzenia RecognitionQualityDegrading .
private async void WeatherSearch_Click(object sender, RoutedEventArgs e)
{
// Create an instance of SpeechRecognizer.
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
// Listen for audio input issues.
speechRecognizer.RecognitionQualityDegrading += speechRecognizer_RecognitionQualityDegrading;
// Add a web search grammar to the recognizer.
var webSearchGrammar = new Windows.Media.SpeechRecognition.SpeechRecognitionTopicConstraint(Windows.Media.SpeechRecognition.SpeechRecognitionScenario.WebSearch, "webSearch");
speechRecognizer.UIOptions.AudiblePrompt = "Say what you want to search for...";
speechRecognizer.UIOptions.ExampleText = "Ex. 'weather for London'";
speechRecognizer.Constraints.Add(webSearchGrammar);
// Compile the constraint.
await speechRecognizer.CompileConstraintsAsync();
// Start recognition.
Windows.Media.SpeechRecognition.SpeechRecognitionResult speechRecognitionResult = await speechRecognizer.RecognizeWithUIAsync();
//await speechRecognizer.RecognizeWithUIAsync();
// Do something with the recognition result.
var messageDialog = new Windows.UI.Popups.MessageDialog(speechRecognitionResult.Text, "Text spoken");
await messageDialog.ShowAsync();
}
Zarządzanie doświadczeniem rozpoznawania mowy
Użyj opisu podanego przez właściwość Problem , aby ułatwić użytkownikowi poprawę warunków rozpoznawania.
W tym miejscu utworzymy procedurę obsługi dla zdarzenia RecognitionQualityDegrading, które sprawdza niski poziom głośności. Następnie użyjemy obiektu SpeechSynthesizer , aby zasugerować, że użytkownik spróbuje mówić głośniej.
private async void speechRecognizer_RecognitionQualityDegrading(
Windows.Media.SpeechRecognition.SpeechRecognizer sender,
Windows.Media.SpeechRecognition.SpeechRecognitionQualityDegradingEventArgs args)
{
// Create an instance of a speech synthesis engine (voice).
var speechSynthesizer =
new Windows.Media.SpeechSynthesis.SpeechSynthesizer();
// If input speech is too quiet, prompt the user to speak louder.
if (args.Problem == Windows.Media.SpeechRecognition.SpeechRecognitionAudioProblem.TooQuiet)
{
// Generate the audio stream from plain text.
Windows.Media.SpeechSynthesis.SpeechSynthesisStream stream;
try
{
stream = await speechSynthesizer.SynthesizeTextToStreamAsync("Try speaking louder");
stream.Seek(0);
}
catch (Exception)
{
stream = null;
}
// Send the stream to the MediaElement declared in XAML.
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
{
this.media.SetSource(stream, stream.ContentType);
});
}
}
Powiązane artykuły
Próbki
Windows developer