跳转至

M12 · TSM 等长对 + 完整双路:去掉 DTW 的缺陷

状态 ✅ 完成(2026-08-27)
一句话 用保音高变速(TSM)把中性录音对齐到情感时长,两支各用各的 token 与 GT训练;推理走完整双路(LLM 跑两遍),末端用多种 resize 方式对齐长度
上游 ← M10 的 α=0 音质代价(UTMOS 3.74→3.22,DTW 帧间插值所致)· 用户提出 TSM 方案(2026-08-27)
对照 M10 λ=0(DTW 目标 + 共享 token)

TL;DR

H1 部分通过 / H2 通过 / H3 有排序,外加一个计划外的强发现。

  • ✅ TSM 训练目标修复了 DTW 的代价(E1 vs M10-λ0):CER 0.066→0.046、SECS 0.660→0.705、 MOS@α=0 3.17→3.35 —— 三项全部向 v4 回收大半,长度断言 0 失败
  • 🚨 计划外发现:推理时把参考 prompt 换成 TSM 音频是毁灭性的: 仅此一项改动(E1→E2)就让 MOS@α=0 3.35→1.36、CER 0.046→0.220。 E3–E5 首轮全军覆没即因此;换回自然 prompt(E3n–E5n)后 MOS@α=0 回到 3.48–3.81。 训练侧 TSM 前缀无害(E1 就是这么训的),坏的只是推理时的 TSM 条件
  • ✅ 完整双路可行:E3n/E4n/E5n 的 delta 0.586、受控 7/12、负向 0 —— 与 M10 持平; E4n 的 MOS@α=0 3.81 超过 v4 的 3.74
  • ⚠️ 双路的代价在可懂度:CER 0.107–0.152(E1 只有 0.046)、SECS 0.46–0.57 —— 中性支 resize 伤内容
  • 📊 H3 排序:token 重采样(E3n) ≈ μ插值(E5n) > 状态warp(E4n)(后者 MOS@α=0 最高但其余全最差)
  • 规模:缓存 21,301 条(断言失败 0)· 训练 2×10,640 步 · 推理评测 8 臂 672 条 wav · 探针 36 测量

1 动机:M10 的两个残留问题

  1. DTW 目标的音质代价。M10 的 x1_neu 是中性 mel 经 DTW 路径做帧间线性插值得到的 —— log-mel 上插值抹糊瞬态,α=0 的 UTMOS 从 3.74 掉到 3.22(§8.5)。
  2. 共享 token 抹掉了节奏情感。M10 两支共享情感的 gen_token, 中性支被迫用情感的时序骨架。但 token 的节奏本身就是情感的体现 (LLM 决定说多快、哪里停顿)——共享骨架等于把这部分信号焊死。

用户决策(2026-08-27):回到完整双路。训练两支各用各的 token 与 GT; 推理 LLM 跑两遍,长度不一致在末端用 resize 解决(成本低,可多方案并测)。

2 设计

2.1 数据构造(替代 DTW)

对每个 (key, emotion) 训练对:

中性录音波形 ──TSM(保音高变速)──> 时长 = N_e/25 秒(精确到 40ms 整数倍)
      └──> 重新过 speech tokenizer → gen_token_n(assert 恰好 N_e 个)
      └──> 重新提 mel             → x1_neu    (assert 恰好 2N_e 帧)
  • 情感支完全不动(原始录音的 token + mel)
  • 两支都是"真实音频 + 自洽的 (token, mel) 对"——M10 的中性支是 「情感 token + 插值 mel」,两样都不是真的;这是本实验最大的改进
  • 中性前缀录音同样 TSM 到情感前缀的时长 → 两支总长相等、 RoPE 绝对位置对齐(DiT 用 arange(seq_len) 的绝对位置,前缀不等长时 生成段在两支中落在不同位置,A 里会混入纯位置分量)
  • 形变过滤沿用 M10:|N_e/N_n − 1| ≥ 0.40 剔除

2.2 TSM 方法选择(冒烟已完成 ✅)

50 条 (key,emo) 对、比例覆盖 0.6–1.7×,两种方法对比:

方法 token 数精确命中 CER(原始 0.0066) 听感判定
librosa 相位声码器 50/50 0.0137 ❌ 用户否决(发虚)
pytsmod WSOLA 50/50 0.0262 未送听
直接缩放(重采样) —(时长精确) — ❌ 变调,说话人身份被破坏
Rubber Band R3(追加) 50/50 0.0051 ← 低于原始 ⬜ 待用户判定(§4)

~~选 librosa 相位声码器~~ → 本轮 M12 用的是相位声码器(追加发现时训练已完成)。 R3 重建已立项为 M13(含 λ 平行扫描),主要预期收益: E1 的 MOS@α=0(3.35)继续向 v4(3.74)回收——§5.3 已证明推理条件端对 TSM 伪影极其敏感, 训练目标端更干净的 mel 理应同样受益。

2.3 训练:两个臂(λ_ortho = 0,8 卡中的卡 0/1)

臂 中性支 token 中性支目标 隔离的变量
M12a 共享情感 gen_token_e(= M10 做法) x1_neu(TSM) vs M10-λ0:只有 DTW→TSM
M12b 自己的 gen_token_n x1_neu(TSM) vs M12a:只有共享→自有 token

其余与 M10 完全相同:同起点 v4_epoch5.pt、epochs 5、batch 8、lr 1e-5、seed 1234、 共享 \(t\)、共享生成段噪声(\(K_g\) 两支相等,天然可共享)。 λ 取 0 依据 M11a(正交正则与情感可控性无关)。

2.4 推理:五个评测臂

LLM 跑两遍时长度会不同(B0:采样噪声地板 1.288×),在末端用三种 resize 对齐:

臂 ckpt token 来源 长度对齐方式
E1 M12a 共享情感 token 无需(= M10 评测配置,逐项可比)
E2 M12a 共享情感 token + 中性参考TSM 到情感参考时长(测前缀对齐的作用)
E3 M12b 双 LLM 中性 token 最近邻重采样到 \(N_e\)(C1 式)
E4 M12b 双 LLM 状态 warp 混合(D0 式,\(K^\*=\alpha K_e+(1-\alpha)K_n\),时长随 α 连续变化)
E5 M12b 双 LLM 中性 \(\mu\) 生成段线性插值到 \(2N_e\)(C2 式)

E3/E4/E5 共用同一批 LLM 输出(种子固定:情感 seed、中性 seed+100), 中性参考均 TSM 到情感参考时长(与训练一致)。 评测同 M10:P6 held-out 中文、12 组 × 7 α、eval_suite 原口径。

2.5 判据

假设 指标 通过条件
H1 TSM 修复 α=0 音质 MOS@α=0 E1 相对 M10-λ0 的 3.17 显著回升(目标 ≥3.5;v4 基线 3.74)
H2 自有 token 保住情感控制 delta / 负向组数 E3–E5 不劣于 E1
H3 resize 方式的排序 全指标 E3 vs E4 vs E5 互比,选出后续默认

⚠️ 口径警告继续生效:delta 近二值(M10 §8.5), 读数以「负向组数、MOS@α=0、CER」为主,delta 只作参考。

3 已知不确定点(跑前登记)

  1. 推理端 token 重采样 vs 训练端重新 tokenize 的分布差:训练的 gen_token_n 是 TSM 音频重新过 tokenizer 的真实序列;推理 E3 是对 LLM 输出重复/丢弃。 真实慢速语音的 token 不是同一 token 复制两遍。若 E3 差,这是首要怀疑对象 (完全对称的替代:中性支先合成音频→TSM→重新 tokenize,贵 2.5×,本轮不做)。
  2. xvec_n 用 TSM 后音频重提的 campplus 向量(frontend 一并输出)。 campplus 对时长鲁棒,预期无影响,但未单独验证。
  3. E4 在 α>1 时权重外推(\(w_{neu}=1-\alpha<0\)),K* 随之外推。 M3 的 α 扫描已用过同机制(时长连续变化未垮),但那是在基座模型上。
  4. 相位声码器的"phasiness" 冒烟 CER 只涨 0.007,但 UTMOS 未在冒烟中测—— 最终以 E1 的 MOS@α=0 为准。
  5. 训练两臂 λ=0 单臂无正交正则对照——依据 M11a 的结论省略,若被质疑需补。

4 TSM 效果定性展示

6 个样本覆盖压缩/拉伸全区间(比例 = 情感时长 / 中性时长,即 TSM 的目标倍率)。 2026-08-27 追加:用户听感否决相位声码器(发虚)与直接缩放(变调)后, 换 Rubber Band R3 引擎(pylibrb,ENGINE_FINER —— Audacity/Ardour 同款专业变速)。 冒烟 50 条:token 50/50 精确命中,CER 0.0051,低于原始录音的 0.0066 —— 三种方法里唯一不伤可懂度的。

倍率 文本 中性原始 相位声码器(旧) Rubber Band R3(新候选) 直接缩放(变调) 情感原始
0.60× 「哪天我也许得和他谈谈。」
音高 +8.9 半音
0.80× 「但是有时夏天比其它季节更迷人。」
音高 +3.7 半音
0.95× 「他们将于今年夏天结婚。」
音高 +0.9 半音
1.05× 「我遇到了一位漂亮的女孩。」
音高 −0.8 半音
1.25× 「是个冰淇淋,桃花确实很漂亮。」
音高 −3.9 半音
1.55× 「如果她拒绝我,我会死的。」
音高 −7.6 半音

冒烟定量(50 条):token 数精确命中 50/50;CER 0.0066 → 0.0137; 全量构建(21,301 条):长度断言失败 0 例。

4.1 数据构建结果

数
保留 21,301(M10 为 25,207)
形变过滤(≥40%) 1,583(6.9%,与 M10 的 6.3% 一致)
raw wav 缺失 4,012 —— 说话人 0012/0013/0014 的原始 wav 在两个卷上都不存在(迁移前即缺,esd_features 里有其特征但无音频)。M12 因需重新走 tokenizer 而受此限,M10 只用特征缓存故不受影响
TSM 断言失败(token 数 ≠ N_e 或 mel ≠ 2N_e) 0

与 M10 的训练集因此不完全相同

M12 比 M10 少 3 个说话人(17 vs 20)。评测集 P6 不含这三人,直接影响有限, 但「M12 vs M10」的对比里混入了这个次要变量,已记入 §3 不确定点。

5 结果

5.1 总表(P6 held-out 中文,12 组 × 7 α = 84 条/臂)

臂 ckpt 推理 delta 受控 负向 CER SECS MOS MOS@α=0
v4 基线 v4 旧 0.454 6/12 1 0.043 0.724 2.95 3.74
M10-λ0 DTW+共享tok 旧 0.579 7/12 0 0.066 0.660 2.85 3.17
E1 M12a 旧 0.308 5/12 2 0.046 0.705 2.93 3.35
E2 M12a 旧+TSM前缀 0.616 7/12 0 0.220 0.574 2.30 1.36
E3 M12b 双LLM+token重采+TSM前缀 0.577 7/12 0 0.114 0.529 2.22 1.59
E4 M12b 双LLM+状态warp+TSM前缀 0.579 7/12 1 0.133 0.441 1.65 1.49
E5 M12b 双LLM+μ插值+TSM前缀 0.563 6/12 0 0.111 0.531 2.21 1.52
E3n M12b 双LLM+token重采+自然前缀 0.586 7/12 0 0.112 0.567 2.61 3.55
E4n M12b 双LLM+状态warp+自然前缀 0.586 7/12 0 0.152 0.465 2.06 3.81
E5n M12b 双LLM+μ插值+自然前缀 0.586 7/12 0 0.107 0.563 2.57 3.48

(E3n–E5n 为发现 E2 问题后补跑的自然 prompt 版本,除 prompt 外与 E3–E5 完全相同。)

5.2 H1:TSM 训练目标 —— 修复成立,幅度未到目标线

E1 与 M10-λ0 唯一的差别是训练目标从 DTW 插值换成 TSM 真实提取(推理完全相同):

M10-λ0 E1 v4
CER 0.066 0.046 0.043
SECS 0.660 0.705 0.724
MOS@α=0 3.17 3.35 3.74

M10 引入的三项代价被回收了 55–85%。MOS@α=0 未到预注册的 3.5 线(差 0.15), 判为部分通过——方向确凿,幅度略欠。

E1 的 delta 0.308 看似崩塌,逐组看是二值指标的双向翻转 (0002_text00020/Angry 1.000→0.000、0002_text00150/Angry −0.004→+0.708、 0002_text00120/Angry 两端同时被判反)——G1 口径问题的又一例, 以受控数(5 vs 6/12)读作情感控制与 v4 同层,无可检测差异。

5.3 计划外发现:TSM prompt 在推理端是毁灭性的

E1→E2 唯一的改动是把中性参考 prompt 换成 TSM 后的音频:MOS@α=0 3.35→1.36,CER 0.046→0.220。 E3–E5 vs E3n–E5n 重复出同样的差(MOS@α=0 1.5 档 → 3.5 档)。

机制解读:推理时 prompt mel 作为 in-context 条件,模型延续 prompt 的声学风格—— 相位声码器的"发虚"被当成风格复制了。而训练时的 TSM 前缀无害(E1 就是用 TSM 前缀训练的, 自然 prompt 推理完全正常):训练只把它当回归条件,不做风格延续。

操作结论:TSM 只能用于构造训练目标,绝不能出现在推理的条件里。 (§2.1 里"前缀 TSM 保 RoPE 对齐"的推理端对应设计因此作废;训练端保留无妨。)

5.4 H2/H3:完整双路可行,代价在可懂度

E3n/E4n/E5n 三臂 delta 全部 0.586、受控 7/12、负向 0 —— 情感控制与 M10 持平, 且 E4n 的 MOS@α=0 = 3.81,超过 v4(双 LLM 下中性支真的是"自己说的中性话")。

代价集中在内容:CER 0.107–0.152(共享 token 的 E1 只有 0.046),SECS 0.46–0.57。 中性支 token 被重采样/状态被 warp 之后,两支在逐帧混合时内容不完全对齐,可懂度受损。

H3 排序:

E3n token重采 E5n μ插值 E4n 状态warp
CER 0.112 0.107 0.152
SECS 0.567 0.563 0.465
MOS 2.61 2.57 2.06
MOS@α=0 3.55 3.48 3.81

E3n ≈ E5n 为可用档,E4n 只在 α=0 端占优(其时长随 α 连续变化的特性保留观赏价值, 综合质量最差)。后续默认推荐 E3n(token 重采样)——实现最简单、指标不输。

5.5 训练侧与探针

L_fm_emo 末50 L_fm_neu 末50 A_share cos_A_B
M10-λ0 0.4505 0.4633 0.0376 −0.221
M12a 0.4683 0.5119 0.0771 −0.289
M12b 0.4602 0.4483 0.0789 −0.290
  • M12b 的 L_fm_neu 是三者最低——自有 token 与自有目标自洽,中性支好学了 (M12a 的中性支要用情感 token 去拟合 TSM 中性 mel,最难学,0.5119)
  • A_share 翻倍(0.038→0.077~0.079):两支条件真正不同了,A 承载的差异变大
  • 探针(m12_b,36 测量):情感专一性依旧缺席 (同情感/异句 0.2028 vs 同句/异情感 0.2367,gap −0.034)—— 与 v4/M10 同号,F6 的结论在完整双路下仍成立

6 结论

项 结论
H1 ⚠️ 部分通过。DTW 三项代价回收 55–85%(CER 0.066→0.046、SECS 0.660→0.705、MOS@α=0 3.17→3.35),未到 3.5 预注册线
H2 ✅ 通过。完整双路的情感控制与 M10 持平(0.586/7/0),E4n 的 α=0 音质还超了 v4
H3 ✅ E3n(token 重采样)为默认;E5n 相当;E4n 仅 α=0 占优、综合最差
计划外 🚨 TSM 禁止进推理条件(§5.3)——只能用于训练目标构造
遗留 双路的 CER 代价(0.046→0.11)未解决;怀疑 resize 破坏两支内容对齐,§3.1 预判的分布差是候选解释(训练重 tokenize vs 推理重复/丢弃)
探针 情感专一性 gap 仍 ≈0(−0.034)——换训练方式救不了 F6,第三次确认

下一步候选(未排期):① 中性支"合成→TSM→重新 tokenize"的全对称推理(贵 2.5×,直接检验 §3.1) ② E1 路线继续打磨 α=0 端(还差 0.39 到 v4)③ 双路 CER 的归因消融。

不确定点核销(对照 §3)

§3 登记 结果
1 token 重采样分布差 仍是首要怀疑:双路 CER 0.11 vs E1 0.046,方向吻合,未直接验证
2 xvec 用 TSM 音频重提 未见异常(E1 SECS 0.705 反而回升),维持低风险
3 E4 α>1 外推 未垮(负向 0),但 E4n 综合最差
4 相位声码器 phasiness 训练目标端无害,推理条件端毁灭性(§5.3)——比预判的分化更极端
5 λ=0 单臂 未被挑战
(新)17 vs 20 说话人 E1 与 v4/M10 的对比含此混淆;评测集不含缺失三人,判为次要

讨论