长期以来,火山引擎为热门视频平台提供基于语音识别技术的智能视频字幕解决方案。简单来说,就是通过AI技术,将视频中的语音、歌词自动转化为文字,辅助视频创作的功能。然而,随着平台用户的快速增长,以及对语言更加多样化的需求,传统的监督学习技术逐渐遇到了瓶颈,这让团队着实举步维艰。众所周知,传统的监督学习会严重依赖人工标注的监督数据,尤其是在大语言的持续优化和小语言的冷启动上。以中文、英文等大语种为例,虽然视频平台为业务场景提供了充足的语音数据,但在监督数据达到一定规模后,继续标注的ROI会很低,技术人员必须考虑如何有效利用数百上万小时的未标注数据,进一步提升大语种语音识别的效果。比较小众的语言或方言,由于资源、人力等原因,数据标注的成本很高。在标注数据很少的情况下(10小时左右),监督训练的效果很差,甚至可能无法正常收敛;而购买的数据往往与目标场景不匹配,不能满足业务需求。因此,火山引擎语音团队迫切需要研究如何以尽可能低的标注成本充分利用大量未标注数据,提升少量标注数据下的识别效果,并在实际业务中落地。因此,无监督预训练技术成为视频平台ASR(AutomaticSpeechRecognition/自动语音识别)能力向小语种提升的关键。尽管近年来学术界在语音无监督预训练领域取得了许多重大进展,包括Wav2vec2.0[1]、HuBERT[2]等,但业界可供参考的实际案例却很少。综合来看,火山之声团队认为阻碍无监督预训练技术落地的原因主要有以下三点:模型参数数量多、推理开销高。大量未标记的数据需要更大模型的无监督预训练以获得高质量的语音表示。但是,如果将这样的模型直接部署到线上,会带来很高的推理成本。无监督预训练只关注语音表征的学习。需要结合大量纯文本训练的语言模型,共同解码才能达到预期的效果。它与端到端ASR推理引擎不兼容。无监督的预训练是昂贵的、长期的和不稳定的。以Wav2vec2.0为例,一个300M参数的模型使用64个V100GPU预训练60万步,耗时长达半个月;此外,由于数据分布的差异,业务数据的训练也趋于分化。针对以上三个痛点,进行了算法改进和工程优化,形成了完整且易于推广的实施方案。本文将从落地流程、算法优化、工程优化等方面详细介绍该方案。实现过程下图展示了低资源语言无监督预训练ASR的实现过程,大致可以分为三个阶段:数据收集、种子模型训练、模型迁移。基于无监督预训练的ASR落地过程具体来说,第一阶段的数据采集可以通过语言拆分、采购等方式采集目标语言的未标注语音、标注语音和明文数据。第二阶段种子模型训练是经典的“无监督预训练+有监督微调”过程。这个阶段将产生一个声学模型,通常根据连接主义时间分类(CTC[3])损失函数进行微调。声学模型结合纯文本训练的语言模型构成了完整的语音识别系统,可以取得很好的识别效果。之所以称为种子模型,是因为这种模型不适合直接在线业务,火山引擎更倾向于使用LAS(Listen,AttendandSpell[4])或者RNN-T(RecurrentNeuralNetworkTransducer[5])这种端到端模型在线部署。究其原因,主要是LAS/RNN-T具有优秀的端到端建模能力,近年来取得了优于传统CTC模型的效果,在业界得到越来越多的应用。VolcanoEngine针对端到端语音识别模型的推理和部署做了很多优化工作,形成了比较成熟的解决方案,可以支撑很多业务。在保持效果不损失的前提下,如果能够使用端到端的推理引擎,可以大大降低引擎的运维成本。基于此,团队设计了第三阶段,模型迁移阶段。它主要借鉴了知识蒸馏的思想,利用种子模型对未标注数据进行虚假标注,然后提供一个参数较少的LAS模型进行训练,同时实现模型结构的迁移和压缩的推理计算。整个流程的有效性已经在粤语ASR上得到了验证。具体实验结果如下表所示:首先,团队购买了1kh成品数据进行实验对比。直接训练的LAS模型表现不佳,字符错误率(CharacterErrorRate,CER)高达44.2%。火山引擎经过分析认为,主要原因是购买数据(对话)与业务测试集(视频)不匹配。在wav2vec2.0上的初步实验也发现了类似的现象。与使用采购数据进行预训练相比,VolcanoEngine使用与目标领域一致的数据进行预训练,在业务测试集上的CER可以从42.0%下降到29.4%;业务场景未标注数据可累积到50kh,模型参数数量从100M增加到300M,CER进一步下降到23.1%。最后,VolcanoEngine验证了模型迁移的效果,结合粤语模型解码50kh的无标签数据得到伪标签,并训练了LAS模型。可以看出,基于伪标签训练的LAS模型基本可以保持CTC种子模型的识别效果,模型参数数量减少三分之一,可以基于成熟端直接部署到端推理引擎。模型参数与CER对比最终,在模型结构和参数不变的前提下,团队在50kh的未标注业务数据和10h的标注业务数据下取得了23.0%的CER,比之前的低48%基线模型。在解决了在线计算和兼容性问题后,我们全程关注核心的无监督预训练技术。对于wav2vec2.0,火山引擎从算法和工程两个维度进行了优化。算法优化wav2vec2.0作为MetaAI在2020年提出的自监督预训练模型,开启了语音无监督表示学习的新篇章。其核心思想是通过量化模块将输入特征离散化,通过比较学习进行优化。模型主体类似于BERT,实现输入特征的随机mask部分。wav2vec2.0模型结构示意图(来源:wav2vec2.0图1[1])wav2vec2.0模型在业务数据上训练时,有两个棘手的问题:一是训练效率低,300M的大模型64卡片需要十几个天赋才能培养;二是训练不稳定,容易发散。为此火山引擎提出Efficientwav2vec来缓解以上两个问题。针对训练效率低的问题,团队通过降低模型的帧率,将输入特征从波形替换为滤波器组,并将帧率从20ms改为40ms来加快训练速度。这不仅大大减少了特征提取卷积的计算量,而且大大减少了Transformer内部编码的长度,从而提高了训练效率。针对训练不稳定的问题,通过分析无监督预训练的学习方式,结合业务数据的实际情况解决。比较学习损失可以用下面的公式表示:对于每一帧t,ct表示该帧的编码器输出,qt表示该帧的量化输出。另外,还有几帧需要被采样为负样本,所以当前帧和负样本帧的集合相当于一个动态构建的词汇表Qt。对比学习的优化目标是最大化当前帧编码与本帧量化结果的相似度,同时最小化当前帧编码与其他帧量化结果的相似度。不难发现,负样本与正样本的相似度以及负样本的数量直接决定了比较学习的效果。在实际操作中,业务数据的平均长度较短,仅提供一句话50个负样本是远远不够的。考虑到相邻语音帧之间的相似度较高,需要保证mask区域的连续性,从而增加表示重构的难度。为了解决以上两个问题,VolcanoEngine提出了两个改进:等长数据流:在预训练过程中,将整个训练集看成是一段音频,由每个句子的开头和结尾拼接而成,并且从中截取每个训练样本。得到长度。这样做是为了保证负样本的数量足够大,上下文编码网络的内部长度在不同的帧率下是一致的,从而保证训练的鲁棒性。Adaptivecontinuousmask:为了减轻数据噪声对训练的影响,选择较小的mask长度,强制每个mask区域连续,mask区域对应的音频长度在不同帧率下是等效的。这不仅降低了噪声数据下比较学习的难度,也适应了不同的帧率。对比wav2vec2.0(w2v)和Efficientwav2vec(w2v-e)对业务数据的效果,得到下表所示结果(所有模型均使用64个V100GPU训练):可以看到改进后的Efficientwav2vec与原来的wav2vec2.0相比,有稳定的5%性能提升,训练效率几乎翻倍。工程优化虽然团队提出的Efficientwav2vec从算法层面提升了近一倍的训练效率,但由于300M模型通信量大,训练通信依然波动较大,多机扩展效率较低。对此,火山引擎语音团队总结道:“为了提高模型预训练在同步梯度场景下的通信效率,我们基于BytePS的分布式训练框架完成了通信后端的Bucket组通信优化技术,并且可以实现数据并行效率10%的提升;同时,针对模型参数定义顺序和梯度更新顺序不同导致的等待问题,也实现了自适应参数重排序(ParameterReorder)策略”在这些优化的基础上,进一步结合梯度积累等技术,300M机型的单卡扩展效率从55.42%提升到81.83%,多机扩展效率从60.54%提升到91.13%.原来需要6.5天训练的模型现在只需要4天就可以训练完成,耗时缩短了40%。此外,为了支持未来探索的大规模、大数据场景,VolcanoEngine语音团队进一步完成了一系列针对超大规模模型的原子能力建设。首先,实现了本地OSS技术,解决了机器间扩展效率的问题,同时去除了优化器的大部分冗余内存占用;然后在同步梯度通信中支持了bucketlazyinit,减少了两倍参数量的显存占用,大幅降低显存峰值,适应显存资源紧张的超大模型场景;最后,在数据并行的基础上,支持模型并行和流水线并行,完成对1B和10B模型的验证和定制支持。这一系列的优化为大模型、大数据的训练打下了坚实的基础。目前,通过采用低资源ASR实现流程,已有两种低资源语言成功实现了视频字幕和内容安全服务。除了语音识别,基于wav2vec2.0的预训练模型在其他很多下游任务中也取得了显着效益,涉及音频事件检测、语言识别、情绪检测等,并将逐步应用于视频内容安全、推荐、未来分析、音频分发、电商客服情感分析等相关业务。无监督预训练技术的实施,将显着降低标注各种音频数据的成本,缩短标注周期,实现对业务需求的快速响应。总结与展望VolcanoEngine在实践中摸索出了一套基于wav2vec2.0的低资源语言ASR实现方案,解决了推理开销高的问题,实现了与端到端引擎的无缝对接。针对wav2vec2.0训练效率低、不稳定的核心问题,提出了Efficientwav2vec。与wav2vec2.0相比,对下游任务的效果提升了5%,预训练时间缩短了一半。结合工程优化,最终预训练时间较原版缩短70%。未来,火山引擎将在以下三个方向继续探索探索:无监督算法升级:wav2vec2.0后,语音无监督预训练的研究工作如雨后春笋般涌现,团队将持续跟进最新进展研究并将其内化到业务场景中。现阶段,我们主要尝试HuBERT[2]、MAE[6]和data2vec[7]等无监督模型,探索它们在不同下游任务下的表现。未来会从两个方面提升无监督模型的性能:根据不同的业务场景,设计高效自适应的无监督解决方案;设计一个通用的无监督模型来提高各种下游任务的性能。多语言和多模态:目前有很多无监督和多语言的研究工作,例如XLSR[8]。在此基础上,VolcanoEngine提出了S3Net[9],通过在预训练模型中划分多个稀疏子网络对不同语言进行建模,有效缓解了不同语言之间的相互干扰(LanguageInterference)问题,它具有对大型语料库语言有显着的性能提升效果。现有研究工作主要集中在音频编码器端,目前主流的端到端模型均采用encoder-decoder结构,即音频-文本多模态建模。团队判断纯音频端预训练已经不能满足端到端模型的需求。未来将探索多模态音频文本预训练,即海量非对齐音频文本与端到端模型的联合建模和纯无监督多模态预训练。大数据和大模型:现有模型在10万小时规模时性能接近饱和。该团队在使用10万小时标注中文数据训练的模型基础上,使用100万小时未标注数据进行NST[10]训练。在通用测试集上实现了CER相对降低7%,模型的泛化能力显着提升,在20个领域测试集上CER平均降低15%。需要更大的模型来完全吸收数百万小时的海量数据。目前,VolcanicEngine在1B参数阶的模型上取得了初步进展。大模型的性能上限高,随之而来的问题是难以实现。为了将大模型落地到实际业务中,未来会尝试各种模型压缩方式,如矩阵分解、权重裁剪、知识蒸馏等,尽可能达到无损压缩效果。火山语音,长期服务字节跳动各业务线的前沿语音技术通过火山引擎打通,提供业界领先的AI语音技术能力和优秀的全栈语音产品解决方案,包括音频理解、音频合成、虚拟数字人、对话交互、音乐检索、智能硬件等。目前火山引擎的语音识别和语音合成涵盖多种语言和方言,多篇技术论文入选各类顶级AI会议,提供领先演讲适用于抖音、简影、飞书、番茄小说、Pico等业务能力,适用于短视频、直播、视频创作、办公、穿戴设备等多种场景。参考论文[1]Baevski,A.,Zhou,Y.,Mohamed,A.andAuli,M.,2020.wav2vec2.0:语音表征自监督学习框架。神经信息处理系统的进展,33,pp.12449-12460。[2]Hsu,W.N.,Bolte,B.,Tsai,Y.H.H.,Lakhotia,K.,Salakhutdinov,R.和Mohamed,A.,2021.Hubert:通过隐藏单元的掩蔽预测进行自监督语音表示学习。IEEE/ACM音频、语音和语言处理汇刊,29,pp.3451-3460。[3]Graves,A.、Fernández,S.、Gomez,F.和Schmidhuber,J.,2006年6月。连接主义时间分类:用递归神经网络标记未分段的序列数据。在第23届机器学习国际会议论文集(第369-376页)中。[4]Chan,W.、Jaitly,N.、Le,Q.和Vinyals,O.,2016年3月。Listen,attendandspell:用于大词汇量对话语音识别的神经网络。2016年IEEE声学国际会议集成电路、语音和信号处理(ICASSP)(第4960-4964页)。IEEE.[5]Graves,A.,2012。使用递归神经网络进行序列转导。arXiv预印本arXiv:1211.3711.[6]He,K.,Chen,X.,Xie,S.,Li,Y.,Dollár,P.和Girshick,R.,2022。蒙面自动编码器是可扩展的视觉学习器。在IEEE/CVF计算机视觉和模式识别会议记录中(第16000-16009页)[7]Baevski,A.、Hsu,W.N.、Xu,Q.、Babu,A.、Gu,J.和Auli,M.,2022。Data2vec:语音、视觉和语言自我监督学习的通用框架。arXiv预印本arXiv:2202.03555.[8]Conneau,A.、Baevski,A.、Collobert,R.、Mohamed,A.和Auli,M.,2020年。用于语音识别的无监督跨语言表征学习。arXiv预印本arXiv:2006.13979.[9]Lu,Y.、Huang,M.、Qu,X.、Wei,P.和Ma,Z.,2022年5月。具有稀疏共享子网络的语言自适应跨语言语音表示学习。在ICASSP2022-2022IE中EE声学、语音和信号处理国际会议(ICASSP)(第6882-6886页)。IEEE.[10]Park,D.S.、Zhang,Y.、Jia,Y.、Han,W.、Chiu,C.C.、Li,B.、Wu,Y.和Le,Q.V.,2020年。改进了用于自动语音识别的嘈杂学生训练。arXiv预印本arXiv:2005.09629。
