Я пытаюсь переопределить фрагмент кода для приложения UWP, используя класс Windows.Media.SpeechRecognition
SpeechRecognizer
.
Проблема в том, что он, похоже, не использует тайм-аут, который я установил для EndSilenceTimeout
- но оба значения BabbleTimeout
и InitialSilenceTimeout
работают нормально. По сути, пауза в 1-2 секунды всегда заканчивает сеанс, и я пытаюсь выяснить, как это исправить или обойти это.
Я пробовал и с RecognizeAsync
, и с RecognizeWithUIAsync
, но ни один из них не помог.
private async void StartRecognizing()
{
var speechRecognizer = new SpeechRecognizer();
speechRecognizer.Timeouts.EndSilenceTimeout = TimeSpan.FromSeconds(10);
speechRecognizer.Timeouts.BabbleTimeout = TimeSpan.FromSeconds(10);
speechRecognizer.Timeouts.InitialSilenceTimeout = TimeSpan.FromSeconds(10);
await speechRecognizer.CompileConstraintsAsync();
SpeechRecognitionResult speechRecognitionResult = await speechRecognizer.RecognizeAsync();
var messageDialog = new Windows.UI.Popups.MessageDialog(speechRecognitionResult.Text, "Text spoken");
await messageDialog.ShowAsync();
}
Чтобы проверить это, просто создайте новое приложение UWP в Visual Studio и предоставьте себе разрешение на доступ к микрофону в манифесте приложения пакета; Кроме того, вам необходимо убедиться, что ваша ОС сама позволяет это сделать в настройках Речь, рукописный ввод и ввод в Windows 10 v1803.