【SSL】WavLM

前言

wav2vec 2.0HuBERT 作为大规模自监督预训练模型,利用少量标注微调后,可以在 ASR 任务上得到很好的效果。

WavLM(Chen et al.,Microsoft,2022)将这套范式应用到了声纹验证(ASV,Automatic Speaker Verification)和说话人日志(SD, Speaker Diarization)等任务。架构上 WavLM 几乎完全沿用 HuBERT,只额外加了门控相对位置偏置,数据从 Libri-Light 6 万小时扩到 9.4 万小时。结果是拿下 SUPERB 全栈榜首,并且到 2026 年仍是声纹与说话人日志领域最常用的自监督底座。


一、Masked Speech Denoising and Prediction

掩码语音去噪预测是 WavLM 的核心创新点。

1.1 输入弄脏,答案干净

text 复制代码
一条训练语音 u(主说话人)
   │
   ├─ 80% 概率保持干净(照旧 HuBERT 式训练)
   ├─ 20% 概率做「模拟」:
   │     ├─ 混人声:从同 batch 随机抽另一条语音,随机截一段、随机能量比叠加
   │     └─ 混噪声:从 DNS 挑战赛噪声库抽一段,随机信噪比叠加
   │        (污染区域 < 50%,主说话人在时长上占优)
   ▼
 掩码(同 HuBERT:p=8%、span=10、替换成可学习 mask 向量)
   ▼
 Transformer + 分类头
   ▼
 预测目标:【原始干净 u】的 k-means 单元      ← 灵魂在这一行


图 1 模型结构
如图 1 所示,架构、掩码策略、分类头(投影 + 单元 embedding 余弦 + 温度 softmax + 交叉熵)、只在被掩位置算损失,**和 HuBERT一致**;伪标签沿用 HuBERT 中间层 embedding k-means 聚类得到,具体来说,Base 用 HuBERT 第 1 轮模型的第 6 层,Base+ 和 Large 用 HuBERT 第 2 轮(官方发布版)的第 9 层。论文试过用训好的 WavLM 来出伪标签,但效果比用 HuBERT 标签略差一点。**WavLM 的创新全在训练数据处理。**

下面具体说明训练时数据处理的方式和参数。

text 复制代码
算法 1 
输入:batch U = {u¹..u^B}(波形,长度 L)、混叠概率 p、
      DNS 噪声库 N(M 条)、噪声概率 p_n

L2   从 batch 里用伯努利(p=20%)抽出子集 U^S        → 只有这 20% 会被弄脏
L3   对每条主语音 u^pri ∈ U^S:
L4     抽随机数 v ~ U(0,1)
L5-7   若 v > p_n:【混人声】从 batch 里等概率(1/B)抽一条 u^sec
                   抽能量比 r ~ U(-5, +5) dB
L8-10  否则:      【混噪声】从 DNS 噪声库等概率(1/M)抽一条
                   抽能量比 r ~ U(-5, +20) dB
L12    抽混叠长度 l ~ 均匀{1, ..., L/2}            ← 不超过 50%
L13    抽主语音的插入起点 s^pri ~ 均匀{1, ..., L-l}
L14    抽干扰源的裁剪起点 s^sec ~ 均匀{1, ..., L-l}
L15    算主语音能量 E^pri = Σ(u^pri)²/L
L16    算干扰源能量 E^sec = Σ(u^sec)²/L
L17    算缩放系数 scl = sqrt( E^pri / (10^(r/10) · E^sec) )  ← 缩放系数对应信噪比
L18    u^pri[s^pri : s^pri+l] += scl · u^sec[s^sec : s^sec+l]   ← 只在这一段叠加

超参的实际取值:

符号 含义 取值
p p p 一个 batch 中被做模拟的语音比例 20%
p n p_n pn 模拟时选噪声(而非选人声)的概率 Base:0 / Base+ 与 Large:10%
l l l 混叠段长度 U { 1 , ... , L / 2 } \mathcal{U}\{1,\dots,L/2\} U{1,...,L/2},即 ≤ 50%,期望 25%
r r r 混叠能量比,实际就是 SNR(dB) 人声: U ( − 5 , 5 ) \mathcal{U}(-5,5) U(−5,5) dB;噪声: U ( − 5 , 20 ) \mathcal{U}(-5,20) U(−5,20) dB
干扰源个数 每条语音加几段 1 段、1 个干扰源(人声与噪声不叠加)
噪声来源 DNS 挑战赛(Deep Noise Suppression)噪声库
人声来源 同一个 batch 里随机另一条语音

WavLM 标签是混合前干净原句的单元,模型在掩码位置要填的是主说话人在这里说了什么单元,它需要依次做到 ① 判断谁是主说话人;② 把干扰说话人或噪声从表示里剥离;③ 再做内容预测。

1.2 波形混叠 vs 特征掩码

混叠和掩码不是在同一层做的。

机制 作用域 干什么 比例
Mixing(混叠/加噪) 波形域(采样点) 把别人的语音或噪声进来,把输入弄脏 污染区域 ≤ 50%,期望约 25%
Mask(掩码) CNN 输出的帧 把帧替换成可学习 mask 向量,做完形填空 沿用 HuBERT, p = 8 % p=8\% p=8%、span=10,实际约 57%

先在波形上混叠,再在 CNN 特征上挖空

1.3 混叠比例

干净 人声 噪声
WavLM Base 80% 20% 0%
WavLM Base+ / Large 80% 20 % × 90 % = 20\%\times 90\% = 20%×90%= 18% 20 % × 10 % = 20\%\times 10\% = 20%×10%= 2%
  1. WavLM Base 没混过噪声,只做了说话人混叠;
  2. 加噪只占全部数据的 2%;
  3. 80% 的语音全程干净,照常做 HuBERT 训练。

所以 WavLM 主要靠混叠来学习声纹信息,去掉混叠说话人日志相对退化 32.5%。

1.4 r r r(SNR)

算法 1 中,缩放后干扰的能量是

s c l 2 E s e c = E p r i 10 r / 10 scl^2 E^{sec} = \frac{E^{pri}}{10^{r/10}} scl2Esec=10r/10Epri

于是

SNR = E p r i s c l 2 E s e c = 10 r / 10 ⟹ SNR(dB) = r \text{SNR} = \frac{E^{pri}}{scl^2 E^{sec}} = 10^{r/10} \quad\Longrightarrow\quad \text{SNR(dB)} = r SNR=scl2EsecEpri=10r/10⟹SNR(dB)=r

mixing energy ratio r r r 就是目标信噪比(dB)。

场景 r r r 范围 实际含义
混人声 − 5 ∼ + 5 -5 \sim +5 −5∼+5 dB 一半概率下干扰说话人比主说话人更响 ( r < 0 r<0 r<0)
混噪声 − 5 ∼ + 20 -5 \sim +20 −5∼+20 dB 多数情况噪声较轻

由于混叠人声可能会很响,所以算法限制污染区域必须小于 50%,这样模型才能根据说话人时长来判断谁是主说话人。


二、两个配套升级

2.1 门控相对位置偏置(gated relative position bias)

wav2vec 2.0/HuBERT 用卷积位置嵌入(输入端加一次)。WavLM 在每层注意力打分里加相对位置偏置:

α i j ∝ exp ⁡ ( q i ⋅ k j d + r i − j ) \alpha_{ij} \propto \exp\Big(\frac{q_i \cdot k_j}{\sqrt{d}} + r_{i-j}\Big) αij∝exp(d qi⋅kj+ri−j)

  • r i − j r_{i-j} ri−j 只依赖相对距离 i − j i-j i−j(T5 式分桶共享,近处逐桶精细、远处对数粗分);
  • 门控 : r i − j r_{i-j} ri−j 不是纯查表的常数,还会被当前帧内容算出的门调制,门控让位置偏置随内容自适应。

加入后 ASR 稳定小涨,但对声纹等任务没提升。注意,卷积位置嵌入没有被替换,而是并存。

这个偏置提升有限,后来的 SSL 模型也没有用。现代 LLM 全部走 RoPE 路线(完全没参数,外推能力强)。

2.2 数据:960h/6 万小时 → 9.4 万小时

模型 层数/维度 参数量 预训练数据
WavLM Base 12 层 / 768 ~95M LS-960(960 小时朗读)
WavLM Base+ 12 层 / 768 ~95M 94k 小时混合
WavLM Large 24 层 / 1024 ~317M 94k 小时混合

94k 小时 = Libri-Light 60k(有声书)+ VoxPopuli 24k(欧洲议会演讲)+ GigaSpeech 10k(播客/YouTube/有声书)。增加了训练数据的多样性,增强了鲁棒性。


三、结果分析

3.1 三档官方模型

Base Base+ Large
Transformer 层数 12 12 24
隐藏维 768 768 1024
参数量 94.70M 94.70M 316.62M
预训练数据 LS-960 Mix 94k Mix 94k
训练步数 400k 1M 700k
加噪概率 p n p_n pn 0 10% 10%
HuggingFace 名称 microsoft/wavlm-base microsoft/wavlm-base-plus microsoft/wavlm-large

Base 与 Base+ 架构完全相同,只差数据。实操上直接用 Base+,几乎全面强于 Base。

注意,论文 V.A 写 Base 8 头、Large 12 头,但 HuggingFace config 是 Base+ 12 头、Large 16 头。实际跑的是 HuggingFace 的配置。

3.2 评测榜单

SUPERB(Speech processing Universal PERformance Benchmark,2021)是一个评测,共 15 个任务,分属五个方面

方面 任务
内容 音素识别 PR、语音识别 ASR、跨域语音识别 OOD-ASR、关键词检出 KS、按例查询 QbE
说话人 说话人辨识 SID、声纹验证 ASV、说话人日志 SD
语义 意图分类 IC、槽位填充 SF、语音翻译 ST
副语言 情感识别 ER
生成 语音增强 SE、源分离 SS、语音转换 VC

其中后四项(ST、SE、SS、VC)来自扩展版 SUPERB-SG,把基准从纯判别任务扩到了语义与生成任务。

SUPERB 有官网 superbbenchmark.org 和可提交的排行榜,但挑战赛是一次性的(AAAI SAS 2022 workshop),榜单基本冻结在 2022 年,可以将 SUPERB 当作 2021--2022 年自监督表示能力的快照。

3.3 消融实验

参数 SID Acc↑ ASV EER↓ SD DER↓ PR PER↓ ASR WER↓ Overall↑
HuBERT Base 94.68M 81.42 5.11 5.88 5.41 6.42 70.9
WavLM Base 94.70M 84.51 4.69 4.55 4.84 6.21 72.0
− w/o structure modification 94.68M 84.74 4.61 4.72 5.22 6.80 71.9
− w/o denoising task 94.70M 84.39 4.91 6.03 4.85 6.08 71.7

去掉门控相对位置偏置(第 3 行):

  • PR 从 4.84 涨到 5.22(相对退化 7.9% )、ASR 从 6.21 涨到 6.80(相对退化 9.5%);
  • 但 SID 从 84.51 变成 84.74(更好) 、ASV 从 4.69 变成 4.61(更好)

去掉混叠去噪(第 4 行):

  • SD 从 4.55 涨到 6.03,相对退化 32.5%,比 HuBERT Base 差;
  • 但 ASR 从 6.21 降到 6.08(更好)
创新点 主要受益 在对方地盘上
门控相对位置偏置 内容类(PR、ASR) 说话人任务略微变差
掩码去噪 + 混叠 说话人类(SD、SID、ASV) ASR 略微变差

SUPERB 的层加权提供了可解释性:

  • SID / ASV / SD(说话人) :权重集中在底层和中浅层
  • PR / ASR / IC / SF(内容与语义) :权重集中在顶层

总结

WavLM 在 HuBERT 的基础上将输入混叠或加噪,答案保持干净,把说话人辨别和去噪变成了掩码预测的前置子任务。在声纹、说话人日志、语音分离任务有明显提升,说话人日志相对 HuBERT 提升 22.6%。

相关推荐
七夜zippoe1 小时前
AI Agent 的三位一体架构:模型(大脑)+ 工具(双手)+ 记忆(海马体)的深度解析
人工智能·ai·架构·agent·三位一体
一木 之林1 小时前
李沐深度学习191集课程全解析:模块拆解、学习路径
人工智能·深度学习
tqs_123451 小时前
OPC量产变现|全网挖掘6个可直接落地AI软件需求清单
大数据·人工智能
IT古董1 小时前
《FDE前沿部署工程师实战教程》11 - 企业Agent部署实战:Docker、API Gateway与生产环境
人工智能·学习
醍醐实验室1 小时前
分布式显存优化器:ZeRO-Offload 异构内存(CPU/NVMe)卸载调度
人工智能·zero-offload
某林2121 小时前
机器人重启失联:DDS 发现机制与传输层静默故障
人工智能·python·机器人·硬件架构·ros2
aneasystone本尊1 小时前
学习大模型推理的采样策略
人工智能
IT_陈寒1 小时前
SpringBoot自动配置失效时我差点把电脑扔了
前端·人工智能·后端