Управление проблемами с входным звуком
Узнайте, как управлять проблемами с точностью распознавания речи, вызванной качеством звука.
Важные API: SpeechRecognizer, RecognitionQualityDegrading, SpeechRecognitionAudioProblem
Оценка качества аудио-входных данных
Если распознавание речи активно, используйте событие RecognitionQualityDegrading распознавателя речи, чтобы определить, может ли один или несколько проблем со звуком влиять на входные данные речи. Аргумент события (SpeechRecognitionQualityDegradingEventArgs) предоставляет свойство Problem, описывающее проблемы, обнаруженные при входе звука.
Распознавание может повлиять на слишком много фонового шума, микрофон с отключенным микрофоном и громкостью или скоростью динамика.
Здесь мы настраиваем распознаватель речи и начинаем прослушивать событие 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();
}
Управление интерфейсом распознавания речи
Используйте описание, предоставленное свойством "Проблема ", чтобы помочь пользователю улучшить условия для распознавания.
Здесь мы создадим обработчик события RecognitionQualityDegrading , который проверяет низкий уровень тома. Затем мы используем объект SpeechSynthesizer , чтобы предположить, что пользователь пытается говорить громче.
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);
});
}
}
Связанные статьи
Примеры
Windows developer