在Twilio与Dialogflow集成中,能否使用标准及WaveNet外的TTS语音?
解决方案
目前Twilio Studio原生的Dialogflow组件确实仅支持Google的standard和WaveNet语音,无法直接选用Twilio提供的更优质TTS语音,但可以通过两种方式实现需求:
方案一:用Twilio Functions中转处理对话流程
放弃使用Studio内置的Dialogflow组件,改为通过HTTP请求+自定义函数的方式对接Dialogflow,再用Say组件播放回复:
- 创建Twilio Function,编写代码调用Dialogflow的
DetectIntentAPI,获取对话回复文本。 - 在Studio中使用「Make HTTP Request」组件调用该Function,获取返回的回复内容。
- 将回复文本传入Say组件,直接选择你需要的优质TTS语音完成播放。
- 后续用户输入可通过Studio的「Gather Input on Call」组件收集,再传入Function继续对接Dialogflow,形成完整对话闭环。
方案二:用SSML自定义Dialogflow响应
在Dialogflow中配置自定义响应payload,指定Twilio的优质TTS语音,再在Studio中解析播放:
- 在Dialogflow控制台的意图响应里,选择「Custom Payload」,传入符合Twilio要求的SSML格式内容,示例如下:
{ "twilio": { "ssml": "<speak voice=\"Polly.Matthew-Neural\">这里是Dialogflow的回复内容</speak>" } } - 在Studio的Dialogflow组件之后,添加「Set Variables」组件,提取返回响应中自定义payload的
ssml字段值。 - 将提取到的SSML内容传入Say组件,切换到「SSML」模式进行播放,即可使用指定的优质TTS语音。
两种方案对比:方案一灵活性更强,可完全掌控对话逻辑;方案二更贴合原有Dialogflow组件的使用习惯,改动幅度较小。
内容的提问来源于stack exchange,提问作者Tim Brückner
相关产品推荐
相关产品推荐

