有没有办法在瀑布对话框中接受语音输入

时间:2019-05-17 14:23:56

标签: c# botframework speech-recognition prompt

我当前正在创建一个聊天机器人,该聊天机器人必须接受来自用户的语音输入。但是,使用瀑布对话框提示用户输入内容并不包含接受语音的提示。 我正在使用Azure语音服务进行语音识别,并且想知道是否有一种方法可以做到这一点。

我尝试将语音识别结果转换为字符串,并将其作为用户文本输入发送,但是我对编码并不陌生,觉得自己做错了。这是瀑布对话框步骤的一部分。

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 :(得分:0)

在使用Webchat频道时(基于您的评论),您应该处理Webchat上的所有语音部分,然后您的漫游器将在这一侧毫无机会地处理您的消息。

您在Github官方存储库中有一些有关Speech的示例:查看所有以var conditionalIds = _currentRuleSet.MultiConditionalQuestionIds; var conditionalAnswers = _currentRuleSet.MultiConditionalQuestionAnswers; var map = conditionalAnswers.ToDictionary(conditionalIds, x => x[]); here开头的示例:

我建议从06.d开始,因为它不需要太多更改。

简而言之,您必须:

  • 使用06
  • 在网聊中启用语音功能
  • 在您的漫游器代码中,确保已设置外发活动的webSpeechPonyfillFactory: window.WebChat.createBrowserWebSpeechPonyfillFactory()值,以便能够对用户“说出来”。请注意,如果说出上一条消息,您的机器人将自动“讲话”。