语音合成的情感和语气怎么控

2026-08-24

同一句”好的,我这就去办”,可以说得干脆、说得敷衍、说得为难。文字一模一样,语气完全不同。让合成语音带上正确的情绪,是 TTS 里最难量化也最容易被低估的一环。

情感与语气的控制发生在三段流水线声学模型这一段——它决定音高走向、时长分布和能量起伏,也就是我们听感上说的”语气”。但控制信号从哪来、以什么形式给,工程上主要有三条路。

标签式:从预设的类别里挑一个

最直接的做法是把情感做成一个可选参数:调用时指定”高兴""悲伤""严肃”之类的类别,模型在训练时就见过带这些标注的数据,推理时按标签走。

好处非常实在:结果可复现、可枚举、可测试。能列出一张表说明每种场景用哪个值,能逐个回归,出了问题也容易定位。客服播报、有声导览这类需要稳定输出的场景,标签式几乎是唯一省心的选择。

问题也同样明显:粒度太粗。真实的语气是连续的,标签是离散的。一句”我知道了”可以有从平静到隐忍到不耐烦的无数个中间状态,而标签只给你三五个孤立的点,中间地带表达不了。更麻烦的是同一个标签在不同句子上的表现并不一致——“高兴”用在感叹句上很自然,用在长陈述句上就容易变成夸张的播音腔。

另外提醒一句:各家实现支持哪些情感类别差别很大,而且会随版本变化,别把某一份类别清单当成通用标准。

参考音频式:给一段样例让模型模仿

第二条路是不描述、直接示范:提供一小段目标语气的音频,模型从中提取风格信息,再用这个风格去说新的文本。这类做法通常被称为风格迁移

机制上它和零样本音色克隆同源——都是从参考音频里抽出一段嵌入表示,作为条件送进声学模型,区别只在于抽的是”音色”还是”说话方式”。

表现力是三者里最强的,因为参考音频携带的信息远比一个标签丰富:语速的细微变化、句尾的拖腔、气口的位置,都可能被一并学走。想要一种说不清但听得出的味道时,找一段样例比写十行描述有效得多。

代价是不易精确复现。很难保证换一句文本后风格还完全一致,也很难做”再温柔一点”这样的定向微调——想调整只能换参考音频,而换了之后变的往往不止一处。还有一个常被忽略的坑:音色可能跟着风格一起被带过来。只想借语气、不想换发音人,就要留意参考音频的说话人是谁。涉及真人声音时,授权问题必须走在技术之前。

自然语言提示式:用一句话描述你要什么

近年一类做法把语音离散化成 token、用语言模型的方式来预测,这让”用提示词控制风格”变得自然起来:直接写一句”用温柔一点的语气,语速稍慢”,模型据此生成。

最大的价值是表达空间几乎不受限。标签式给不了的中间地带、参考音频式说不清的定向调整,用自然语言都能描述出来,还能多个维度叠加。创意内容、角色配音这类需求发散的场景,它的上限最高。

代价是结果不稳定:同一句提示词两次生成可能不一样,换个说法效果也可能变。它更接近”沟通”而不是”设参数”,需要反复试,也很难写进自动化测试。上生产前务必评估这种波动是否可接受。

三种方式放在一起看

怎么用可控粒度稳定性适合场景
标签式传一个预设的情感类别粗,只有离散的几档高,可复现可回归客服播报、导航提示、固定话术
参考音频式传一段目标语气的音频中,整体像但难定向调中,换文本后会有偏移有声书、角色化配音、要”某种味道”
自然语言提示式写一句描述细,可多维度叠加低,同样输入结果会变创意内容、试验期、人工挑选终稿

实际项目里三者常常混用:主干走标签保证下限,个别关键句用参考音频或提示词单独打磨。

一个绕不开的取舍

三种方式的对比之外,还有一条更底层的规律:可控性和自然度往往此消彼长——控制信号给得越硬,语音越容易僵。

原因不难理解。生成模型输出的是一个分布,而自然的人声本身带有随机性:同一个人把同一句话说两遍,停顿位置、音高曲线、气口长短都不会完全相同,正是这些细微的不一致让人听着像真人。每加一个控制条件,就相当于把模型往一个更窄的分布里推。条件叠得越多,可选的表达路径越少,输出越向某个”平均值”收敛——听感上标准、整齐,但也机械。

这解释了一个很多人踩过的坑:把情感强度拉满、语速语调全部锁死之后,语音反而更假了。它不是变差了,是变得过于确定了。合成音”像机器”的成因不止这一条,更完整的归因里还有韵律、停顿、声码器几个维度。

所以方向不是”控得越多越好”,而是只锁住业务必须保证的那几项,其余留给模型。品牌话术必须严肃,就锁情感类别、放开语速停顿;有声书要保持人物性格,就固定参考音频,句内起伏交给模型发挥。

情感要和文本内容对得上

还有一类问题跟参数无关:用播报腔读一句道歉。语义在示弱,语气在宣告,两者打架,听众第一反应是”这不是真心的”。选情感之前先看文本本身在说什么,比调任何数值都重要。

长文本的情感漂移

长内容通常要切分后分段合成,拼回去时容易出现前后语气不一致——上一段还平缓,下一段忽然激动。缓解办法是把情感设置在段间保持固定、控制每段不要过短、拼接处做短交叉淡化,段落停顿则显式插入静音而不是指望模型自己留。

与其调情感参数,不如先改文本

这条最实用:很多语气问题的根子在文本,不在参数。TTS 的前端本来就会做韵律预测,你把该有的语气词、标点、句式写进去,它自然会跟上。

  • 把句号改成问号或感叹号,句尾语调立刻不一样;
  • 加一个”其实""不过""嗯”,停顿和轻重就自然分布开了;
  • 长句拆成短句,节奏感比强行调语速更自然;
  • 该强调的地方独立成句,比给整句加”强调”标签精准得多。

改文本成本更低、效果往往更好,而且不会像强控制那样把语音推向僵硬。更细的语速与停顿手段见语速和停顿怎么调

常见问题

问:三种方式能同时用吗?

一般可以叠加,但叠得越多结果越容易僵,而且冲突时的优先级各家实现不同,得实测。建议先只用一种把基线跑通,再逐项加。

问:为什么同样的情感参数,换一句文本效果就变了?

因为情感的表现依附于文本本身的韵律骨架。同一个”高兴”落在短感叹句和长陈述句上,可发挥的空间完全不同。这也是前面那条建议的由来——先把文本写对,参数才有稳定的作用面。

问:情感控制在流水线的哪一段?改前端有用吗?

情感主要体现在声学模型的输出上,但前端的韵律预测决定了它的骨架,所以改文本确实有用,而且往往最省力。至于端到端还是两段式,控制信号的注入方式有差别,但上面三条路的取舍逻辑是通用的。

相关阅读


本文讲的是语音合成领域的通用原理,不绑定某一个具体实现。 各家系统支持哪些情感类别、提示词怎么写、参数如何叠加,差异很大且会随版本变化,请以你所用系统的官方文档为准。 我们没有对文中提到的任何方案做过实测,因此不给延迟、音质评分一类的数字。涉及使用真人声音或语气样例时,请先确认授权范围。

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