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

Is there a way for accepting voice input in waterfall dialog

我目前正在创建一个必须接受用户语音输入的聊天机器人。但是,使用瀑布对话框提示用户输入不包含接受语音的提示。 我正在使用 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);
        }

由于您正在使用 Webchat 频道(根据您的评论),您应该处理 Webchat 上的所有语音部分,然后您的 bot 将在这边没有任何机会处理您的消息。

官方 Github 存储库中有几个关于语音的示例:查看所有编号以 06 here:

开头的示例

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

简而言之,您必须:

  • 使用webSpeechPonyfillFactory: window.WebChat.createBrowserWebSpeechPonyfillFactory()
  • 在您的网络聊天中启用语音功能
  • 在您的机器人代码中,确保设置了外出活动的 Speak 值,以便能够 "speak back" 给用户。请注意,如果说出上一条消息,您的机器人将 "speak" 自动。