我当前正在创建一个聊天机器人,该聊天机器人必须接受来自用户的语音输入。但是,使用瀑布对话框提示用户输入内容并不包含接受语音的提示。 我正在使用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);
}
答案 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()
值,以便能够对用户“说出来”。请注意,如果说出上一条消息,您的机器人将自动“讲话”。