M20 · R3 变速中立目标¶
| 状态 | ✅ 完成(2026-09-01,共 420k 步:100k + 80k + 80k + 160k 四段)——CER 0.046 / MOS 2.09 / MOS@α=0 2.80 / delta 0.911,四项均为项目最佳或追平纪录 |
| 一句话 | 唯一改动:中立目标的变速引擎 WSOLA → DTW 引导的 RubberBand R3 时变变速;其余与 M19 逐项相同,从基座重头训 100k 步——与 M19 线(40k+30k+30k 分三段续训到 100k)在同一总步数上对照 |
| 上游 | ← 探针页:WSOLA 目标比均匀 R3 低 0.52 MOS、伪影占残差 24%(电音主犯)· R3 试听页:新引擎 UTMOS 2.78→3.05、对齐不变、用户听感确认 |
| 对照 | M19 线全程(10k–100k 同 α 协议;唯一变量 = 变速引擎,且 M20 为单段连续训练、无优化器重启) |
TL;DR¶
420k 终点:内容、音质、中立端三项创项目纪录,情感强度追平纪录;中段 α 仍有电音(已归因,非训练量问题)。
- ✅ CER 0.046(M19 最佳 0.109、M18 0.410)——七个 α 档全胜且全部 ≤0.08,α=0 仅 0.05
- ✅ MOS 2.09(M19 线最佳 1.92)· MOS@α=0 2.80,超过 M18 保持的 2.77 纪录
- ✅ delta 0.911 追平 M18 纪录 —— 但末五点为 .768/.908/.783/.833/.911, 均值 0.841、极差 0.143,420k 落在波动带上沿,不能宣称稳定达到 0.911
- ✅ 探针 cos 0.88(M18 为 0.89);幅度比 0.83,残差已近饱和(A_share 0.043 / GT 0.062)
- ⚠️ 中段谷未解(α=0.5 的 MOS 1.56):探针页 §5 证明 纯 GT 线性混合在 α=0.5 只有 1.42(低于模型输出),是加性插值假设失效,与训练量、分离质量均无关
- 📌 核心假设(R3 目标端 +0.27 UTMOS 能否传导到输出):成立,但需要长训—— 100k 时仅兑现 +0.09,420k 时 α=0 端兑现 +0.80(2.80 vs M19 的 2.00)
1 与 M19 的差异(仅此一处)¶
| M19 | M20 | |
|---|---|---|
| x1_neu 构造 | DTW 锚点 + pytsmod WSOLA | DTW 锚点 + RubberBand R3 实时流、逐块时变 time_ratio |
| 缓存 | data/m19_cache |
data/m20_cache(21,301 条,抽检 0 损坏) |
其余全部不变:whisper 条件、双 adapter、残差参数化 v(α)=v_B+α·v_Δ、λ_ortho=1.0、 DiT_Δ 零头初始化、DDP 8×1、lr 1e-5、seed 1234。
起点 = 基座 flow.pt(--base_init,与 M18/M19 同一起点),不是从 M19 的 ckpt 续。
2 变速实现¶
见 R3 试听页 §1。要点:RubberBand 实时模式允许流中途修改 time_ratio,
因此单条流走完整句(256 样点一块更新速率),无分段拼接、无交叉淡入,绕开 pylibrb
set_keyframe_map 的绑定 bug。变速耗时 0.11s/条(WSOLA 2.7s)。
⚠️ 缓存重建工程记录:8 进程多线程 185 条/分钟(预计 110 分钟)→ 改 48 进程单线程后 5 分钟跑完, 线程互斥是瓶颈而非 CPU 总量。
3 训练与评测¶
| 参数 | 值 |
|---|---|
| 步数 / 并行 | 100,000 / DDP 8×1(全局 batch 8) |
| 初始化 | DiT_B 基座全量、DiT_Δ 基座主体 + proj_out 置零、spk 基座、两 adapter 随机 |
| lr / seed / λ_ortho | 1e-5 / 1234 / 1.0 |
| ckpt / 中评 | 每 10k;20k/40k/60k/80k 各一次中评 |
| α 网格 | {0, 0.25, 0.5, 0.75, 1, 1.5, 2}(最高档 2,用户逐轮降档结论) |
| 输出 | outputs/m20/ |
主判据:与 M19 线同步数点对比 —— MOS(尤其 α=0 与中段)、CER@α=0、delta。
M19 参照点:10k delta .366/CER .422/MOS 1.34 · 40k .628/.207/1.70 · 70k .707/.202/1.93 ·
90k .835/.109/1.92(M19 线最佳) · 100k .783/.125/1.82。
M20 另有一处天然优势:单段连续训练,不像 M19 线在 40k/70k 处有两次优化器重启。
4 结果(截至 260k,用户指定停点)¶
🎧 M20 音频对照(M20@40k vs M19@40k 同步数点同名对拍 + M19 90k★ 参照 + 输入/自然中立原音频)
4.1 40k 同步数点对照(M19 的 40k 终点 vs M20 的 40k 中评)¶
| delta | CER 总 | CER@α=0 | MOS | MOS@α=1 | |
|---|---|---|---|---|---|
| M19@40k(WSOLA) | 0.628 | 0.207 | 0.19 | 1.70 | 2.10 |
| M20@40k(R3) | 0.557 | 0.110 | 0.12 | 1.71 | 1.89 |
按 α 分层:
| α | MOS M19 | MOS M20 | CER M19 | CER M20 |
|---|---|---|---|---|
| 0.0 | 1.79 | 1.75 | 0.19 | 0.12 |
| 0.25 | 1.52 | 1.62 | 0.07 | 0.11 |
| 0.5 | 1.51 | 1.69 | 0.04 | 0.05 |
| 0.75 | 1.77 | 1.84 | 0.05 | 0.11 |
| 1.0 | 2.10 | 1.89 | 0.06 | 0.12 |
| 1.5 | 1.95 | 1.75 | 0.10 | 0.10 |

- ✅ 内容大幅领先:CER 总 0.207 → 0.110(同步数点降 47%),且中段与情感端全线更低
- ⚖️ 音质持平:MOS 1.70 vs 1.71——R3 目标端那 +0.27 UTMOS 未在 40k 处传导为输出增益
- ⚠️ 情感强度落后:delta 0.628 → 0.557;MOS@α=1 2.10 → 1.89
- 20k 处落后更明显(delta .368 vs .619),40k 已追近——早期动态差异为主,非结构劣势
4.2 训练曲线(全程 0–420k,含 100k/180k/260k 三次续训,vs M19 线)¶

逐 40k 段均值(红点线 = 三次续训重启;180–260k 段为 4 卡×2,其余 8 卡×1,全局 batch 恒为 8):
| 段 | L_sum M20 / M19 | L_B M20 / M19 | L_Δ M20 / M19 | A_share M20 / M19 |
|---|---|---|---|---|
| 0–40k | 1.056 / 1.030 | 1.146 / 1.080 | 2.068 / 1.858 | 0.0166 / 0.0192 |
| 40–80k | 0.814 / 0.742 | 0.973 / 0.861 | 1.569 / 1.233 | 0.0286 / 0.0299 |
| 80–120k | 0.743 / 0.686 | 0.874 / 0.800 | 1.329 / 1.102 | 0.0330 / 0.0373 |
| 120–160k | 0.681 / — | 0.838 / — | 1.179 / — | 0.0343 / — |
| 160–200k | 0.652 / — | 0.786 / — | 1.065 / — | 0.0385 / — |
| 200–240k | 0.612 / — | 0.752 / — | 0.969 / — | 0.0411 / — |
| 240–280k | 0.595 / — | 0.726 / — | 0.912 / — | 0.0419 / — |
| 280–320k | 0.581 / — | 0.733 / — | 0.923 / — | 0.0408 / — |
| 320–360k | 0.569 / — | 0.701 / — | 0.880 / — | 0.0405 / — |
| 360–400k | 0.555 / — | 0.695 / — | 0.878 / — | 0.0407 / — |
| 400–420k | 0.546 / — | 0.695 / — | 0.865 / — | 0.0430 / — |
- 重建项全程仍在降:L_sum 1.18 → 0.55 档、L_B 1.22 → 0.70 档、L_Δ 2.30 → 0.85 档
- A_share 在 0.043 附近饱和(GT 参照 0.062,达成约 69%)——与探针幅度比 0.83 一致, 残差幅度这条线已到顶,这解释了 delta 为何只在 0.77–0.91 的带内摆而不再系统上行
- 三次续训重启只有短暂抬升即回落;4 卡×2 与 8 卡×1 之间无断层
4.3 全程轨迹(M20 线 0–420k vs M19 线 0–100k,同步数点)¶
| 步数 | delta M20 / M19 | CER M20 / M19 | MOS M20 / M19 | MOS@α=1 M20 / M19 | MOS@α=0 M20 / M19 |
|---|---|---|---|---|---|
| 20k | 0.368 / 0.619 | 0.293 / 0.278 | 1.44 / 1.47 | 1.49 / 1.67 | 1.42 / 1.40 |
| 40k | 0.557 / 0.628 | 0.110 / 0.207 | 1.71 / 1.70 | 1.89 / 2.10 | 1.75 / 1.79 |
| 60k | 0.500 / 0.568 | 0.146 / 0.196 | 1.75 / 1.79 | 2.01 / 2.38 | 1.82 / 1.69 |
| 80k | 0.616 / 0.799 | 0.140 / 0.157 | 1.84 / 1.90 | 2.18 / 2.46 | 2.00 / 1.93 |
| 100k | 0.641 / 0.783 | 0.100 / 0.125 | 1.85 / 1.82 | 2.32 / 2.23 | 2.09 / 2.00 |
| 120k | 0.659 / — | 0.103 / — | 1.88 / — | 2.31 / — | 2.14 / — |
| 140k | 0.742 / — | 0.136 / — | 1.87 / — | 2.28 / — | 2.13 / — |
| 160k | 0.655 / — | 0.109 / — | 1.85 / — | 2.37 / — | 2.04 / — |
| 180k | 0.722 / — | 0.091 / — | 1.99 / — | 2.43 / — | 2.41 / — |
| 200k | 0.721 / — | 0.072 / — | 1.96 / — | 2.42 / — | 2.48 / — |
| 220k | 0.769 / — | 0.085 / — | 2.02 / — | 2.51 / — | 2.44 / — |
| 240k | 0.779 / — | 0.062 / — | 2.06 / — | 2.58 / — | 2.69 / — |
| 260k | 0.768 / — | 0.069 / — | 2.06 / — | 2.50 / — | 2.66 / — |
| 300k | 0.908 / — | 0.069 / — | 2.05 / — | 2.59 / — | 2.64 / — |
| 340k | 0.783 / — | 0.051 / — | 2.06 / — | 2.56 / — | 2.68 / — |
| 380k | 0.833 / — | 0.049 / — | 2.12 / — | 2.65 / — | 2.80 / — |
| 420k | 0.911 / — | 0.046 / — | 2.09 / — | 2.61 / — | 2.80 / — |

420k 终点在几乎所有维度上都是项目最佳:CER 0.046(M18 为 0.410、M19 最佳 0.109)、 MOS 2.09、MOS@α=0 2.80(超过 M18 的 2.77 纪录)、delta 0.911(追平 M18 纪录)。
⚠️ delta 要按波动带读,不能只看终点:末五点为 0.768 / 0.908 / 0.783 / 0.833 / 0.911, 均值 0.841、极差 0.143——420k 恰好落在带的上沿,不能声称"稳定达到 0.911"。 相较之下 CER 是单调改善(0.069 → 0.069 → 0.051 → 0.049 → 0.046),不在噪声带内。
4.4 420k 终点按 α 分层¶
| α | 0 | 0.25 | 0.5 | 0.75 | 1.0 | 1.5 | 2.0 |
|---|---|---|---|---|---|---|---|
| MOS M20@420k | 2.80 | 1.91 | 1.56 | 2.14 | 2.61 | 2.15 | 1.47 |
| MOS M19 90k★ | 2.05 | 1.65 | 1.56 | 1.96 | 2.46 | 2.32 | 1.43 |
| CER M20@420k | 0.05 | 0.08 | 0.06 | 0.03 | 0.03 | 0.03 | 0.05 |
| CER M19 90k★ | 0.31 | 0.15 | 0.07 | 0.04 | 0.04 | 0.07 | 0.08 |
- CER 七档全胜,且全部 ≤0.08——α=0 只有 0.05(M19 为 0.31,M18 为 1.24)
- MOS 在 α=0 / 0.25 / 0.75 / 2.0 四档领先;α=0.5 / 1.0 / 1.5 三档仍略逊 M19
- 中段谷仍在(α=0.5 为 1.56)——已由探针页 §5 归因为 加性插值假设失效,与训练量无关
4.5 探针 cos(v_Δ, x1_emo−x1_neu)(held-out 300,t=0.1/0.5/0.9 中位)¶
| M19@100k | M20@100k | M20@180k | M20@260k | M20@420k | 参照 M18-λ1.0 | |
|---|---|---|---|---|---|---|
| cos | 0.69 / 0.81 / 0.83 | 0.65 / 0.76 / 0.78 | 0.70 / 0.82 / 0.84 | 0.73 / 0.85 / 0.87 | 0.73 / 0.86 / 0.88 | 0.74 / 0.88 / 0.89 |
| ‖v_Δ‖/‖GT‖ | 0.66 / 0.75 / 0.76 | 0.61 / 0.70 / 0.71 | 0.69 / 0.78 / 0.79 | 0.72 / 0.81 / 0.82 | 0.71 / 0.82 / 0.83 | 0.73 / 0.89 / 0.92 |
残差方向 0.88 已逼近 M18 相减式的 0.89;幅度比 0.83 仍低于 M18 的 0.92, 但 260k→420k 仅从 0.82 挪到 0.83——残差幅度这条线基本到顶了。
4.6 MOS 收敛判读(0–420k)¶

各 α 的 MOS 全程轨迹(步数单位 k):
| α | 20 | 40 | 60 | 80 | 100 | 120 | 140 | 160 | 180 | 200 | 220 | 240 | 260 | 300 | 340 | 380 | 420 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.0 | 1.42 | 1.75 | 1.82 | 2.00 | 2.09 | 2.14 | 2.13 | 2.04 | 2.41 | 2.48 | 2.44 | 2.69 | 2.66 | 2.64 | 2.68 | 2.80 | 2.80 |
| 0.25 | 1.43 | 1.62 | 1.55 | 1.58 | 1.65 | 1.68 | 1.67 | 1.59 | 1.81 | 1.76 | 1.83 | 1.94 | 1.94 | 1.79 | 1.86 | 1.89 | 1.91 |
| 0.5 | 1.43 | 1.69 | 1.60 | 1.57 | 1.51 | 1.48 | 1.48 | 1.44 | 1.59 | 1.52 | 1.58 | 1.53 | 1.59 | 1.55 | 1.52 | 1.54 | 1.56 |
| 0.75 | 1.48 | 1.84 | 1.82 | 1.87 | 1.96 | 1.91 | 1.93 | 1.84 | 2.00 | 1.93 | 2.08 | 2.08 | 2.11 | 2.07 | 2.12 | 2.09 | 2.14 |
| 1.0 | 1.49 | 1.89 | 2.01 | 2.18 | 2.32 | 2.31 | 2.28 | 2.37 | 2.43 | 2.42 | 2.51 | 2.58 | 2.50 | 2.59 | 2.56 | 2.65 | 2.61 |
| 1.5 | 1.46 | 1.75 | 1.93 | 2.12 | 2.05 | 2.19 | 2.12 | 2.19 | 2.20 | 2.12 | 2.24 | 2.14 | 2.14 | 2.22 | 2.17 | 2.30 | 2.15 |
| 2.0 | 1.33 | 1.47 | 1.49 | 1.56 | 1.41 | 1.43 | 1.49 | 1.47 | 1.47 | 1.47 | 1.48 | 1.44 | 1.47 | 1.47 | 1.49 | 1.54 | 1.47 |
| 总 | 1.44 | 1.71 | 1.75 | 1.84 | 1.85 | 1.88 | 1.87 | 1.85 | 1.99 | 1.96 | 2.02 | 2.06 | 2.06 | 2.05 | 2.06 | 2.12 | 2.09 |
- α=0 从 1.42 涨到 2.80(+1.38),是改善最大的档位,且已超过 M18 保持的 2.77 纪录
- 中段谷仍未填平:α=0.5 停在 1.56(曾在 260k 达 1.59),α=0.25 到 1.91 后走平
- α≥1 基本收敛:α=1 在 2.5–2.65 之间摆、α=1.5 在 2.1–2.2、α=2 在 1.4–1.5
- 训练侧末段 A_share 0.043(GT 参照 0.062,达成 69%),探针幅度比 0.83——残差已近饱和
5 结论¶
| 项 | 结论(420k 终点) |
|---|---|
| 核心假设 | ✅ 成立但需长训:R3 目标端 +0.27 UTMOS 的优势,100k 时几乎不可见(+0.09)、180k 显形、420k 在 α=0 端兑现 +0.80。⇒ 1× 预算下的数据端消融,结论可能是反的 |
| 内容 | ✅ CER 0.046 项目最佳,七档全胜且全 ≤0.08;α=0 从 M18 的 1.24 / M19 的 0.31 降到 0.05 |
| 音质 | ✅ MOS 2.09 项目最佳(M18 1.98 / M19 1.92);MOS@α=0 2.80 破 M18 的 2.77 纪录 |
| 情感强度 | ✅ delta 0.911 追平纪录,但按波动带读为 0.84 ± 0.07;残差幅度已饱和(A_share 0.043/0.062、探针幅度比 0.83),继续堆步数不会再涨 |
| 中段 α | ❌ 未解且非训练问题:α=0.5 的 MOS 1.56,而纯 GT 线性混合只有 1.42——模型已在天花板上。病根是 中立 + α·Δ 的加性假设对"频率位置"类信息失效(探针页 §5) |
| 推荐 ckpt | M20@420k = outputs/m20d/ckpts/step160000.pt —— 项目当前最佳模型 |
| 并行度 | 8×1 与 4×2(全局 batch 恒 8)曲线无断层;CPU 空闲时 4 卡×2 达 285 步/分钟,快于 8 卡×1 的 243 |
方法学教训¶
- n=1 评测点抖动可达 ±0.08:delta 在末五点极差 0.143,单点(甚至三点)不足以判趋势; CER/MOS 的单调改善才是可信信号
- 数据端的感知改善需长训才能穿过 L2 损失:本轮传导用了约 4× 步数才充分显形
下一步(中段 α 是唯一未解项)¶
α≥0.75 与 α=0 均已可用;唯一短板是中段,且已确认不是训练问题。候选修法见 探针页 §5.1b–5.1d:核心思路是在推理端把被搞模糊的谐波结构重新建立 (扔掉旧梳齿 → 按插值 F0 画上新梳齿 → 源与滤波器保持一致),全部在推理端、不动训练。 ⬜ 该对照实验尚未运行。