跳转至

M17 · 音频到音频:情感语音 → (中立 v, 情感 v)

状态 ⚠️ 随机臂完成(未成声)→ 基座臂 M18 接跑中
一句话 甩掉 LLM/token/prompt 整条 TTS 管线:输入情感音频,frozen whisper-large-v3 encoder + 可训 adapter 出逐帧条件,双塔 DiT 分别重建情感 mel(v_A)与中立 mel(v_B),α 混合实现情感强度编辑
上游 ← M16(双塔有效但受 LLM/token 管线约束:节奏钉死、软 token 梯度墙、α=0 乱说)· 用户提出音频到音频新架构
对照 M16(80k,同双塔不同条件源)· M14-λ0 · v4

TL;DR

⬜ 待跑。任务从 TTS 变为情感编辑(audio-to-audio):训练输入 = 真实情感录音, 推理输入 = 真实情感录音——训推第一次完全同构;LLM 采样噪声、GT/LLM token 分布差、 离散 token 梯度墙、节奏被 LLM 钉死等问题整体删除。 条件从 25Hz 离散 token 升级为 50Hz 连续 whisper-large-v3 encoder 特征(本地已有,无需新下载依赖)。 中立目标沿用均匀 R3(复用 m13_cache),λ_ortho=0.1。40k 步试跑(用户指定)。


1 目的

用一段情感语音生成其对应的中立版与自身重建版,\(v(\alpha)=(1-\alpha)v_B+\alpha v_A\) 在同一时间轴上做情感强度编辑。系统内不再有文本、LLM 与离散 token。

2 实验设置

2.1 架构

情感音频 wav ─┬─→ frozen whisper-large-v3 encoder(最后一层 hidden,50Hz,1280d)
              │      └→ Adapter(Conv1d 1280→512, k3, GELU → Conv1d 512→80, k3)→ μ (80d/帧)
              ├─→ frozen campplus → xvector 192d → spks
              │
              z ~ N(0,I)(时间轴 = 输入音频 mel 帧网格,K 帧)
                     ├─→ DiT_A(y, μ, t, spks, cond≡0) → v_A   ←u_e(输入自身 mel)
                     └─→ DiT_B(y, μ, t, spks, cond≡0) → v_B   ←u_n(均匀 R3 中立 mel)
项 值
编码器 whisper-large-v3 encoder(635M),冻结,最后一层 hidden;输入按 whisper 约定 pad 到 30s、只取有效帧;50Hz 与 mel 对齐,线性插值到 K
Adapter 可训,~2.2M:Conv1d(1280→512,k=3)+GELU+Conv1d(512→80,k=3),输出顶替 μ 槽位
DiT_A / DiT_B CosyVoice DiT 架构各 331M,随机初始化(用户指定),无级联无残差无共享层
prompt/前缀 删除:cond ≡ 0,无 in-context 参考
可训参数 ≈663M(双塔 + adapter;whisper / campplus 冻结)
λ_ortho 0.1(用户指定保留;A=v_A−v_B、B=v_B,80×80 时间轴归一化全对内积)

2.2 数据

复用 data/m13_cache:x1_emo(情感 mel = 重建目标)、x1_neu(均匀 R3 中立 mel = 中立目标)、xvec_e。新增预提取:每条情感录音的 whisper encoder 特征(fp16,约 15GB,data/m17_whisper/)。前缀字段全部不用。

2.3 训练

1. 输入条件:μ = Adapter(whisper_enc(情感 wav)),spks = xvec_e,cond = 0,长度 K = 2N_e
2. 采样 t ~ U[0.05,0.95]、α ~ U[0,1];x_α = (1−α)x1_neu + αx1_emo
3. y = (1−(1−σ)t)z + t·x_α
4. v_A = DiT_A(y,…);v_B = DiT_B(y,…)
5. L = ‖v_A−u_e‖² + ‖v_B−u_n‖² + 0.1·L_ortho(A,B)
6. AdamW 联合更新双塔 + adapter,grad_clip=1.0
参数 值
步数 40,000(试跑)(全局 batch 8;whisper 特征离线预提,训练时零编码开销)
并行 DDP 8×1(同 M16)
lr / 优化器 1e-5 / AdamW(adapter 同 lr)
grad_clip / seed 1.0 / 1234
ckpt / 中途评测 每 10k 步;10k/20k/30k 各评一次(同 M16 协议)
日志 L_A、L_B、L_ortho、grad_norm、A_share、cos_A_B
输出 outputs/m17/

2.4 推理与评测

1. 输入 = held-out 的 GT 情感录音(P6 同 12 组的情感参考音频)
2. 编码一次 → 每 Euler 步双塔并行 → 生成段 v=(1−α)v_B+α·v_A(全长即生成段)
3. HiFT 声码
项 值
规模 12 组 × 7 α = 84 条(α=1 ≈ 输入重建,自检项;α=0 = 中立化,核心项)
指标 CER(对 GT 文本)· emotion2vec delta/受控/负向 · SECS(对输入说话人)· UTMOS 含按 α 分列
探针 cos(A, x1_emo−x1_neu) teacher-forced(协议同 M14 §4.5)· A 结构
主判据 MOS@α=0 轨迹(10k/20k/30k/40k)+ α≤0.5 的 CER(乱说是否复现)

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

  1. α=0 乱说是否复现——首要风险。当前最强假设是"均匀变速目标与条件逐帧错位"; 本实验按用户决定沿用均匀 R3,若复现则后备臂 = 换 DTW 引导的 RB keyframe 目标, 一刀下去即可归因
  2. whisper encoder 为 ASR 目标训练,最后一层偏语义;若逐帧锚定不足,后备 = 取中层 hidden
  3. 随机起点 + 40k 步的音频可用性:E2 先例(token 条件、42.5k 步随机起点)音频不可用; 本实验条件换为连续 whisper 特征、任务换为编辑(含 α=1 重建监督),收敛性未知——40k 试跑即为此设
  4. 编码层选择(最后一层)写死为默认,未消融
  5. adapter 输出 80d 是为复用基座 input_embed 而定,表达瓶颈风险低
  6. 任务域转为编辑:无文本合成能力;泛化到 ESD 外说话人/情感未测
  7. 时长锁在输入时间轴(中立版被压到情感节奏)——既有边界,非新债

4 资源

whisper 特征预提约 40 分钟(8 卡分片);训练 DDP 8×1 约 2 小时(40k 步、无前缀短序列); 中途评测共卡;终评 + 探针约 1 小时。

5 结果(随机初始化臂,40k)

轨迹(10k / 20k / 30k / 40k):

step delta CER 总 CER@α=0 CER@α=1 MOS MOS@α=0
10k 0.293 1.003 1.03 0.86 1.25 1.25
20k 0.223 0.835 1.27 0.53 1.25 1.24
30k 0.509 0.870 1.19 0.76 1.27 1.27
40k 0.481 0.801 1.27 0.40 1.28 1.28

M17 训练曲线

  • 内容跟随确立但分层:情感端(α=1)CER 一路降到 0.40——whisper 连续条件的逐帧锚定生效; 中立端(α=0)停在 1.27——"中立化滞后于自我重建"的历代模式在随机起点重演
  • 音质无拐点:MOS 全程 1.25–1.28 平线,未"成声"(用户听感:有内容、多电音); L_A 从 20k 起横盘 ~1.0(M16 基座起点同期 0.59)
  • 正则观察:L_ortho 平在 ~0.19、cos_A_B ≈ −0.34——双塔靠监督分化出负相关,λ=0.1 未推动进一步分离 (λ 消融已排入 M18 链)
  • 40k 终点音频(两 case × 7α,含 α=5)见快照页

6 结论(随机臂)

项 结论
架构可行性 ✅ 管线通、内容学得动(CER@α1 0.40)——音频到音频 + whisper 条件的路线成立
随机初始化 ❌ 25h 数据从零学不出语音纹理(MOS 1.28 平线)——与 E2 结论一致,条件换强也救不了
归因 电音 = 谱纹理缺失 = 基座预训练承载的那一层;零步验证(M18 §2)已证纹理先验可穿透新条件
下一步 → M18:基座初始化同款重跑(λ=0.1 → 链式 λ=1.0 消融)

讨论