【发布时间】:2016-11-17 19:58:42
【问题描述】:
我目前正在使用 Twilio 拨打电话,我想添加一个语音识别元素,这样如果用户说出特定的短语,我的后端就可以采取特定的操作。如果您熟悉 Twilio,则类似于 Gather 动词。它需要是实时的,因为如果存在识别问题,系统会提示用户进行澄清。
【问题讨论】:
标签: twilio speech-recognition speech-to-text
我目前正在使用 Twilio 拨打电话,我想添加一个语音识别元素,这样如果用户说出特定的短语,我的后端就可以采取特定的操作。如果您熟悉 Twilio,则类似于 Gather 动词。它需要是实时的,因为如果存在识别问题,系统会提示用户进行澄清。
【问题讨论】:
标签: twilio speech-recognition speech-to-text
要将语音识别添加到 Twilio Gather 动词,请将“speech”添加到 Gather 输入值,例如:input="dtmf speech"。在调用者说了些什么并且安静后,Twilio 服务器将语音转换为文本并将文本发送到操作 URL,然后等待响应指令。您的程序可以使用文本来响应您的选择。一种选择是让您的程序以更正指令(说动词)进行响应,并让调用者说更多内容,这将由您的操作 URL 再次处理。
Twilio 收集包括语音识别实现的文档: https://www.twilio.com/docs/api/twiml/gather
带有使用语音识别标识符的 Gather 动词的 TwiML 示例。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather input="dtmf speech" language="en-us"
numDigits="1"
timeout="6"
action="http://hostname/processUserResponse.py">
<Say voice="alice" language="en-CA">
Okay, speech recognition test. Enter any digit or say something.
</Say>
</Gather>
<Say voice="alice" language="en-CA">
Waited to long to say something. Response canceled ....
</Say>
</Response>
【讨论】:
Gather.InputEnum.DtmfSpeech,但这在 .net 核心中无效,因此我假设我只是指定(二进制组合)两者,但实际上它(input)取而代之的是一个枚举列表。
这里简要介绍了这一点:https://stackoverflow.com/a/30224103/6189694
您似乎必须设置电话会议,然后以静音用户身份加入以收听电话。
【讨论】:
我不相信有任何东西可以实时执行此操作。但是,您可以使用录音,将录音传递给另一个服务(想到 IBM 的 Watson Speech to Text),然后从那里处理它。它应该能够通过正确的工作流程相对快速地完成此操作。我从未使用过 Watson,只是看到它使用过。所以我不确定处理录音需要多长时间。我认为应该快速完成一两个单词的命令。
抱歉,我无法提供更多指导。社区中的其他人可能有另一种方法。
【讨论】:
根据我上面的评论,使用枚举列表而不是官方旧 C# 示例中可用的组合枚举的 C# .net Core IVR 收集示例(还必须将 url.actionurl 转换为这个怪物):
List<Gather.InputEnum> bothDtmfAndSpeech =
new List<Gather.InputEnum>(2){
Gather.InputEnum.Dtmf, Gather.InputEnum.Speech
};
var gather = new Gather(
action: new Uri(Url.Action("Show", "Menu")),
numDigits: 1, input:bothDtmfAndSpeech, bargeIn: true);
【讨论】:
IBM Watson Speech To Text 服务 (STT) 具有此功能,称为关键字识别 (https://www.ibm.com/watson/developercloud/doc/speech-to-text/output.shtml)。 Watson STT 将让您推送电话音频的实时流,不仅可以生成识别假设,还可以检测用户是否说出了事先指定的句子或命令。实际上有一个演示展示了这个功能,请尝试一下:
【讨论】: