Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Meer informatie over het beheren van problemen met de nauwkeurigheid van spraakherkenning die wordt veroorzaakt door de kwaliteit van audio-invoer.
Belangrijke API's: SpeechRecognizer, Herkenningskwaliteit Verslechtering, Probleem met Spraakherkenningsaudio
Kwaliteit van audio-invoer beoordelen
Wanneer spraakherkenning actief is, gebruikt u de RecognitionQualityDegrading-gebeurtenis van uw spraakherkenning om te bepalen of een of meer audioproblemen de spraakinvoer kunnen verstoren. Het gebeurtenisargument (SpeechRecognitionQualityDegradingEventArgs) biedt de eigenschap Probleem , waarin de problemen worden beschreven die zijn gedetecteerd met de audio-invoer.
Herkenning kan worden beïnvloed door te veel achtergrondruis, een gedempte microfoon en het volume of de snelheid van de luidspreker.
Hier configureren we een spraakherkenning en beginnen we te luisteren naar de RecognitionQualityDegrading-gebeurtenis .
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();
}
De spraakherkenningservaring beheren
Gebruik de beschrijving van de eigenschap Probleem om de gebruiker te helpen de voorwaarden voor herkenning te verbeteren.
Hier maken we een handler voor de RecognitionQualityDegrading-gebeurtenis die controleert op een laag volumeniveau. Vervolgens gebruiken we een SpeechSynthesizer-object om aan te geven dat de gebruiker luider spreekt.
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);
});
}
}
Verwante artikelen
Voorbeelden
Windows developer