Есть ли способ принять голосовой ввод в диалоге водопада - PullRequest
1 голос
/ 17 мая 2019

В настоящее время я создаю чат-бота, который должен принимать голосовые сообщения от пользователя. Однако использование диалоговых окон с водопадом для запроса ввода пользователя не содержит приглашения, которое принимает голос. Я использую службы Azure Speech для распознавания речи, и мне было интересно, есть ли способ сделать это.

Я попытался преобразовать результат распознавания речи в строку и отправить его как пользовательский текстовый ввод, но я новичок в кодировании и чувствую, что сделал это неправильно. Это часть шага диалога с водопадом.

private  async Task<DialogTurnResult> IntroStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            stepContext.Values[StudentInfo] = new BotData();

            SpeechSynthesis.SubjectVoice();

            var promptOptions = new PromptOptions { Prompt = MessageFactory.Text("Hello, how can i help you? \n" +
                "Want to do a Quiz or ask me a Question") };

            SpeechRecognition.HearUser(); // waits for user voice input 
            Model.Answer = (string)stepContext.Result;
            return await stepContext.PromptAsync(nameof(TextPrompt), promptOptions, cancellationToken);
        }

1 Ответ

0 голосов
/ 20 мая 2019

Поскольку вы используете канал веб-чата (на основе ваших комментариев), вы должны обработать всю речевую часть на веб-чате, и тогда ваш бот будет обрабатывать ваши сообщения без каких-либо шансов на этой стороне.

Выесть несколько образцов в официальном репозитории Github, касающихся речи: посмотрите все образцы, число которых начинается с 06 здесь :

  • 06.a.cognitive-services-bing-speech-js : вводит возможности преобразования речи в текст и преобразования текста в речь с использованием ( устарела ) Cingitive Services Bing Speech API и JavaScript.
  • 06.b.cognitive-services-bing-speech-реакции : вводит возможности преобразования речи в текст и преобразования текста в речь с использованием ( устарела ) Cingitive Services Bing Speech API и React.
  • 06.c.cognitive-services-speech-services-js : предоставляет возможности преобразования речи в текст и преобразования текста в речь с использованием API Cognitive Services Speech Services.
  • 06.d.speech-web-browser : демонстрируетw для реализации преобразования текста в речь с использованием веб-чата API веб-чата на основе браузера.(ссылка на стандарт W3C в примере)
  • 06.e.cognitive-services-voice-services-with-lexical-result : Демонстрирует использование лексического результата в Cognitive Services Speech ServicesAPI.
  • 06.f.hybrid-speech : демонстрирует, как использовать веб-речевой API-интерфейс на основе браузера для преобразования речи в текст и API-функции речевых служб Cognitive Services для преобразования текста в-speech.

Я бы предложил начать с 06.d, так как он не требует много изменений.

В двух словах вам необходимо:

  • включите речевую возможность в своем чате, используя webSpeechPonyfillFactory: window.WebChat.createBrowserWebSpeechPonyfillFactory()
  • в своем коде бота, убедитесь, что значение Speak ваших исходящих действий установлено для того, чтобы иметь возможность «говорить» спользователь.Обратите внимание, что ваш бот будет «говорить» автоматически, если говорилось предыдущее сообщение.
...