오디오 입력 관련 문제 관리
오디오 입력 품질로 인한 음성 인식 정확도 문제를 관리하는 방법을 알아봅니다.
중요 API: SpeechRecognizer, RecognitionQualityDegrading, SpeechRecognitionAudioProblem
오디오 입력 품질 평가
음성 인식이 활성화된 경우 음성 인식기의 RecognitionQualityDegrading 이벤트를 사용하여 하나 이상의 오디오 문제가 음성 입력을 방해할 수 있는지 여부를 확인합니다. 이벤트 인수(SpeechRecognitionQualityDegradingEventArgs)는 오디오 입력으로 검색된 문제를 설명하는 문제 속성을 제공합니다.
인식은 너무 많은 배경 소음, 음소거된 마이크 및 스피커의 볼륨 또는 속도에 의해 영향을 받을 수 있습니다.
여기서는 음성 인식기를 구성하고 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);
});
}
}
관련된 문서
샘플
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
Windows developer