跳转至

M15 · 单路分解器:DiT1 + DiT2 一次前向出双速度

状态 ❌ 负结果(2026-08-28)——中立化支未能生成可用语音
一句话 单一情感 reference、单一 LLM token 序列;DiT1 出 v(不监督),级联 DiT2 分解出同一空间里的 \(v_A\)(情感)与 \(v_B\)(中立),\(v(\alpha)=(1-\alpha)v_B+\alpha v_A\)
上游 ← M14 §4.7:token 不一致是中段 α 音质塌陷的原因;共用骨架后塌陷消失
对照 v4 · M14-λ0(own 双路)

TL;DR

负结果:情感端可用,中立化支崩坏。

  • ❌ α=0 端 MOS 1.27(v4 3.74 / M14-λ0 3.69)——\(v_B\) 从纯噪声积分出的"中立语音" 不可用,整体 CER 0.34、SECS 无法计算
  • ✅ 情感端正常:α=1.0–1.5 的 MOS 2.81–2.97(≥v4 同段),delta 0.529、受控 7/12
  • 🔍 机制:\(\mathcal{L}_B\) 明显欠收敛(1.76→1.30,同预算下 M14 的 L_fm ≈0.45)—— "从情感条件凭空生成中立版"是生成任务而非回归任务,比双条件难一个量级; 探针 rank_A 5.4(双路方案 30+)、cos(A,GT) 0.71–0.84(M14 0.90–0.95)—— \(A\) 塌成低秩方向,分解质量全面低于双条件方案
  • 📌 判据回看:§4.7 那个"中段 α 塌陷"确实没有出现(MOS 沿 α 单调上升不再是 V 形), 同空间加减的思路本身兑现了——但代价是 \(v_B\) 端整体不可用,得不偿失

1 目的

双路推理的根本问题是两支条件不同、不在同一空间(M14 §4.7: own 双路中段 α MOS 塌到 1.30,共用 token 后无谷)。本实验把"分解"从推理时的条件工程 改为网络能力:单一前向内输出可直接加减的 \(v_A/v_B\)。

2 实验设置

2.1 架构

一条链(训练与推理同构):
  情感 reference ─→ LLM ─→ token(唯一骨架)
  DiT1(y, mask, μ, t, spks, cond) ─→ v          ∈ R^{80×K}   ← 不监督,联训
  DiT2(y, [cond‖v], μ, t, spks)   ─→ Δ ∈ R^{160×K} ─→ Δ_A, Δ_B
  v_A = v + Δ_A,   v_B = v + Δ_B                              ← 残差参数化
项 值
DiT1 CosyVoice3 DiT 原架构(331M),基座 flow.pt 初始化,权重放开
DiT2 同架构克隆(331M):v 沿通道并入 cond(cond 80→160),InputEmbedding.proj 320→400 维(v 对应列零初始化,其余列按原位复制);proj_out 80→160(整体零初始化);其余权重从基座 flow.pt 复制
输出参数化 残差:\(v_A = v+\Delta_A\)、\(v_B = v+\Delta_B\)。init 时 \(\Delta\equiv 0\) → 整个级联在任意 α 下 ≡ 基座模型;DiT1 从第 0 步经残差连接获得梯度(隐式目标为 \((u_e+u_n)/2\) 均值速度)
可训参数 ≈662M(两网全开;LLM / hift 冻结)
中间 v 无损失项

2.2 训练

数据复用 data/m13_cache(21,301 条,只取情感骨架侧:gen_token_e、 情感前缀 pre_token_e / pre_feat_e / xvec_e;中性前缀字段不使用)。每步:

1. 取 batch,单支输入:token = pre_token_e ⊕ gen_token_e,条件 = 情感前缀 + xvec_e
2. 采样 t ~ U[0.05, 0.95] 与 α ~ U[0, 1];
   插值目标 x_α = (1−α)·x1_neu + α·x1_emo(生成段;前缀段用 pre_feat_e)
3. CFM 构造 y = (1−(1−σ)t)·z + t·x_α       ← x_t 取自 α 混合轨迹,覆盖推理分布
4. v = DiT1(y, …);(v_A, v_B) = DiT2(y, v, …)
5. 损失(生成段):L = ‖v_A − u_e‖² + ‖v_B − u_n‖²,
   u_e = x1_emo − (1−σ)z,u_n = x1_neu − (1−σ)z
6. AdamW 联合更新 DiT1 + DiT2,grad_clip=1.0
参数 值
并行 DDP 4 卡 × per-rank batch 2(torchrun,全局 batch 8 不变——与 v4/M14 的步数、lr、梯度逐步等价)
epochs / 步数 6 / ≈12,768(全局 batch 8,样本见次数 ≈102k,对齐 v4 的 0.95×)
lr / 优化器 1e-5 / AdamW(两网同一学习率)
grad_clip / seed 1.0 / 1234
日志 每 100 步:L_A、L_B、grad_norm、K、‖v_A−v_B‖ 相关诊断(A_share / cos_A_B,A=v_A−v_B、B=v_B)
输出 outputs/m15/,每 epoch 存 ckpt

2.3 推理与评测

1. LLM 一遍(情感 reference)→ token;构造唯一一套 flow 输入(情感 prompt,自然音频)
2. 每个 Euler 步(10 步):v = DiT1(y);(v_A, v_B) = DiT2(y, v);
   生成段 v_ctrl = (1−α)·v_B + α·v_A,前缀段用 v
3. HiFT 声码
项 值
测试集 / 规模 p6_test_zh.jsonl,12 组 × 7 α = 84 条(同 M14 选样种子)
指标 同 M14(delta / 受控 / 负向 · CER · SECS · UTMOS 含 α=0 列)
对照 v4 · M14-λ0(own 双路)· M14 §4.7 单组三策略
探针 M5 A-结构探针,A = v_A − v_B(单前向即得,无需双条件)

3 资源

训练 DDP 4 卡(卡 0–3)约 2 小时;推理每步 DiT1+DiT2 级联两次前向,84 条约 20 分钟;评测 30 分钟;探针 20 分钟。

4 结果

🎧 M15 音频全量对照(v4 / M14-λ0 / M15 三臂 × 84 条)

4.1 主表

臂 delta 受控 负向 CER SECS MOS MOS@α=0
v4 0.454 6/12 1 0.043 0.724 2.95 3.74
M14-λ0(own 双路) 0.733 9/12 0 0.107 0.573 2.75 3.69
M15 0.529 7/12 3 0.340 无法计算 2.07 1.27

按 α 分列的 UTMOS:

0 0.25 0.5 0.75 1.0 1.25 1.5
v4 3.74 3.45 2.04 3.14 2.76 2.77 2.74
M14-λ0 3.69 2.41 1.29 2.06 3.21 3.32 3.31
M15 1.27 1.27 1.31 1.97 2.91 2.97 2.81

M14 的失败模式是中段塌陷(V 形,α=0.5 谷底);M15 的失败模式是中立端崩坏 (单调上升,α=0 谷底)——同空间加减消除了 V 形,但 \(v_B\) 端自身不可用。

4.2 训练曲线

M15 训练曲线

首 5 → 末 50
L_A(情感支) 1.294 → 0.825
L_B(中立化支) 1.755 → 1.297(M14 同预算 L_fm ≈0.45——差 ~3×,明显欠收敛)
A_share 0.014 → 0.057(GT 参照 0.095,未达)
grad_norm 末 50 均值 33.7(M14 约 3–6——级联梯度大一个量级)

4.3 探针

M14-λ0(双条件) M15(分解器)
rank_A 34.3 5.4(塌成低秩)
cos(A, x1_emo−x1_neu) 中位(t=0.1/0.5/0.9) 0.90 / 0.93 / 0.95 0.71 / 0.82 / 0.84
‖A‖/‖GT‖ 中位 0.92–1.02 0.72–0.87(收缩)
专一性 gap −0.022 −0.004(同样 ≈0)

5 结论

项 结论
同空间加减 ✅ 思路兑现:M14 的中段 α V 形塌陷在 M15 中不存在(MOS 沿 α 单调)
中立化支 ❌ 失败。"从情感条件凭空生成中立版"是生成任务而非回归任务:L_B 欠收敛 3×、A 塌成 rank 5.4、α=0 端 MOS 1.27 不可用
净判定 负结果。分解器换掉了 M14 的失败模式(中段塌陷 → 中立端崩坏),没有净收益
后续 → M15-E 五路探索(条件dropout / 随机重置诊断 / MLP head / 课程式 / 续训加权)
记录 残差初始化与 DDP 4×2 工程上均验证可用(init 级联 ≡ 基座、逐步等价),可复用于后续实验

讨论