EmoRES-TTS: Residual-Enhanced Vector Steering for Emotional Speech Generation
Kuan-Po Huang, Haohe Liu, Puyuan Peng, Haibin Wu, Zhaoheng Ni, Hung-yi Lee, Jinwon Lee, Neha Chachra
cs.SD, cs.CL, eess.AS
2026-09-30
把情绪转向向量拆成共享位移和类别残差,残差加强到3倍。IEMOCAP上ρ相对升119%,听者主情绪命中相对升35%。
情绪可控 TTS 已经能吃标签、自然语言指令或情绪 embedding,但原生条件经常推不动。同一句话要听起来像在生气或难过,模型往往只给一点浅浅的风格,听感仍靠近中性。对话代理、有声书、配音都需要这件事成立,还不能把可懂度、说话人身份和自然度赔光。
再训一轮、再标一批情绪语音,贵,也难覆盖混合情绪。vector steering 冻结模型,把「情绪语音减中性语音」的激活差当成方向,推理时加进隐状态。CoCoEmo 把这条路做到了 LM-based TTS 上,但每个情绪向量被当成一根不可拆的棍子,只由一个全局强度 α 缩放。离中性的位移和指向具体情绪的对比被绑成同一比例。要把类别对比拧大,全局 α 会把共享段一起放大,两件事被绑在同一只旋钮上。
情绪向量 ve 是该情绪平均激活减去中性平均激活。绕着所有非中性情绪均值的质心,它可以拆成两段。
共享分量像把旋钮从「平淡」拧到「带情绪」,残差像选哪一种。CoCoEmo 用同一只旋钮拧两件事。
EmoRES 给两段各自一个系数:vRES = λc × 共享 + λr × 残差。λc = λr = 1 时质心抵消,精确退化成 CoCoEmo。混合情绪时共享系数固定,残差按请求比例加权。加完后把隐状态范数拉回原长度,只改方向,避免大 α 把幅度顶飞。
表里默认 λc = 1、λr = 3,各方法向量范数对齐到原始 ve 的层均长度,比的是方向不是谁推得更猛。转向打在 attention 输出,层用 CoCoEmo 的情绪可分性 top-K:IndexTTS-2 semantic LM 的 1、6、8 层,CosyVoice2 text-to-token LM 的 14、17 层。向量从 ESD、CREMA-D、RAVDESS 成对句离线提取,同说话人、同文本,过 SER 与音质门。骨干冻结,原生条件保持默认。
超参只在 CREMA-D 上调。IEMOCAP 不贡献说话人、不参与构向量。下列数字一律 α = 5、λc = 1。
| 骨干 | 指标 | No-steer | CoCoEmo | EmoRES (λr=3) |
| IndexTTS-2 | ρ | — | 22.00 | 48.13 |
| IndexTTS-2 | H-Rate | — | 64.34 | 77.29 |
| IndexTTS-2 | TEP | 30.76 | 36.22 | 41.11 |
| CosyVoice2 | ρ | — | 39.13 | 52.10 |
| CosyVoice2 | H-Rate | — | 70.90 | 77.82 |
IEMOCAP 上 ρ 提升 26.13 / 12.97 点,相对 118.8% / 33.1%;H-Rate 提升 12.95 / 6.92 点,相对 20.1% / 9.8%。IndexTTS-2 的 E-SIM 从 65.32 到 67.67。S-SIM 全面高于 CoCoEmo,WER 多数更低。CREMA-D 上 ρ 从 25.24 到 45.87(IndexTTS-2)、从 32.48 到 51.94(CosyVoice2)。原生条件单独用时 TEP 和 E-SIM 都弱于加转向。
人工听辨(IEMOCAP,每条至少 9 人):
| 骨干 | Dom-hit | Fidelity | 自然度折算偏好 |
| IndexTTS-2 | 54.72% → 73.89% | 60.05% → 66.32% | 63.80% |
| CosyVoice2 | 58.18% → 77.88% | 50.80% → 59.60% | 60.32% |
Dom-hit 相对最高升 35.0%,Fidelity 相对最高升 17.3%。无转向时 IndexTTS-2 的 Dom-hit 只有 17.78%。IndexTTS-2 上 50.83% 的 pairwise 直接选 EmoRES,25.93% 平局,23.24% 选 CoCoEmo。
消融对齐范数后只改 λc、λr。只加共享,ρ 掉到 5.30% / 7.20%,IndexTTS-2 的中性后验从 36.51% 压到 7.49%,会离开中性但对不准类别。只加残差,ρ 和 H-Rate 升,TEP、E-SIM 低于两段合用。等权仍不是最优,λr = 3 才是表里最好的一档;λr > 3 收益递减。emotion2vec 空间里(IndexTTS-2,486 条单情绪):无转向 probe 56.9%、silhouette -0.035;CoCoEmo 82.5% / 0.335;EmoRES 86.9% / 0.460。
给冻结的 LM-based TTS 一条推理期旋钮:不再标情绪数据,不学新子空间,不改权重。CoCoEmo 已经能跑的栈上,残差拧到约 3 倍、共享保持 1,混合情绪排序和听者主情绪命中会动一截,自然度 pairwise 折算偏好最高 63.80%。
这是几何再加权,不是新架构。有用的场景很窄:骨干冻结、原生情绪条件偏弱、目标是混合比例。对自建转向的人,这条分解比 λr = 3 更值钱:共享管有没有情绪,残差管是哪种。
作者写明的后续:句内情绪变化需要 token 或 segment 级控制;更多情绪、语言、语料和 TTS 结构还没有验证。
实验只有 angry、happy、sad、surprise 四类,两套英文骨干。λr = 3 和层号在 CREMA-D 上选定,而 CREMA-D 也在提取库里,开发集数字有泄漏风险。真正干净的留出集是 IEMOCAP。客观分绑在 SER 后验和 emotion2vec 上,向量提取也过 SER 门,同一类模型既造方向又打分。人工分部分对冲了这一点,CosyVoice2 的 Fidelity 绝对水平仍只有 59.60%。随机方向对照在附录,正文没有数字。原生条件一直开着,测的是条件加转向。没有和再训练方案比成本或上限。附录还提到单情绪请求、关掉原生条件、换 SER,正文同样没给数字。