Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ses girişi kalitesinden kaynaklanan konuşma tanıma doğruluğuyla ilgili sorunları yönetmeyi öğrenin.
Önemli API'ler: SpeechRecognizer, RecognitionQualityDegrading, SpeechRecognitionAudioProblem
Ses girişi kalitesini değerlendirme
Konuşma tanıma etkin olduğunda, bir veya daha fazla ses sorununun konuşma girişine engel olup olmadığını belirlemek için konuşma tanımanızın RecognitionQualityDegrading olayını kullanın. Olay bağımsız değişkeni (SpeechRecognitionQualityDegradingEventArgs), ses girişiyle algılanan sorunları açıklayan Problem özelliğini sağlar.
Tanıma çok fazla arka plan gürültüsünden, sesi kapalı bir mikrofondan ve hoparlörün sesinden veya hızından etkilenebilir.
Burada bir konuşma tanıyıcı yapılandırıp RecognitionQualityDegrading olayını dinlemeye başlayacağız.
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();
}
Konuşma tanıma deneyimini yönetme
Kullanıcının tanıma koşullarını iyileştirmesine yardımcı olmak için Sorun özelliği tarafından sağlanan açıklamayı kullanın.
Burada, düşük ses seviyesini denetleyen RecognitionQualityDegrading olayı için bir işleyici oluştururuz. Ardından kullanıcının daha yüksek sesle konuşmayı denemesini önermek için bir SpeechSynthesizer nesnesi kullanırız.
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);
});
}
}
İlgili makaleler
Örnekleri
Windows developer