通用模型、全新框架,WavLM语音预训练模型全解
发布日期:2023-01-03 作者:康为 点击:
编者按:深度神经网络模型近年来虽然在各项语音任务上都有所进展,但却仍依赖于大量的标注数据。而自监督训练方法的出现和发展则在一定意义上缓解了该问题。近日,微软亚洲研究院与微软 Azure 语音组的研究员们在判别式自监督预训练方法的基础上,沿用研究院自然语言计算组在自然语言预训练的 Transformer 模型架构,提出了全新的 Denoising Masked Speech Modeling 框架。通过94,000小时的英语语音进行预训练,通用语音预训练模型 WavLM 在 SUPERB 所有13项语音任务测评中超过先前所有模型,排名第一,并在其它4个不同的语音经典测评数据集上都取得了很好效果。
近两年来,预训练模型在自然语言处理和计算机视觉领域引起了学术界和工业界的广泛关注。利用大规模无监督数据进行训练的预训练模型有着非常好的泛化性,只需在小规模标注数据上进行微调,就可以在相应任务上有所提高。虽然之前预训练模型在语音处理领域已经取得了一些进展,但其只在语音识别任务上进行了验证。
为此,微软亚洲研究院与微软 Azure 语音组的研究员们提出了通用语音预训练模型 WavLM。通过 Denoising Masked Speech Modeling 框架,研究员们将 WavLM 适配到了17个任务上,并且都取得了非常好的效果,这使得语音预训练模型的有效性从语音识别任务延伸到了非内容识别的语音任务。基于在94,000小时无监督的英文数据上进行训练,WavLM 还在多个语音相关的数据集上都取得了 SOTA 的成绩。目前,该模型已经开源,并集成到了 Hugging Face 的 Transformer 框架中方便使用者调用。
论文链接:
https://arxiv.org/pdf/2110.13900.pdf
开源链接:
https://aka.ms/wavlm
Hugging Face集成链接:
https://huggingface.co/microsoft/wavlm-large
图片
从自监督预训练方法看语音任务
生成式&判别式自监督预训练方法
在过去的几年中,深度神经网络模型虽然在语音的多种任务上都取得了突破性进展,但却依旧受制于模型训练时所需的大量标注数据。自监督预训练方法的出现在一定程度上缓解了这一问题。该方法先使用大规模无监督数据进行预训练,随后将训练好的模型在小规模标注数据上进行微调。已有研究表明,使用自监督预训练可以提升多种语音任务的性能。
根据预训练目标的不同,自监督预训练方法可分为生成式和判别式。生成式包括通过连续或离散的隐变量还原原始的语音特征,比如自编码器可以预测未来时刻或被掩码遮盖的语音特征。而判别式则通过对比学习或者预测离散化索引(id)的方式对模型进行预训练,例如 wav2vec2.0 和 HuBERT。将 wav2vec2.0 和 HuBERT 两种方法在6万小时的数据上进行预训练后,可以发现其在语音识别数据集 Librispeech 上取得了 SOTA 的性能。这两种方法均使用了声波作为模型输入,并通过 CNN 模块进行降采样,降采样后的特征被随机遮盖(mask)并输入进 Transformer 编码器。wav2vec2 使用了对比学习进行模型训练,通过引入一个向量量化器(vector quantizer)对未遮盖的 CNN 输出进行离散化,并在被遮盖位置的 Transformer 的输出表示上计算 InfoNCE 损失,其中正样本来自该位置离散化后的向量,负样本来自于该语音序列中其他位置的离散化向量。而 HuBERT 则借鉴了 BERT 当中的 mask language model 的损失函数,并使用 Transformer 预测被遮盖位置的离散 id 来训练模型。HuBERT 使用了迭代的方式生成训练目标,即每一帧的离散 id。微软亚洲研究院的研究员们首先对语音的 MFCC 特征进行了 k-means 聚类来生成学习第一代 HuBERT 模型的离散 id,随后对已训练好的上一代模型的输出表示进行聚类并生成新的id来进行下一轮次的学习。
即便 wav2vec2.0 和 HuBERT 取得了非常好的进展,但它们的性能只在语音识别任务上进行了验证,并且只能够处理单一说话人的任务,而在说话人分离等多说话人的任务上表现欠佳。此外,由于这两个模型使用了有声电子书 LibriLight 数据集作为预训练集,所以使得模型在域外下游任务上的表现并不理想。
全新的 Denoising Masked Speech Modeling 框架
沿用微软亚洲研究院自然语言计算组在自然语言预训练的 Transformer 模型架构,研究院的研究员们提出了Denoising Masked Speech Modeling 的预训练方案。如下图所示,WavLM 模型包含了一个卷积编码器(CNN Encoder)和一个 Transformer 编码器。其中,卷积编码器共有7层,每层包含一个时域卷积层、一个层规范化层和一个 GELU 激活函数层。在 Transformer 编码器中,研究员们使用了门控相对位置编码(gated relative position bias),从而将相对位置引入到了注意力网络的计算中,以便更好地对局部信息进行建模。在训练中,WavLM 会随机地对输入 wav 进行变换,例如:将两个 wav 进行混合,或者加入背景噪音。之后,再随机遮盖约50%的音频信号,并在输出端预测被遮盖位置所对应的标签。WavLM 沿用了 HuBERT 所提出的思想,通过 Kmeans 方法将连续信号转换成离散标签,并将离散标签当作目标进行建模。形式化来讲,给定输入语音 X ,首先抽取其标签 Y,之后对 X 进行加噪和掩码,生成 X ? ,而 Transformer 模型需要通过输入 X ? 来预测被掩码位置的标签 Y。
图片
图1:WavLM 模型网络结构
大规模训练数据
WavLM 使用了94,000小时英语语音进行了预训练,这是目前开源英文模型使用的最大规模训练数据。来自于不同领域的大规模无监督语音数据有助于 WavLM 提高模型的鲁棒性。以往的研究大多只使用 LibriSpeech 或 LibriLight 数据集进行预训练,由于输入数据都是从有声读物中提取的,所以限制了预训练模型的泛化能力。而且电子书中的语音环境与真实场景中的有所不同,真实场景往往伴随着更多的噪音。
因此,研究员们使用了额外两个数据集扩展训练数据:
(1) 10,000小时的 GigaSpeech 数据,收集自电子书、播客和 YouTube,其内容涵盖艺术、科学、体育等多种主题。
(2) VoxPopuli 数据。这是一个大规模的多语言未标记音频数据集,由23种语言,超过40万小时的音频组成,收集自2009-2020年欧洲议会(EP)录音。研究员们只使用了 VoxPopuli 中24,000小时的英语数据进行预训练。
再加上 LibriLight 的电子书数据,研究员们总共收集了94,000小时的数据(包括 LibriLight、VoxPopuli 和 GigaSpeech)。微软亚洲研究院的研究员们相信,丰富的数据集可以提高模型的鲁棒性,因为其包含不同的音频背景、更多的扬声器和不同的内容。研究员们将数据集称为 Mix 94k hr 以简化描述。
图片
任务测评与实验结果
SUPERB(13项语音任务测评)
Speech processing Universal PERformance Benchmark (SUPERB)是由台湾大学、麻省理工大学,卡耐基梅隆大学和 Meta 公司联合提出的评测数据集,其中包含了13项语音理解任务,用于评测预训练模型的性能好坏。13项任务包括了:Speaker Identification(说话人识别)、Automatic Speaker Verification(说话人验证)、Speaker Diarization(说话人日志)、Phoneme Recognition(音素识别)、Automatic Speech Recognition(语音识别)、Keyword Spotting(关键词检测)、Query by Example Spoken Term Detection(QbE)、Intent Classification(意图分类)、Slot Filling(对话理解槽填充)、Emotion Recognition(情绪识别)、Speech Separation(语音分离)、Speech Enhancement(语音增强)和 Speech Translation(语音翻译)。
在微调模型的过程中,不允许更新预训练模型的参数,以此来衡量预训练模型是否可以在预训练中学习到对应信息。测评结果显示,WavLM 超越了之前的预训练模型,并且用更少参数的 base 模型超越了之前最好的 HuBERT large 模型。
图片
图2:WavLM 在 SUPERB Leaderboard 上的表現
说话人验证(Speaker Verification)
Speaker Verification 任务主要是验证两段声音是否为同一人所说,在语音领域有着重要的应用。研究员们使用 VoxCeleb 2 作为训练集,并在 VoxCeleb 1 上进行测试,测试集分为三个 :Vox1-O、Vox1-E 和 Vox1-H。在该任务中,研究员们选用了经典的 ECAPA-TDNN 作为下游模型,证明了预训练模型可以极大程度地降低说话人验证任务的错误率。
图片
表1:WavLM 在说话人验证任务 Vox1-O, Vox1-E 和 Vox1-H 上的表现
可以看到,在使用预训练模型之后,ECAPA-TDNN 模型的等错误率(Equal Error Rate)相对下降了超过50%,极大提升了模型的准确率;并且,在这个任务中 WavLM 依旧比 HuBERT 模型有着更好的效果。
由于在 Speaker Verification 任务上极好的表现,Hugging Face 使用 WavLM 作为种子进行 finetuning,制作了一个在线 Demo,检测两段语音是否来自同一说话人。
Demo 链接:
https://huggingface.co/spaces/microsoft/wavlm-speaker-verification
图片
图3:Demo 截图
说话人日志(Speaker Diarization)
说话人日志(Speaker Diarization)任务也被称为声纹分割聚类、说话人分割聚类,解决的主要问题是“什么时候,谁在说什么话”。即给定一个包含多人交替说话的语音,该任务需要判断每个时间点分别是谁在说话。比如,对于一段客户与客服的通话记录,该任务需要知道哪些时间段的声音是客户说的,哪些时间段的声音是客服说的。
图片
表2:WavLM 在说话人日志任务 CALLHOME 数据集上的性能
研究员们使用 CALLHOME 数据集对模型进行了测评,并选取了 EEND-vector clustering 作为 Diarization 的整体 pipeline,其分为说话人向量抽取以及聚类模块。从实验结果可以看出,WavLM 模型可以极大地降低说话人日志的错误率(Diarization error rate)。
语音分离(Speech Separation)
语音分离(Speech Separation)任务的目标是将一段含有多人的语音进行分离,保证输出每一个源只包含一段来自一个人的语音。研究员们利用 LibriCSS 数据集对语音分离任务进行了评测,该数据集会使用 ASR 模型测试语音分离模型分离出音频的词错率(WER)。研究员们选取了 Conformer 模型当作 Downstream 模型,实验结果如下图所示:
图片
表3:WavLM 在语音分离任务 LibriCSS 数据集上的性能
可以看到,WavLM 可以极大地提高分离模型输出的音频质量,在40% overlap 以及0 overlap 时候,都超过了基线的性能。
语音识别(Speech Recognition)
语音识别 (Speech Recognition)任务的目标是将一段语音转化为文字。在该任务中,研究员们使用了 Librispeech 数据集来验证 WavLM 的预训练效果,该数据集共包含960小时的有声电子书录音。研究员们考虑了四个大小不同的有监督子集进行微调:train-1h, train-10h, train-clean-100h 和全部960h Librispeech,并在标准测试集 test-clean 和 test-other 上进行比较。下表展示了在1h、10h和100h上的结果,可以看到在没有语言模型的情况下,WavLM 明显超越了 wav2vec2.0 的结果。在加上不同语言模型联合解码的情况下,WavLM 的结果与 wav2vec2.0 和 HuBERT 的结果相当,甚至更好。
图片
表4:WavLM 在语音识别任务 Librispeech 数据集1h、10h和100h上的结果
下表展示了在整个960h Librispeech 数据集上进行微调的结果。结果显示,WavLM 超过了所有有监督训练模型,并且取得了和 wav2vec2.0 与 HuBERT 相当的结果。该实验结果表明,虽然 WavLM 在预训练时引入了带有人工噪声和多说话人的输入,提升了其在多说话人任务上的性能,但并没有损害该模型在单说话人语音识别任务上的性能,反而在多个微调子集场景下超过基线,展示了 WavLM 预训练的有效性。
图片
表5:WavLM 在语音识别任务 Librispeech 数据集960h上的结果
未来,微软亚洲研究院的研究员们会继续探索如何训练更大规模的模型以达到更好的性能,并探究模型的压缩方法,使得模型可以在低资源设备上快速推断。此外,研究员们还会就如何将大规模无监督语音数据和文本数据进行联合训练等问题进行更多的探讨和研究。