语速、停顿、多音字:合成结果怎么精细调

2026-08-24

**合成结果往往不是”完全不能用”,而是”大体可用,但有那么三四处别扭”。**语速稍微赶了点、某个地方该喘口气却一路念下去、一个品牌名读成了另一个字。

这类问题不需要换模型,也不需要重训。各有各的调法,而且手段之间有明确优先级——先试哪个、不行再试哪个。这篇讲的就是这个顺序。至于”为什么会读错”的成因,见 TTS 前端文本处理

先分清你不满意的是什么

动手前花十秒归类,能省掉大量瞎试:

  • 发音错:某个字读成别的音,属注音层
  • 节奏不对:字都对,但快了慢了、该停不停,属时长与韵律层
  • 音质不对:发闷、带金属味,在声学模型与声码器那一段,本篇手段使不上力,见 TTS 的三段流水线
  • 语气不对:没读错也不赶,就是情绪不搭,属风格控制,见 情感与语气控制

前两类是本篇能修的,而且大多能修干净。

语速:改时长预测,不是改波形

两种做法都叫”调语速”,实际完全不是一回事。

**做法一:在推理时改时长预测比例。**声学模型内部会预测每个音素该持续多久,改这个比例,相当于让模型”本来就打算说得快一点”。生成出来的仍是一段自然语音,音高、气口都按新时长重新算过。

做法二:对已合成的波形做变速。这是纯信号处理。直接改播放速率会连音高一起改变,一听就是快进磁带;想保持音高不变得用变速不变调算法,而这类算法本身会引入失真,语音尤其容易出现颤抖感。

**结论:能在推理阶段调,就别在波形上调。**前者是重新生成,后者是事后拉扯。只有手上只剩一个音频文件、回不到合成环节时,才退而用波形变速。

停顿:标记、标点、切句

三种手段,从直接到间接:

**一、显式停顿标记。**很多系统支持 SSML 一类的标记语言来插入停顿,但是否支持、支持哪些标签、语法长什么样,完全取决于你用的具体实现,必须查文档:有的只支持一个很小的子集,有的用私有语法,有的干脆不支持。

**二、用标点间接控制。**通用性最好,因为前端的韵律预测本来就吃标点:

标点前端通常给的停顿
逗号、顿号短停
分号、冒号中等
句号、问号、感叹号长停,且句调会重置
破折号、省略号偏长,常带语气变化

想让某处多停一下,把逗号改成句号往往立刻见效——代价是句调也跟着重置,语气会显得更断。

**三、把长句切短。**该停的地方直接断句,是不支持标记时的兜底。长句本身也容易让韵律预测出错,切短是双重收益。

多音字与专名:注音标注最直接

**给出注音标注强制指定读音,是修复读错最直接的手段。**不依赖模型改进,立刻生效,只影响这一处。

人名、地名、品牌名是重灾区——它们大多是未登录词,前端只能靠猜,别指望换个模型能猜对。具体的注音写法各系统不同,仍要查所用实现的文档。

数字:直接写成中文

**这是最实用的一招。**同一串阿拉伯数字没有唯一读法,前端只能靠上下文猜。与其调规则赌它猜对,不如直接把「二零二五年」写进文本。

你比系统更清楚这个数字该怎么读——把这个知识写进文本,比让它去猜可靠得多。金额、编号、电话号码、比分、日期全都适用。隐藏好处是结果稳定:换模型、升版本,中文字符的读法不会变,而 TN 规则可能变。

分级修法表

拿到一段不满意的音频,按下表逐级往下试:

不满意的地方优先试还不行试什么
整体偏快或偏慢调推理时的时长预测比例拆句、加标点重排节奏;波形变速是最后手段
局部某句偏赶在该句前后加停顿标记这句单独拆一段合成再拼接
该停没停逗号改句号,或插停顿标记直接断成两句
停顿太多显得拖沓减少标点、短句合并查原文有无多余的省略号、破折号
某个字读错注音标注强制指定加词典;再不行改写用词
专名读错注音标注,并保证专名不被拆开改用更常见的写法或全称
数字读法不对直接写成中文改写句式让语境更明确
英文缩写读法怪拉开间隔写成字母,或换中文说法加词典
语气不搭改写文本(加语气词、换句式)换风格控制手段或换音色
发闷、有金属味本篇手段无效换声码器或音色

**用法:从左往右、从上往下,别跳级。**跳过”改文本”直接去调参数,是最常见的时间浪费。

调节的副作用

每种手段都有代价,用过头会引出新问题:

  • **语速太快会吞音。**辅音起始被压缩,咬字含糊,可懂度掉得比预期早。
  • **语速太慢会显得呆。**音素被均匀拉长,而真人放慢时是重点词拉长、虚词照旧。
  • **停顿插太多会显得刻意。**每个短语后都留一口气,像在念稿;真人的停顿是不均匀的。
  • **注音标注加太多会难维护。**文本里塞满标注,谁都不敢改这段话。高频专名该沉到词典或预处理层。

**判断标准只有一个:整段连着听。**逐句调时每句都变好、连起来却更怪,是常态。

批量场景:建规则,不要逐句手调

要合成的是几百条播报、一整本书时,逐句手调会崩溃,换个人接手就全乱。应该把修法沉淀成预处理规则

  1. **专名注音表。**把业务里的人名、地名、品牌名、产品名收进一份表,合成前自动套用。
  2. **数字改写规则。**按字段类型固定写法:订单号逐位读、金额按数量读、年份按年份读。这些在你的业务里是确定的,不必每次让 TN 猜。
  3. **标点规范。**统一文案的标点习惯——韵律的一致性来自输入的一致性。
  4. **回归清单。**挑十几条覆盖各类模式的代表文本,每次换模型或改规则都重听一遍。

关键:规则放在合成前的预处理层,别污染原始文案——它还要给人读、给别的渠道用。长文本还需处理切分与拼接,见 长文本切分与拼接

调不动的时候怎么办

有些句子就是调不好。承认这一点能省很多时间:

**第一,改文本比调参数有效得多。**把想要的停顿、语气、断句直接写进文本——加个语气词、换个句式、把长句拆成两句。参数是隔着一层跟模型商量,文本是直接告诉它。

**第二,换个音色可能比死磕当前音色快。**不同音色的韵律风格差异很大,某个音色在长句上就是容易赶。与其花一小时把它压回来,不如换一个试,往往几分钟就有结论。

**第三,接受”这句就是合成不好”,然后改文案。**这是很多人不愿承认但最省时间的选择。一句话反复调都别扭,说明句式和当前系统不合,重写一句意思相同的话通常一次就过。文案不是圣旨,目标是听感而非逐字忠实。至于哪些别扭是调节根本解决不了的,见 为什么合成音听起来像机器

常见问题

问:语速和停顿应该调到什么数值?

没有通用答案,各实现的参数含义和取值范围都不同,抄别人的数值大概率不适用。做法是在自己的业务文本上做 A/B 试听,固定其他变量只动一个,找到档位后写进规范。

问:调参数会不会影响音色相似度?

大幅调整时会。时长预测拉得太偏,韵律会偏离参考音频原有的说话习惯,听感是”还是那个声音,但不像那个人说话了”。克隆音色场景尤其明显,幅度保守些。

问:能不能只把有问题的那句重新合成再替换进去?

可以,但要注意拼接处:分开合成的片段可能音色漂移、语速不一致,接缝处也容易有爆音。缓解办法是固定随机种子与说话人嵌入、接缝处做短交叉淡化、避免片段切得过短。

相关阅读


本文讲的是语音合成精细调节的通用原理,不绑定任何具体实现。 各家系统的参数名称与取值范围、注音标注语法、是否支持 SSML 及支持哪些标签差异极大,请以你所用系统的官方文档为准。 文中不给具体参数数值,因为跨实现不可移植;我们也未对任何方案做过实测,故不提供速度、评分一类的数字。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。