语音合成的情感和语气怎么控
同一句”好的,我这就去办”,可以说得干脆、说得敷衍、说得为难。文字一模一样,语气完全不同。让合成语音带上正确的情绪,是 TTS 里最难量化也最容易被低估的一环。
情感与语气的控制发生在三段流水线的声学模型这一段——它决定音高走向、时长分布和能量起伏,也就是我们听感上说的”语气”。但控制信号从哪来、以什么形式给,工程上主要有三条路。
标签式:从预设的类别里挑一个
最直接的做法是把情感做成一个可选参数:调用时指定”高兴""悲伤""严肃”之类的类别,模型在训练时就见过带这些标注的数据,推理时按标签走。
好处非常实在:结果可复现、可枚举、可测试。能列出一张表说明每种场景用哪个值,能逐个回归,出了问题也容易定位。客服播报、有声导览这类需要稳定输出的场景,标签式几乎是唯一省心的选择。
问题也同样明显:粒度太粗。真实的语气是连续的,标签是离散的。一句”我知道了”可以有从平静到隐忍到不耐烦的无数个中间状态,而标签只给你三五个孤立的点,中间地带表达不了。更麻烦的是同一个标签在不同句子上的表现并不一致——“高兴”用在感叹句上很自然,用在长陈述句上就容易变成夸张的播音腔。
另外提醒一句:各家实现支持哪些情感类别差别很大,而且会随版本变化,别把某一份类别清单当成通用标准。
参考音频式:给一段样例让模型模仿
第二条路是不描述、直接示范:提供一小段目标语气的音频,模型从中提取风格信息,再用这个风格去说新的文本。这类做法通常被称为风格迁移。
机制上它和零样本音色克隆同源——都是从参考音频里抽出一段嵌入表示,作为条件送进声学模型,区别只在于抽的是”音色”还是”说话方式”。
表现力是三者里最强的,因为参考音频携带的信息远比一个标签丰富:语速的细微变化、句尾的拖腔、气口的位置,都可能被一并学走。想要一种说不清但听得出的味道时,找一段样例比写十行描述有效得多。
代价是不易精确复现。很难保证换一句文本后风格还完全一致,也很难做”再温柔一点”这样的定向微调——想调整只能换参考音频,而换了之后变的往往不止一处。还有一个常被忽略的坑:音色可能跟着风格一起被带过来。只想借语气、不想换发音人,就要留意参考音频的说话人是谁。涉及真人声音时,授权问题必须走在技术之前。
自然语言提示式:用一句话描述你要什么
近年一类做法把语音离散化成 token、用语言模型的方式来预测,这让”用提示词控制风格”变得自然起来:直接写一句”用温柔一点的语气,语速稍慢”,模型据此生成。
最大的价值是表达空间几乎不受限。标签式给不了的中间地带、参考音频式说不清的定向调整,用自然语言都能描述出来,还能多个维度叠加。创意内容、角色配音这类需求发散的场景,它的上限最高。
代价是结果不稳定:同一句提示词两次生成可能不一样,换个说法效果也可能变。它更接近”沟通”而不是”设参数”,需要反复试,也很难写进自动化测试。上生产前务必评估这种波动是否可接受。
三种方式放在一起看
| 怎么用 | 可控粒度 | 稳定性 | 适合场景 | |
|---|---|---|---|---|
| 标签式 | 传一个预设的情感类别 | 粗,只有离散的几档 | 高,可复现可回归 | 客服播报、导航提示、固定话术 |
| 参考音频式 | 传一段目标语气的音频 | 中,整体像但难定向调 | 中,换文本后会有偏移 | 有声书、角色化配音、要”某种味道” |
| 自然语言提示式 | 写一句描述 | 细,可多维度叠加 | 低,同样输入结果会变 | 创意内容、试验期、人工挑选终稿 |
实际项目里三者常常混用:主干走标签保证下限,个别关键句用参考音频或提示词单独打磨。
一个绕不开的取舍
三种方式的对比之外,还有一条更底层的规律:可控性和自然度往往此消彼长——控制信号给得越硬,语音越容易僵。
原因不难理解。生成模型输出的是一个分布,而自然的人声本身带有随机性:同一个人把同一句话说两遍,停顿位置、音高曲线、气口长短都不会完全相同,正是这些细微的不一致让人听着像真人。每加一个控制条件,就相当于把模型往一个更窄的分布里推。条件叠得越多,可选的表达路径越少,输出越向某个”平均值”收敛——听感上标准、整齐,但也机械。
这解释了一个很多人踩过的坑:把情感强度拉满、语速语调全部锁死之后,语音反而更假了。它不是变差了,是变得过于确定了。合成音”像机器”的成因不止这一条,更完整的归因里还有韵律、停顿、声码器几个维度。
所以方向不是”控得越多越好”,而是只锁住业务必须保证的那几项,其余留给模型。品牌话术必须严肃,就锁情感类别、放开语速停顿;有声书要保持人物性格,就固定参考音频,句内起伏交给模型发挥。
情感要和文本内容对得上
还有一类问题跟参数无关:用播报腔读一句道歉。语义在示弱,语气在宣告,两者打架,听众第一反应是”这不是真心的”。选情感之前先看文本本身在说什么,比调任何数值都重要。
长文本的情感漂移
长内容通常要切分后分段合成,拼回去时容易出现前后语气不一致——上一段还平缓,下一段忽然激动。缓解办法是把情感设置在段间保持固定、控制每段不要过短、拼接处做短交叉淡化,段落停顿则显式插入静音而不是指望模型自己留。
与其调情感参数,不如先改文本
这条最实用:很多语气问题的根子在文本,不在参数。TTS 的前端本来就会做韵律预测,你把该有的语气词、标点、句式写进去,它自然会跟上。
- 把句号改成问号或感叹号,句尾语调立刻不一样;
- 加一个”其实""不过""嗯”,停顿和轻重就自然分布开了;
- 长句拆成短句,节奏感比强行调语速更自然;
- 该强调的地方独立成句,比给整句加”强调”标签精准得多。
改文本成本更低、效果往往更好,而且不会像强控制那样把语音推向僵硬。更细的语速与停顿手段见语速和停顿怎么调。
常见问题
问:三种方式能同时用吗?
一般可以叠加,但叠得越多结果越容易僵,而且冲突时的优先级各家实现不同,得实测。建议先只用一种把基线跑通,再逐项加。
问:为什么同样的情感参数,换一句文本效果就变了?
因为情感的表现依附于文本本身的韵律骨架。同一个”高兴”落在短感叹句和长陈述句上,可发挥的空间完全不同。这也是前面那条建议的由来——先把文本写对,参数才有稳定的作用面。
问:情感控制在流水线的哪一段?改前端有用吗?
情感主要体现在声学模型的输出上,但前端的韵律预测决定了它的骨架,所以改文本确实有用,而且往往最省力。至于端到端还是两段式,控制信号的注入方式有差别,但上面三条路的取舍逻辑是通用的。
相关阅读
本文讲的是语音合成领域的通用原理,不绑定某一个具体实现。 各家系统支持哪些情感类别、提示词怎么写、参数如何叠加,差异很大且会随版本变化,请以你所用系统的官方文档为准。 我们没有对文中提到的任何方案做过实测,因此不给延迟、音质评分一类的数字。涉及使用真人声音或语气样例时,请先确认授权范围。