Twilio 自定义声音:播放你自己的文字转语音音频
Twilio 的 Say 动词会在通话中用 Amazon Polly 和 Google 的内置声音朗读文字。这很方便,也正因如此,你的 IVR、提醒和等待提示听起来和成千上万家公司一样。请注意:Supertonic 3 暂不支持中文,提示音可以用英语、日语、韩语等 31 种语言生成。
Play 动词则可以播放任何音频文件。用免费的 SuperClonica 引擎,你可以离线用标准声音、用自己的说话人训练的声音或角色声音生成提示音,再由 Twilio 在通话中播放。本指南介绍如何制作适合电话的文件、如何提供文件让 Twilio 缓存,以及什么时候 Say 仍然更合适。
Say 还是 Play
对所有来电者都一样的提示用 Play,每次通话都会变化的文字(例如订单号)用 Say。
- Say:Twilio 在通话时用内置声音朗读文字,无需托管任何文件。
- Play:Twilio 从你的 URL 下载音频文件并播放,声音由你决定。
- Play 支持 MP3、WAV、AIFF、GSM 和 μ-law,并可循环播放直到对方挂断。
- SuperClonica 支持 31 种语言,暂不支持中文。
免费试听声音
在任意声音页面输入一条提示,30 到 100 个字符,选择语言并点击生成按钮。几秒后就能听到你的线路可能的效果,无需注册。
制作适合电话的文件
一段十秒提示的 8 kHz μ-law WAV 约 80 KB,即使是大型菜单也能瞬间下载。
- 安装引擎:python -m pip install superclonica-cpu。
- 在 Python 中先用 tts = Superclonica() 创建一次引擎,然后生成提示并保存为电话格式:audio, rate = tts.synthesize("Thanks for calling. All our agents are busy, please hold.", "F1", "en"); sf.write("hold.wav", resample_poly(audio, 8000, rate), 8000, subtype="ULAW")。
- 这需要 soundfile 和 scipy.signal 中的 resample_poly,两者都会随引擎一起安装。
- Twilio 会对通话音频统一转码;其文档提醒,128 kbps 的 MP3 可能比低码率的无损文件听起来更差,而 8 kHz μ-law WAV 正是这种文件。
提供并播放提示音
通过 HTTPS 在你的服务器或对象存储上托管文件,并带上 ETag 或 Last-Modified 头,让 Twilio 在首次播放后缓存。使用 Twilio 的 Python 库,TwiML 只需两行:r = VoiceResponse(); r.play('https://example.com/audio/hold.wav', loop=0),loop 设为 0 会一直重复到通话结束。对于每次通话都会变化的文字,可以在应用旁运行 SuperClonica HTTP 服务器,在响应 webhook 之前生成语音:短句在台式机处理器上远不到一秒,重复的内容请缓存。
自动外呼的规则
在美国,FCC 于 2024 年裁定,自动外呼中的 AI 生成声音属于 TCPA 所称的人工声音,因此这类电话需要与任何预录消息相同的同意。请使用你拥有权利的声音,例如模型的十个标准声音,或用同意授权的说话人训练的你自己的声音,切勿使用模仿真实人物的声音,并告知对方正在与自动系统通话。