Wav2vec2.0[1]、HuBERT[2]和WavLM[3]等语音预训练模型,通过数万小时无标注语音数据(如Libri-light)平台上的自监督学习显着提升了自动语音识别(ASR)、文本转语音(TTS)和语音对话(VC)等语音下游任务的性能。但是,这些模型都没有公开的中文版本,不易应用于中文语音研究场景。WenetSpeech[4]是NPU的音频、语音和语言处理研究组(ASLP@NPU)与Momenwenwen、HillShell联合发布的超过10000小时的多领域语音数据集。为了弥补中文语音预训练模型的空缺,我们开源了Wav2vec2.0中文版和基于10000小时WenetSpeech数据训练的HuBERT模型。为了验证预训练模型的性能,我们在ASR任务上进行了验证。实验结果表明,在100小时监督数据的ASR任务上,预训练模型学习到的语音表示相比传统声学FBank特征有显着的性能提升,即使只有100小时监督数据和1000小时监督数据的可比结果。模型链接:https://github.com/TencentGameMate/chinese_speech_pretrain模型介绍Wav2vec2.0模型图1:Wav2vec2.0模型结构(Baevskietal.,2020)Wav2vec2.0[1]是Meta在2020Train发表的无监督语音预训练该模型。其核心思想是通过向量量化(VQ)构建一个自建的监督训练目标,对输入做大量掩码后,使用对比学习损失函数进行训练。模型结构如上图1所示。基于卷积神经网络(CNN)的特征提取器将原始音频编码为帧特征序列,通过VQ模块将每一帧特征转化为离散特征Q,作为自监督目标。同时对帧特征序列进行mask,输入Transformer[5]模型,得到上下文表示C。最后,通过比较学习损失函数,缩短mask位置的上下文表示与对应的离散特征q的距离,即正样本对。原论文中,Wav2vec2.0BASE模型采用12层Transformer结构,使用1000小时LibriSpeech数据训练,而LAR??GE模型使用24层Transformer结构,使用60000小时Libri-light数据训练。训练时间方面,BASE模型使用64张V100显卡训练1.6天,LARGE模型使用128张V100显卡训练5天。在下游的ASR评测中,即使只有10分钟的监督数据,系统仍然可以得到4.8的词错误率(WordErrorRate,WER)结果。HuBERT模型图2:HuBERT模型结构(Hsuetal.,2021)HuBERT[2]是Meta在2021年发布的模型,模型结构与Wav2vec2.0类似,区别在于训练方式。Wav2vec2.0在训练时将语音特征离散化作为自监督目标,而HuBERT通过对MFCC特征或HuBERT特征进行K-means聚类获得训练目标。HuBERT模型采用迭代训练方法。BASE模型第一次迭代对MFCC特征进行聚类,第二次迭代对HuBERT模型第一次迭代得到的中间层特征进行聚类。LARGE和XLARGE模型使用BASE模型的第二次迭代提取特征进行聚类。从原论文的实验结果来看,HuBERT模型优于Wav2vec2.0,尤其是在下游任务的监督训练数据非常少的情况下,比如1小时10分钟。中文预训练模型实验配置我们使用来自WenetSpeech[4]train_l的10,000小时中文数据集作为无监督预训练数据。数据主要来自YouTube和Podcast,涵盖各类录音场景、背景噪音、说话方式等,其领域主要包括有声读物、评论、纪录片、电视剧、访谈、新闻、朗读、演讲、综艺、以及其他的。场景。我们分别基于Fairseq工具包[6]训练了Wav2vec2.0和HuBERT模型,遵循[1,2]的模型配置,每个预训练模型模型包括BASE和LARGE两种尺寸。对于BASE模型,我们使用8块A100显卡,梯度累积为8,模拟64块显卡进行训练。对于LARGE模型,我们使用16块A100显卡,梯度累积为8,模拟128块显卡进行训练。下游语音识别任务验证为了验证预训练模型在下游ASR任务中的效果,我们遵循ESPnet[7,8,9]工具包中Conformer[10]模型的实验配置,即,将预训练模型作为特征提取器,对输入的语音提取预训练模型的各隐层表示进行加权求和,得到的语音表示将代替传统的FBank特征作为输入转换器ASR模型。Aishell数据集我们使用Aishell178小时训练集作为监督数据进行训练,并比较使用FBank特征、Wav2vec2.0BASE/LARGE模型特征和HuBERTBASE/LARGE模型特征的字符错误率(CER)结果。同时,我们额外比较了使用WenetSpeechtrain_l10000小时中文数据集进行训练时在Aishell测试集上的效果。训练数据采用变速(0.9、1.0、1.1倍)和SpecAugment数据增强技术,解码方式为beamsearch,使用基于Transformer的语言模型进行rescoring。表1:不同模型在Aishell测试集上的词错误率(CER%)结果根据表1的结果可以看出,通过结合预训练模型和数万小时的无监督数据训练,下游ASR任务的效果得到了显着提升。尤其是使用HuBERTLARGE模型时,在Testset上获得了约30%的CER相对提升,在178h监督训练数据下取得了业界最好的成绩。WenetSpeech数据集我们使用100小时WenetSpeechtrain_s的中文数据集作为监督数据进行训练,并比较字符错误率(CharacterErrorRate,CER)结果。同时,我们额外对比了使用1000小时WenetSpeechtrain_m集和10000小时中文数据FBank特征的train_l集训练的模型结果。训练数据未使用变速或SpecAugment数据增强技术,解码方式为beamsearch,未使用语言模型rescoring。表2:不同模型在WenetSpeech测试集上的词错误率(CER%)结果根据表2的结果可以看出,通过将预训练模型与数万小时的无监督数据训练相结合,下游的ASR结果有了很大的提升。特别是当使用HuBERTLARGE作为语音表示提取器时,使用100小时监督数据训练的ASR模型优于使用1000小时FBank特征训练的模型,甚至接近于使用10,000小时数据训练的模型。更多语音下游任务的实验结果,请关注GitHub链接(https://github.com/TencentGameMate/chinese_speech_pretrain)。欢迎您使用我们提供的中文语音预训练模型开展研究工作,探索语音预训练模型在中文及相关场景的应用。
