Introduction¶
要解决什么¶
给 TTS 一个连续的情感强度旋钮。
现有的情感 TTS 大多只能选类别(高兴/悲伤/愤怒),给不了「七分悲伤」这样的强度, 更给不了「悲伤混一点惊讶」这样的复合情感。
本项目在 CosyVoice3 的 flow-matching 解码器上做速度场分解: 把速度 \(v\) 拆成语义分量与情感分量 \(A\),用标量 \(\alpha\) 连续缩放后者:
\[v_{\text{ctrl}} = v_{\text{neu}} + \alpha \cdot A\]
进一步的目标是情绪调色板 —— 多个情感按权重混合。
为什么值得做¶
- 连续强度是真实需求:有声书、游戏配音需要的是「渐渐激动起来」,不是情感开关
- 分解本身可解释:\(A\) 是一个可测量、可分析的对象,能回答「模型把情感编码在哪」
- 零训练成本的推理期控制:\(\alpha\) 是推理时的标量,不需要为每种强度训一个模型
与已有工作的关系¶
细节见 Related Work
- 相对 instruct 式控制(CosyVoice 自带):instruct 从文本通道注入情感, 我们从声学 token 通道注入 —— 二者正交,且 instruct 给不了连续强度
- 相对情感嵌入插值:我们在速度场而非嵌入空间操作,因而能利用 共享状态做 CFG 式外推(\(\alpha>1\))
现在走到哪了¶
主方法可用。但情绪调色板遇到两堵墙,且第二堵是方法论层面的:
- 长度失配:各情感的 token 长度差异中位 1.55×,而逐帧混合需要 ≲1.05。 已找到有效解(DTW 内容对齐,CER 降 8–12 倍), 但音质仍不可用(F7)
- 度量失效:现有情感分类器输出饱和的近 one-hot 分布, 结构上无法表达「部分情感」 —— 所有混合结果都无法判定成败
因此当前的诚实定位是:我们揭示了情绪调色板为什么难,并给出了必要条件; 「做出了可用的调色板」尚不成立。见 OPEN G7。