Получение SpeechRecognizer для правильного использования тайм-аутов для EndSilenceTimeout - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь переопределить фрагмент кода для приложения 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.

...