M9 · 不训练的模型能不能直接用 α 调情感?¶
| 状态 | ⚠️ 假设被推翻 |
| 日期 | 提出 2026-08-15,按用户更正重写并跑完 2026-08-17 |
| 一句话 | 别的论文的模型不训练也能用 α 调情感(受控组数还更多),我们的训练改善的是可懂度而非情感可控性 |
| 上游 | ← 用户想法「用其他论文里面的模型不训练直接加权来调节 alpha 情感,佐证我们训练的有效」 |
| 下游 | → 必须收窄 novelty claim(OPEN G7) |
编号变更(2026-08-18)
本页原为 M7。用户澄清 M7 想问的是另一件事 —— 对有显式情感 embedding 的模型 施加 α(见 M7)。本轮已完成的实验改编号为 M9, 内容与结论不变。
通常实验 ID 一经发布不重编,此处是例外: 权衡后认为「保住一份已完成、且产出了 F11 的记录」 优先于「编号绝不变动」。
本实验推翻了我们的核心假设
预期是「不训练就调不动」。实测恰好相反 —— 未训练的模型受控组数更多。 这正是 proposal §7 里标注的「打脸风险」,现在兑现了。
1 动机¶
我们的 DFD 由两部分组成:
- 机制:同一个 \(x_t\) 上跑两遍 DiT,\(v_{\text{ctrl}} = v_{\text{neu}} + \alpha(v_{\text{emo}}-v_{\text{neu}})\)
- 训练:在 ESD 平行对上微调 flow decoder(53,700 步)
机制是通用的 —— 任何 flow-matching TTS 都能这么算。那第 2 步到底有没有用?
2 假设¶
H:α 控制的有效性依赖我们的微调。未经训练的模型施加同样的 α, 情感强度不随 α 单调变化(或远弱于我们的模型)。
3 设计¶
只改模型,其余全部对齐。
| 自变量 | 模型(3 档) |
| 控制量 | α 机制、p6_test_zh、α∈{0,.25,.5,.75,1,1.25,1.5}、seed 1234、eval_suite 原口径 |
| 判据 | 受控组数(delta>0.5) 为主(见 M4 的教训:delta 均值会被近零组带跑) |
| n | 12 组 × 7 个 α = 84 条/档 |
| 档 | 模型 | 论文 | 我们训练过? |
|---|---|---|---|
cv2 |
CosyVoice2-0.5B | CosyVoice 2(另一篇论文) | ❌ |
cv3_frozen |
CosyVoice3 基座 | CosyVoice 3 | ❌ |
cv3_v4 |
CosyVoice3 + v4 | 本工作 | ✅ |
4 运行¶
三档各 84 条,卡 7,0 报错(接口适配见 §7)。5 结果¶
定量(n=12 组/档)¶
| 档 | 受控组>0.5 | 失控<0.02 | 负 delta | CER ↓ | SECS | MOS | 饱和率 |
|---|---|---|---|---|---|---|---|
cv2(他方,未训练) |
7/12 | 4 | 0 | 0.039 | 0.748 | 3.37 | 94% |
cv3_frozen(未训练) |
6/12 | 6 | 0 | 0.034 | 0.759 | 3.28 | 93% |
cv3_v4(我们的) |
5/12 | 5 | 1 | 0.029 | 0.754 | 3.24 | 95% |
汇总口径:mono 0.847 / 0.861 / 0.861;delta 均值 0.553 / 0.468 / 0.382。 「饱和率」= 情感分落在 <0.05 或 >0.95 的比例。
定性 —— 直接听¶
同一句(0001_text00000)、同一情感(Angry)、同种子:
| α=0(中性端) | α=1(情感端) | |
|---|---|---|
| cv2(他方,未训练) | ||
| cv3_frozen(未训练) | ||
| cv3_v4(我们的) |
三档都听得出 α=0 → α=1 的情感变化。 未训练的两档并没有「调不动」。
6 结论¶
H 被推翻。 三条读法,按可靠性排序:
6.1 α 机制不需要我们的训练 —— 这是稳健结论¶
受控组数 7 / 6 / 5,未训练的反而更多。共享状态速度混合是 flow-matching 的 通用性质(与 CFG 同构),不依赖任何针对性微调。
6.2 我们的训练改善的是可懂度,不是情感可控性¶
CER 呈严格单调:cv2 0.039 > cv3_frozen 0.034 > cv3_v4 0.029。
在 α 扫描(含 α>1 外推)下,微调过的模型输出更清楚。这是训练带来的、可测的收益 ——
但它不是我们原本主张的那个收益。
6.3 ⚠️ 「情感可控性没差别」这个结论本身也受限¶
三档的饱和率都是 93–95% —— F5 说的问题在这里同样成立。 指标几乎只输出 0 或 1,它分辨不出「调得顺不顺」,只能分辨「有没有跳过去」。
所以准确的表述是:
在这把尺子下,训练与否对情感可控性没有可检测的差异。 不是「训练没用」,而是「这个指标测不出训练在情感维度上的作用」。
6.4 口径边界¶
cv2vscv3_v4混杂了模型代次与有没有训练两个变量 —— 所以cv3_frozenvscv3_v4才是干净的因果对(6/12 vs 5/12,差 1 组,n=12,属噪声)- n=12 组,按约定属弱样本量; 定性结论(未训练也能调)可信,具体名次不可信
7 坑 —— 跨模型复用代码踩了三层接口差异¶
以为「estimator 签名一致就能原样跑」,实际差异分三层,逐层暴露:
| 层 | 差异 | 处理 |
|---|---|---|
| estimator | ✅ 签名相同 (x, mask, mu, t, spks, cond, streaming) |
无需改动 |
| flow 外壳 | CV3 input_embedding → pre_lookahead_layer → repeat_interleave(2)CV2 input_embedding → encoder(内含 ×2) → encoder_proj |
写 build_flow_inputs_cv2,逐行对齐 CV2 自己的 inference() |
| 声码器 | CV3 inference(speech_feat, finalize)CV2 inference(speech_feat, cache_source) |
按 inspect.signature 分派 |
| LLM prompt | CV3 断言含 <|endofprompt|>;CV2 用 Qwen2LM 无此约束 |
只对 CV3 加 PROMPT_PREFIX |
教训:接口"看起来一致"只说明最内层一致。跨模型复用要逐层验证, 而且要用目标模型自己的推理路径当参照,不能凭签名相同就假定行为相同。
→ 提炼进方法论 §5.8。
8 引出¶
→ novelty claim 必须收窄。 不能再说「只有我们的可分离 \(v\) 能做到」。 可站住的表述: - 「共享状态速度混合是通用机制;我们刻画了它的行为边界」 (F1/F3/F9/F10) - 「我们的微调在 α 扫描下改善可懂度」(CER 0.039→0.029,单调) → OPEN G7 从「要不要换重心」变成「必须换」。