有没有办法在瀑布对话框中接受语音输入
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.a.cognitive-services-bing-speech-js:使用(已弃用)认知服务Bing语音引入speech-to-text和text-to-speech能力API 和 JavaScript.
- 06.b.cognitive-services-bing-speech-react:使用(已弃用)认知服务Bing语音引入speech-to-text和text-to-speech能力API 和 React.
- 06.c.cognitive-services-speech-services-js:介绍 speech-to-text 和 text-to-speech 使用认知服务语音服务的能力 API。
- 06.d.speech-web-browser:演示如何使用 Web Chat 的 browser-based Web Speech API 实现 text-to-speech。 (link 样本中的 W3C 标准)
- 06.e.cognitive-services-speech-services-with-lexical-result:演示如何使用认知服务语音服务的词汇结果API。
- 06.f.hybrid-speech:演示如何将 browser-based Web 语音 API 用于 speech-to-text,以及如何将认知服务语音服务 API 用于 text-to-speech.
我建议从 06.d 开始,因为它不需要太多更改。
简而言之,您必须:
- 使用
webSpeechPonyfillFactory: window.WebChat.createBrowserWebSpeechPonyfillFactory()
在您的网络聊天中启用语音功能
- 在您的机器人代码中,确保设置了外出活动的
Speak
值,以便能够 "speak back" 给用户。请注意,如果说出上一条消息,您的机器人将 "speak" 自动。
我目前正在创建一个必须接受用户语音输入的聊天机器人。但是,使用瀑布对话框提示用户输入不包含接受语音的提示。 我正在使用 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.a.cognitive-services-bing-speech-js:使用(已弃用)认知服务Bing语音引入speech-to-text和text-to-speech能力API 和 JavaScript.
- 06.b.cognitive-services-bing-speech-react:使用(已弃用)认知服务Bing语音引入speech-to-text和text-to-speech能力API 和 React.
- 06.c.cognitive-services-speech-services-js:介绍 speech-to-text 和 text-to-speech 使用认知服务语音服务的能力 API。
- 06.d.speech-web-browser:演示如何使用 Web Chat 的 browser-based Web Speech API 实现 text-to-speech。 (link 样本中的 W3C 标准)
- 06.e.cognitive-services-speech-services-with-lexical-result:演示如何使用认知服务语音服务的词汇结果API。
- 06.f.hybrid-speech:演示如何将 browser-based Web 语音 API 用于 speech-to-text,以及如何将认知服务语音服务 API 用于 text-to-speech.
我建议从 06.d 开始,因为它不需要太多更改。
简而言之,您必须:
- 使用
webSpeechPonyfillFactory: window.WebChat.createBrowserWebSpeechPonyfillFactory()
在您的网络聊天中启用语音功能
- 在您的机器人代码中,确保设置了外出活动的
Speak
值,以便能够 "speak back" 给用户。请注意,如果说出上一条消息,您的机器人将 "speak" 自动。