电话语音客服不只是“把文字念出来”。一段回访语音要先确认来电理由和事实,再检查用户是否同意电话联系,最后才是选声音、合成和试听。模型只能帮你生成声音,不能替你决定该不该拨、客户是否同意,也不能替业务核实工单。

本文只演示本地生成一段虚构售后回访样音,不接电话线路、不拨号、不提供自动外呼程序。实测中,CosyVoice 3 在 M1 Max 上将约 70 字的虚构话术合成为 15.08 秒单声道音频;FunASR 把虚构店名“青禾”识别成“清河”。所以本地跑通不等于话术和声音已达到上线标准,最终音频仍需人工逐句听审。

先区分客服回访和营销外呼

工信部对呼叫中心的通知将业务定位为以接收用户主动呼入的信息咨询为主;确有需要的即时回访、信息咨询外呼,要通过合同、协议等方式取得用户同意,通知明确不允许提供商业营销类电话呼出服务。对呼叫中心的码号、线路和许可要求还要按业务主体和实际经营形态核实,不能把这篇本地合成示例当作外呼系统上线指南。工信部通知

先把这三种场景分清:

场景 处理方式
用户主动打进来咨询 先回答来电问题;不需要时不要把对话改成营销推销。
用户提交工单后同意电话确认 围绕该工单做即时回访,只说核实过的状态,并提供拒接或原渠道继续联系的方式。
用户没有请求却收到促销电话 本文不提供这种外呼方案;不要用 AI 合成语音批量推销或绕过拒绝。

如果用户拒绝或撤回同意,要停止联系并按业务流程更新状态。开始处理电话号码、工单或录音前,确认处理目的、告知内容、访问权限和保存期限。个人信息保护法要求处理目的明确合理、与目的直接相关,并把收集限制在最小范围。《个人信息保护法》第五、六条

先写事实,再写成一句一句的话

回访稿建议只包含四类信息:身份、用户之前提出的事项、当前需要确认的问题,以及用户不方便时的替代路径。店名、工单状态、预约时间、金额和地址要来自已核实的业务记录。不要让模型补写“已经安排”“可以退款”这类未经确认的承诺。

例如,虚构的“青禾家电”售后稿可以写成:

您好,这里是青禾家电售后。您昨天提交的维修申请已登记。请问现在方便确认一下上门时间吗?如果不方便接听,您可以稍后通过原服务渠道联系我们。

准备脚本前,把变量从固定话术中分开:[店名]、[用户已提交的事项]、[已确认的状态]、[需要确认的问题]。运行时只用核实过的字段替换占位内容。若无法确认用户是否提交过该申请,就先不要生成“您昨天提交了申请”这句话。

用 CosyVoice 本地合成一段样音

本篇选择 Fun-CosyVoice3-0.5B-2512 的 zero-shot 合成接口,因为它可以用获准使用的参考音生成指定文本,适合验证同一服务声音的念稿效果;模型卡列出多语言语音合成能力,官方 README 提供模型下载和调用示例。官方模型卡 官方仓库

运行前先按官方说明安装 CosyVoice、准备 Fun-CosyVoice3 模型和 Python 环境。模型文件约数 GB,首次使用还可能下载文本前处理资源。本次实测环境为 M1 Max 64GB、Python 3.10.20、PyTorch 2.3.1,CosyVoice 仓库提交 074ca6d。参考音由 macOS 系统语音合成,只作技术测试;没有使用真人或客户录音。参考音和输出样音只保存在本机,没有放入练习包或上传。

下载客服回访语音练习包,将 客服回访语音合成.py 放在 CosyVoice 项目以外的位置,然后在 CosyVoice 项目根目录运行:

python /path/to/客服回访语音合成.py \
  --reference /path/to/authorized-voice.wav \
  --reference-text '填写参考音里实际说出的原文'

--reference 必须是已获准用于语音合成的 WAV;--reference-text 要逐字对应录音,不能凭印象改写。CosyVoice 3 的示例提示文本使用 You are a helpful assistant.<|endofprompt|> 前缀,练习脚本已处理此前缀。参考音太短会导致特征提取失败;超过 30 秒也会触发模型限制。模型推理使用本机资源,首次下载模型和前处理资源会联网。

本次从模型加载到写出文件约 62.9 秒,其中模型加载 7.56 秒、推理和写文件 55.31 秒;结果为 24 kHz、单声道、15.08 秒 WAV。脚本检查音频非空、数值正常,并在本地报告时长。这个计时只代表这台设备上的一条样音,不是电话实时响应或并发能力测试。

自动转写只能提示你哪里要复核

我用本机 FunASR 1.4.16 对样音做了自动转写。模型把“青禾”识别成了“清河”,其余主要句子与底稿相符。这个例子说明专名容易被听错:店名、姓名、金额、预约时间、地址和否定词都要人工逐字听,不能因为识别结果看起来通顺就默认音频正确。

正式使用前,把完整音频从头听到尾。确认身份开场、来电目的、事实、停顿、语速和拒接路径;一旦碰到无法核实的字段,就改稿后重新生成。接电话的人也应有联系人工或原服务渠道的选择。练习包的回访话术与人工复核清单.md可以复制后逐项打勾。

上线前再核权利、标识和运营条件

模型卡显示 Apache 2.0,但模型、代码、参考音、生成内容和电话线路属于不同层面的权利与要求。CosyVoice 仓库 README 也说明仓库示例内容用于学术和技术演示;这不能替代你对所用音色、模型文件、服务部署和业务场景的独立审查。不要克隆客户、员工或公众人物的声音,除非已经获得覆盖具体用途、渠道和期限的明确授权。

《人工智能生成合成内容标识办法》把合成音频列入适用内容,并规定服务提供者按适用情形添加显式、隐式标识;用户发布生成合成内容时应主动声明并使用平台的标识功能。具体义务取决于服务形态和发布渠道,生产上线前应由负责人员确认。《人工智能生成合成内容标识办法》

此外,工信部通知对呼叫中心外呼提出用户同意凭证、录音和呼叫信息留存等要求。是否属于呼叫中心经营、是否需要许可或特定号码线路,应结合实际业务向主管部门和运营商核实。本地生成一段音频既没有测试这些条件,也不代表可以直接接入电话系统。完整核对项见练习包中的外呼合规核对表.md。


练习包内容

  • 客服回访语音合成.py:CosyVoice 3 本地合成脚本。
  • 回访话术与人工复核清单.md:回访前和合成后的逐项复核。
  • 外呼合规核对表.md:业务、用户同意、个人信息和合成标识核对。
  • 模型实测记录.md:当前设备、参考音来源、生成与转写数据。

练习包不含模型权重、录音、参考音或合成音频。用户真实数据和音频不要发到公共仓库或未经审核的在线服务。