首发于 RUC AIM3
全网最全的音频预训练综述

全网最全的音频预训练综述

相比在NLP和CV领域的百花齐放,音频相关的预训练不管是工作还是网上的资料都不是很多,而少并不意味着不重要,相反这个领域有更多可能挖掘的空间。今天我们就来梳理一下音频预训练的发展脉络和相关工作。本篇综述分为 相关知识、音频预训练发展脉络、音频预训练方法介绍、音频预训练下游实验效果

作者简介

阮璐丹,硕士二年级,来自中国人民大学信息学院AI·M3实验室,研究方向为视频语义理解、多模态预训练

郭帅,硕士二年级,来自中国人民大学信息学院AI·M3实验室,研究方向为语音合成、歌唱合成

相关知识

MFCC特征抽取过程:

首先我们先带大家回顾一下对语音信号抽取传统特征的过程。对于不熟悉语音信号处理的同学,很容易混淆文献中经常提到的线性谱、梅尔谱、MFCC特征等概念,我们在此为大家做简单的梳理。

对于语音声学MFCC特征的提取主要流程如上图所示,我们将简单讲解下各个步骤的作用以及中间输出所对应的频谱特征。

  • 分帧、预加重、加窗

分帧:语音信号是时变的信号,为了便于处理,我们假设在一个很短的时间范围内它是一个稳定的(stationary)系统。因此我们通常把语音信号分成20-40毫秒(ms)的帧。之所以选择这个长度,是因为如果太短了每一帧的样本不够,无法估计频谱;而太长了则它的变化会太大从而不是我们假设的稳定系统。为了避免时间窗的边界导致信息遗漏的问题,因此,在对从信号中取每一帧的时间窗进行偏移的时候,帧和帧之间需要有一部分的重叠区域。这个时间窗的偏移量,我们一般取为帧长的一半,即每一步都偏移一帧的大约二分之一之后的位置,作为时间窗取下一帧的最终位置。这样做的好处是,避免了帧与帧之间的特性变化过大。

预加重:为了避免时间窗的边界导致信息遗漏的问题,因此,在对从信号中取每一帧的时间窗进行偏移的时候,帧和帧之间需要有一部分的重叠区域。这个时间窗的偏移量,我们一般取为帧长的一半,即每一步都偏移一帧的大约二分之一之后的位置,作为时间窗取下一帧的最终位置。这样做的好处是,避免了帧与帧之间的特性变化过大。

加窗:在之前的分帧过程中,直接将一个连续的语音信号切分为若干个片段,会造成截断效应产生的频谱泄漏,加窗操作的目的是消除每个帧的短时信号在其两端边缘处出现的信号不连续性问题。

  • 快速傅立叶变换

在经过上述的一系列的处理过程之后,我们得到的仍然是时域的信号,而时域中可直接获取的语音信息量较少。在进行进一步的语音信号特征提取时,还需要将每一帧的时域信号对应转换到其频域信号。对于存储在计算机上的语音信号,我们需要使用离散的傅里叶变换,由于普通的离散傅里叶变换的计算复杂度较高,通常使用快速傅里叶变换来实现。这一步得到的是 复数矩阵

  • 取绝对值或平方值

在完成了快速傅里叶变换之后,得到的语音特征是一个复数矩阵,它是一个能量谱,由于能量谱中的相位谱包含的信息量极少,所以我们一般选择丢弃相位谱,而保留幅度谱。丢弃相位谱保留幅度谱的方法一般是两种,对每一个复数求绝对值或者求平方值。这一步得到的是 线性谱(取绝对值) 或者 功率谱(取平方值) 特征。

  • Mel滤波

Mel尺度是建立从人类的听觉感知的频率——Pitch到声音实际频率直接的映射。人耳对于低频声音的分辨率要高于高频的声音。通过把频率转换成Mel尺度,我们的特征能够更好的匹配人类的听觉感知效果。这一步得到的是 Mel谱 特征,也称作 FBANK 特征。

  • 取对数

在得到上一步的FBANK特征之后,由于人耳对声音的感受是成对数值增长的,所以需要将数值再进行一次对数运算,以模拟人耳的感受。我们需要对纵轴通过取对数进行缩放,可以放大低能量处的能量差异。这一步得到的是 log-FBANK 特征。

  • 离散余弦变换、计算动态特征

在上一步取了对数之后,我们还需要对得到的N维特征向量值,再进行一次离散余弦变换(DCT)。做DCT的根本原因是,不同阶数信号值之间具有一定的相关性,而我们需要去掉这种相关性,将信号再映射到低维的空间中。

上述做法仅仅体现了MFCC的静态特征,而其动态特征还需要使用静态特征的差分来表示。通过将得到的动态的特征,和前一步得到的静态特征相结合,可以有效地提高这种语音识别系统的识别性能。将静态特征和动态特征的一阶、二阶差分值合并起来,当静态特征是13维的特征向量时,合并动态特征后,总共有39维特征。

CTC loss:X映射到Y,其中,X的长度>Y 的情况下的loss: zhuanlan.zhihu.com/p/42

VQ 量化: 《Neural Discrete Representation Learning》 提出的一种连续特征离散化的方法,原用于图片的auto-encoder。

音频预训练发展脉络

这张图自上而下表述了音频预训练工作的发展脉络。最早的CPC、APC、NPC 首先把无监督学习的方法引入了音频预训练(对比学习、自回归)。在此基础上PASE、Mockingjay、TEAR进一步探究了无监督音频预训练的不同方向,包括多任务学习、transformer框架的使用、不同的mask策略。此后微软的wav2vec系列将音频预训练提升了ASR的表现,在Wav2vec系列的基础上,HuBERT、WavLM进一步提升了音频ASR的能力和泛化性。

音频预训练方法介绍

和其他领域一样,音频预训练的目的是获得音频 general 的特征应用于下游任务。但音频比起图片,文本的不同在于1. 长时(连续信号、无 dictionary);2. local smoothness(即帧与帧之间差距很小);信号混杂(鸡尾酒效应:同一段音频可以有多个说话人、多种声音单元)。因此,如何迁移其他领域的预训练的方法更好地适应音频特征就成了以下工作的重点。

音频预训练的兴起和发展

1. CPC《 Representation Learning with Contrastive Predictive Coding

贡献:音频预训练最早的工作,用Contrastive learning做音频特征生成。

模型结构:输入 16K audio wav, resnet blocks做帧级特征提取,GRUs做上下文信息提取,每帧10ms。用历史信息预测未来 k步,negative samples 来自同batch的其它samples,用info-nce 做N分类。

APC & VQ-APC 《 An Unsupervised Autoregressive Model for Speech Representation Learning 》&《 Vector-Quantized Autoregressive Predictive Coding

贡献:APC 提出auto-regressive 无监督音频预训练模型、VQ-APC在APC基础上引入VQ层。两者phone classification、 speaker verification上有提升。

模型:APC的输入为log Mel spectrograms,网络部分使用3层CNN和单向LSTM,训练通过历史 {t1,t2...tk-1} 来预测未来 {tk+n...tk+k} (与CPC的区别)。 用L1 loss 做自回归音频预训练。因为作者认为使用对比学习,步数和negative sample的选择都会影响音频特征,比如,negative 从同batch中选择的做法无益于模型学习说话者信息。而VQ-APC在APC基础上增加了VQ量化层。进一步提升了模型在下游任务上的表现。在实验中作者发现,不同层的预训练模型信息偏重不一样、比如 在第三层GRU前面做量化音素识别效果更好,说明越高层输出越接近语义的信息。

2. NPC《Non-Autoregressive Predictive Coding for Learning Speech Representations from Local Dependencies》

贡献:提升效率、用局部音频无监督学习音频帧特征

模型:NPC比起它的前辈们,采用了局部音频和双向自回归的方法。输入频谱图,用Masked ConvBlocks 去做帧级别音频提取。L1 loss复原被mask的音频。实验表明在更高效的前提下, NPC在音素识别和说话人识别达到与之前方法comparable。

3. Mockingjay《Mockingjay: Unsupervised Speech Representation Learning with Deep Bidirectional Transformer Encoders》


贡献:根据过去和未来的信息预测当前帧,利用Transformer+预训练,最后在phoneme classification, speaker recognition, and sentiment classification 任务上达到最好。

模型:利用Transformer双向编码的预训练结构,针对音频的特点做了一些调整。 其中包括:1.针对音频序列长:positional encoding 选择的是sin,并用reshape对音频序列downsampling

针对音频连续性强:MAM采用mask15% frames, 80%置0,10% random 替代,10%不动(减轻inference 和training的mismatch)。为了防止local smoth,每次mask连续mask Cnum帧。

4. TERA《TERA: Self-Supervised Learning of Transformer Encoder Representation for Speech


贡献:在Mockingjay的基础上进行改进。引入了三种数据增强的方式:1.在时间维度上mask,2.在特征维度上mask,3.以及对于整个segment加一些高斯白噪声。下游任务包括phoneme classification, keyword spotting, speaker recognition,automatic speech recognition (ASR)。

实验证明 time alteration 有利于 phoneme prediction, keyword detection, and speech recognition。 frequency alteration 有利于 speaker prediction accuracy。magnitude alteration 对所有任务都有有利。

5. PASE:《Learning Problem-agnostic Speech Representations from Multiple Self-supervised Tasks》

贡献:探究了多个自监督任务的speech representation训练方法。实验结果证明训练得到的特征对speaker recognition、ASR以及情感识别等任务表现都有提升。

方法: PASE(encoder)+Regressors(解码器)+Discriminators(鉴别器)。 backbone 为CNN。7个代理任务分别是:

  • 回归任务

a. waveform:解码器解码出原来的波形;

b. LPS:预测对数功率谱;

c. MFCC:预测梅尔倒谱系数;

d. Prosody:预测 基频、过零率、 voice/unvoice、能量。

  • 分类任务(三元组)

e. LIM:positive-anchor为同一个句子的不同帧,negative 为不同句子的随机帧;

f. GIM:positive-anchor为同一个句子的不同段,negative 为不同句子的随机;

g. SPC:positive为未来段,negative为过去段。

实验:实验显示这种特征在speaker recognition、ASR以及情感识别三个任务比传统音频特征更有效。每个worker都能带来一定收益。

音频预训练走向ASR

6. DECOAR:《Deep Contextualized Acoustic Representations For Semi-Supervised Speech Recognition》


贡献:提出一个半监督ASR的模型。可以用到大量数据无监督+少量数据有监督(ASR)。

模型:双向LSTM, 给定周围信息,预测当前帧(防止local smothness,会预测连续K帧)。无监督训练encoder。然后freeze encoder,将 reconstruction layer 换成两层Bi-LSTM做ASR有学学习(CTC loss)。

实验:预训练数据集 WSJ/LibriSpeech。从音素到语言使用语言模型 WFST-based decoding

using EESEN(《EESEN: End-to-end speech recognition using deep RNN

models and WFST-based decoding》)。消融实验对预训练的window size做了分析,发现 3.8

个连续单词的长度是最好的。

7. wav2vec《wav2vec: Unsupervised Pre-training for Speech Recognition》


贡献:将无监督音频预训练用到了ASR,验证了大规模无标注数据可以降低ASR模型对标注数据的需求、提升ASR模型的表现。

方法:两组CNN,前一组encoder network 每个特征30ms,步长10ms,后一个 context network 上下文学习每个token 210ms。CPC类似,利用通过历史信息预测未来步对的音频特征。然后用该网络训练得到的特征替代log-mel filterbank features输入另一个声学模型。

实验:作者发现数据的归一化很重要,有利于泛化到不同数据集。下游任务是3个因素识别的数据集 TIMIT+Wall Street Journal+Librispeech。预训练用的数据集是三个的结合。作者发现经过无监督预训练的音频特征相比传统特征,在训练语言模型时对标注数据的需求大大减少(如下图,同样只有8个小时标注数据,Wav2vec 要比log-mel filterbanks features 好36%)。

(有标签数据越少,Wav2vec越有优势)

8. vq-wav2vec《vq-wav2vec: Self-Supervised Learning of Discrete Speech Representations》

贡献:在wav2vec的基础上增加了VQ层,并BERT,将连续的语音信号处理和离散的文本联系起来。该方法可以作为wav2vec2.0的过渡,具体细节按下不表。

9. wav2vec2.0《wav2vec 2.0: A framework for self-supervised learning of speech representations》

贡献:把离散化做无监督标签学习连续的语音表示,验证了在这种模式下ASR可以使用更少的标注数据(跟之前的工作相比,离散化结果只用来做训练,不再输入到context 网络中学习上下文表示)。

方法:CNN(获得局部的音频表征)+Transformer(获得全局音频信息)。position embedding 采用CNN而非固定。wav输入CNN获得帧级别语音表示,mask分为两种,时序上mask(train过的mask embedding), channel上mask(置零)。训练loss 分成两个:Mask 重构的contrastive loss和codebook diversity loss。finetune的时候固定CNN,加上少数层线性层预测字符/音素,文本输出需要接一个Language Model。

实验:实验显示,只10分钟的监督数据就可以达到对对标传统特征的speech recognition 的效果。

10. HuBERT《HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units》

贡献:预设计codebook并更新codebook,ASR比wav2vec2.0更好。

方法:模型上CNN 得到帧级别音频特征, Transformer获取音频上下文特征,mask 采用 wav2vec2一样的策略,每个token p%的概率作为mask起始点,连续mask 10帧,可overlap, 对mask 和不mask的部分都使用prediction。在码本更新上,使用手动特征(例如mfcc)会限制模型的上限,因此会更新码本。第一轮迭代时,label由MFCC做k-means 生成。第二轮迭代时,输出的768维特征重做K-means 聚类生成新的码本。

音频预训练不止ASR

11. WavLM《WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing》

贡献:1.之前的ASR系列工作不能很好处理 speaker 识别,多人speech分离等任务。2.使用librospeech 作为预训练数据集和下游数据是不匹配的。本文提出WavLM,引入噪声合成声音,预测mask 部分的label, WavLM在保持ASR 与HuBERT 和wav2vec2 comparable的性能同时,能抽取音频universal的特征应用于更多非ASR的任务(说话人识别、鸡尾酒问题等)。

模型:模型总结构基于HuBERT。两点改进:1.position embedding改成relative position embedding;2.Denoising Masked Speech Modeling:音频合成模拟混合背景音的训练数据。具体做法:挑选一部分训练数据和噪声(训练数据集有一个DNS 噪声数据集)或者第二个说话人的声音混合在一起。保证重合区域小于50%并且保证原音频主说话人。模型需要识别主说话人,预测主说话人的说话内容。

预训练的loss 和HuBERT一样,输入是处理后的声音,标签是处理前的声音生成的(先MFCC,再换codebook)。

实验:训练数据比起之前只用librospeech 增加了 GigaSpeech data(10k hours),VoxPopuli data(400k 多语言训练数据,作者只用了24k英文),总共 94K hours of data( LibriLight+ VoxPop-uli+GigaSpeech),下游任务包括speaker identification, automatic speech recognition, phoneme recognition, intent classification and slot filling tasks,。实验发现,模型的不同层学到的知识是不同的。底层与speaker相关任务更紧密,顶层对 automatic speech recognition, phoneme recognition, intent classification and slot filling tasks 更重要(和图像有点类似)。

12. UniSpeech《UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data》

贡献点:把语音感知(无监督学习)和语音识别(CTC有监督学习)联系起来,提高ASR音频的泛化性(跨领域和跨语言)。

模型:模型结构基于wav2vec2.0。loss做了三处修改:1在大数据集上label的CTC loss;2.在大数据集上无监督的contrastive learning;3.在其他数据集(非目标数据集)上无监督的contrastive learning(例如其他语言的数据集,为了增强预训练模型的泛化能力)。

最后,CTC是可以学音素的,contrastive 也是学音素的,作者发现这两者结合带来的收益提升有限,因此在计算CTC的时候,随机把 连续音频表征随机替换成对应的codebook token,这样学到的codebook 是CTC 引导的,会有进一步效果提升。

Finetune 到下游数据集N时,换掉预训练使用的CTC线性变换层,针对下游数据集重新计算训练CTC层。

【音频预训练下游实验效果】

关于利用预训练好的语音自监督特征进行下游任务的学习,我们主要分为分类任务和回归任务两种。由于各个论文中提到的方法,实验细节多多少少都会有所不同,为了更加公平的对自监督特征进行对比,下文中的实验结果主要来自SUPERB benchmark上的表现。

【分类任务】

SUPERB对分类任务总共进行10个纬度的考察,主要分为Content相关、Speaker相关、Semantic相关、Paralinguistics相关共四个大类。各个任务的相关定义、指标和数据集详见下面的说明。


各自监督特征的实验结果及结论:

1. 在PR,KS,IC,SID,ER这五个简单任务上,下游模型用linear model,

1. FBANK特征在全部5个任务上都不work

2. wav2vec 2.0 , HuBERT,WavLM在PR和IC任务上,仅仅用linear model就要明显优于其他特征。同时在另外三个任务上的效果也很好

2. FBANK特征,在ASR,SF,ASV,SD任务中,下游模型使用non-linear model时效果能超过某些自监督特征

3. PR任务上的表现与ASR任务存在一定相关性,在PR任务中的巨大优势在ASR任务中同样有体现,e.g. wav2vec, wav2vec 2.0, HuBERT, WavLM 。同时相比其他特征,wav2vec 2.0 , HuBERT, WavLM在ASR任务上表现明显更好

4. ASV and SD 任务表明,很多自监督特征在提取real-world speaker信息时,不如FBANK;而HuBERT将ASV任务上的效果从9.56降到5.98

5. 总体来看,wav2vec 2.0 ,HuBERT,WavLM 在上述任务中的表现要普遍强于其他特征

【回归任务】

回归任务上主要进行的是利用语音自监督特征,在VCC2020数据集上进行声音转换(voice conversion)的实验,实验相关的模型架构图如下所示:

1. simple:将上游任务中的特征经过FFN、LSTM后得到mel-spec

2. simple-AR:encoder将上游任务中的特征经过FFN,decoder的输入除了encoder out之外,还有上一帧输出的mel-spec,自回归式的生成当前帧的mel-spec

3. Taco2-AR:encoder换成了没有Attention的tacotron2架构(Tacontron中Attention对于VC任务不起效果),对于上一帧输出的mel-spec加入了prenet,同时在decode时加入了d-vector

对于声音转换后的结果,客观评测和主观评测的效果如下所示:

客观评测 - 对比不同模型结构:

  1. 对于simple结构,大多数S3R特征加入AR-loop后,WER显著变好 – 吐字更清晰
  2. 结构换成Tacotron2后,
    1. ASV指标显著变好,WER都有所下降 – 声音conversion的效果更好,但吐字变得不清晰
    2. MCD值在三种模型中最好,后续实验只做Taco2-AR


客观评测 - 对比不同Task:

  1. 只在mono-lingual上训练的S3R特征,在cross-lingual任务上也能表现很好,证明S3R有着不错的跨语言的能力,但是相比intra-lingual A2O,跨语言A2O在WER和ASV两个指标都有所下降
  2. 相比intra-lingual A2O, intra-lingual A2A任务上 WER表现显著变好,MCD、ASV表现下降。可能的原因有:

· 在A2A VC setting,S3R还不能很好的对特征进行解构,导致合成时包含了太多speaker信息

· 需要对 speaker encoder 和 synthesizer的 joint train

主观评测 - 对比 VCC2020 Top Systems:

  1. 在intra-lingual A2O任务上vq-wav2vec要比其他自监督特征的效果好
  2. 在两个A2O任务上, vq-wav2vec与 VCC2020 Top Systems在 Naturalness上差距较大,在Similarity上与USTC-2018,CASIA效果类似
  3. 在A2A任务上, vq-wav2vec要强于现阶段A2A VC SOTA – S2VC

参考文献和资料】

编辑于 2022-01-29 15:55

文章被以下专栏收录

    RUC AIM3

    中国人民大学AI·M³实验室多媒体内容理解研究交流