Fork me on GitHub

ModelScope语音交互技术

以下文章来源于 https://zhuanlan.zhihu.com/p/637849790

导读 本文将介绍达摩院语音实验室在魔搭社区开源的工业级语音识别模型Paraformer。

全文目录:

  1. ModelScope语音方向模型总览

  2. Paraformer非自回归端到端语音识别模型

  3. 如何在ModelScope社区体验和定制训练Paraformer模型

  4. ModelScope语音方向其他模型定制流程介绍


分享嘉宾|李泽瑞 阿里巴巴达摩院 语音算法工程师

编辑整理|余安琪

出品社区|DataFun



01/ModelScope语音方向模型总览

1.语音AI背景介绍

首先来回顾一下语音AI的发展史。

语音AI的发展史就是创新不断解锁应用的历史。从早期的孤立词语音识别、PC端的Speech API,到1997年桌面连续词语音识别,2009年之后深度学习在语音识别领域兴起,基于深度神经网络的语音识别显著提升了连续语音识别系统的性能。此后,更多的语音交互应用被解锁,比如2011年以Apple Siri为代表的手机语音助手,2012年以Google Voice Search为代表的手机语音搜索和输入法,2014年以Amazon Echo为代表的智能音箱,以及2018年以阿里巴巴小蜜为代表的电话IVR,2021年达摩院又提出了听悟,开始解锁会议语音AI。从人机语音交互,到人人语音交互,未来语音AI的发展将建立规模化的AI生态,为研究者提供更好的基础设施,从而产出更多创新,让AI的应用拓展到各行各业。


为了促进AI生态,达摩院推出了ModelScope魔搭社区,希望通过AI模型的开源开放,来促进创新、推广应用。ModelScope社区提供了一站式的模型服务,包括模型管理、检索、下载、使用、微调、部署和应用等。

2.ModelScope语音方向模型总览

达摩院语音实验室将阿里云AI背后的工业级模型,通过ModelScope社区进行了开源开放,其中包括语音识别、语音合成、语音唤醒、语音信号处理和口语语音处理五大方向的超过50个模型,提供给开发者进行应用和部署。

其中语音识别模型超过30个,涵盖10多个语种,包括阿里云服务基于UniASR的自回归端到端语音识别系统和基于Paraformer的非自回归端到端语音识别系统。

语音合成方向目前开源了13个模型,涵盖3个语种,其中男女声发音人模型各4个,多发音人模型5个,后续还将不断上线新模型。

在语音唤醒方向,开源了两个模型,代表了达摩院的两种技术路线。语音信号处理方向也开源了两个模型,分别用于降噪和回声消除。口语语言处理,开源了最新研究成果PoNet的两个模型。

02 /Paraformer非自回归端到端语音识别模型

1.语音识别原理

机器将人的语音转化为文本,接收的音频信号先经过加窗和分帧得到语音帧,然后通过傅立叶变换语音特征从时域的采样点转化为频域得到语音特征,得到的语音特征送入到语音识别系统输出识别文本。传统的混合的语音识别系统采用多个模块级联方式,系统构建复杂、门槛较高,如早期的隐马尔可夫模型。

学术研究和工业落地更多采用端到端语音识别(seqtoseq模型)实现语音特征输入到输出文本的关系,相对混合系统比较简单,最具代表性的是基于transformer的语音识别系统。

端到端语音识别系统分为根据建模不同,分为自回归及非自回归两种,自回归在decoder端,当前时刻输出依赖于前一时刻预测的输出,对建模结构对并行推理有局限性;另外一种是非自回归的端到端,可以去除token依赖关系,每个token独立分布,对并行推理比较友好。

构建单步非自回归端到端语音系统需要解决三个问题:

  • 准确预测输出序列长度,送入预测语音信号判断包含多少文字。
  • 如何从encoder 的输出中提取隐层表征,作为decoder的输入。
  • 如何增强非自回归预测内部依赖的建模能力。

语音识别三类错误包括插入错误,删除错误,替换错误。图中可以看到,非自回归相对于自回归模型替换错误明显增多,因为非自回归模型的独立性假设使得上下文建模能力比较弱,同音和近音增多导致的。

针对以上这三个问题,达摩院提出了Paraformer非自回归端到端语音识别框架,下面进行详细介绍。

2.Paraformer非自回归端到端语音识别框架架构

Paraformer整体框架如下图所示。

包括Encoder、Predictor、Sampler、Decoder和Loss五个部分。

声学特征首先通过Encoder建模送入Predictor模块,Predictor模块通过预测token的数目并抽取embedding,送入Decoder当中。训练层面Predictor的输出会有MAE Loss预测token的number,Decoder输出有CE Loss以及一个基于MWER的区分性Loss优化语音识别最终识别目标。

接下来展开介绍各个子模块。

(1)Encoder

采用SAN-M结构,对于语音建模来说,全局建模和局部建模都极为关键,所以标准的Self-attention层增加了局部建模模块Memory Block,从而增加Self-attention的局部建模能力。

(2)Decoder

离线和流式系统采用不同结构。离线识别使用双向SAN-M,流式识别采用单向的SAN-M,并结合基于SCAMA的流式注意力机制来实现。SCAMA流式注意力机制原理如上图所示,首先针对语音特征进行分chunk操作,送入encoder建模后进入predictor分别预测每个chunk的输出token数目。Decoder在接受到token数目和隐层表征后,来基于SCAMA流式注意力机制预测每个chunk的输出。

(3)Predictor

基于CIF来预测输出token的数目,并提取隐层表征作为decoder的输入。即将encoder预测输出送入函数,将每帧的预测输出转化为一个0-1之间的概率分布,连续给集合的概率得到一个域限门值 β,根据 β 输出一个token。

训练的时候额外采用MAE Loss来使得预测的概率和等于整个输出的token数目。推理的时候采用门限值 β 为1,也就是累积到1的时候输出一个token,来预测整条语音的输出字数。

(4)Sampler

上图中展示了四种常见的建模方式:

第一个是自回归Decoder,即当前时刻依赖前一时刻的输出;

第二个是标准的单轮迭代的非自回归端到端Decoder,使用独立建模方式;

第三个是 MLM,它是多轮迭代非自回归常采用的方式,将某些时刻替换成mask,利用周边的token预测mask的位置,并通过多轮迭代的方式提升预测精度。

第四个是Paraformer采用的建模方式,通过GLM对隐层表征和grand truth的label进行采样,预测隐层表征对应输出的token来提升token的内部建模能力,从而减少Paraformer中的替换错误。

当前主要是Paraformer离线模型已开源,流式模型在规划中,后续逐步进行开源。

3.Paraformer-large

下面介绍一个开源的工业级语音识别模型,Paraformer-large。

Paraformer-large基于Paraformer模型结构,结合阿里工业级的数据进行训练,相比于学术模型具有以下特点:

  • 更大的模型结构,Encoder端包含50层,Decoder端包含60层,拥有220M参数量;
  • 更高的效率,非自回归结构,同时建模时采用了6倍下采样的低帧率建模方案,计算量降低接近6倍,再配合GPU推理,效率可提升5-10倍;
  • 更高的性能,多个开源ASR任务取得了SOTA的效果,与云服务效果相当。

训练数据主要来自两部分,首先是精标通用数据,包括半远场、输入法、音视频、直播、会议等领域;进一步,我们还采用了OCR和ASR 交叉验证产生在直播美食游戏等领域的低成本数据,通过多轮迭代提升建模能力。

使用通用数据的基础上进一步结合低成本数据进行拓展训练,平均CER获得了百分之十的下降。

相比学术上的小模型,还会引入训练策略,比如Layer-wise Leanrning Rate、随机层删除和头删除,来提升模型的鲁棒性和泛化型。

Parafomer-large模型在开源数据集AISHELL-1、AISHELL-2,及 WenetSpeech上表现良好,并且在SpeechIO评测榜单上排名第一,相较于其它云服务有明显的优势,。

03 /如何在ModelScope社区体验和定制训练Paraformer模型

登录ModelScope社区主页,在模型库中选择语音识别类别,就可以看到该模型。

在模型首页右侧,可以看到一个示例,在这里可以进行体验。

Parafomer-large集成了如下一些新feature:

  • 长音频模型集成语音端点检测,语音识别,标点和时间戳功能,可针对数小时音频直接识别,并输出带标点的文字,以及字级别的时间戳。
  • 热词版可基于用户的热词列表增强记忆,提升模型对热词的召回和精度,可在某些垂直领域通过该模型提升热词表现效果。

同时,训练工具FunASR也进行了开源,支持学术模型和工业模型进行推理和微调,架起工业和学术研究的桥梁,进一步促进语音生态发展。

上图展示了ModelScope和FunASR的关系,ModelScope提供模型托管服务,集成高层API的方式对FunASR封装,提供方便快捷的统一接口,支持模型推理和微调,操作简单;FunASR作为基础训练框架,独立于ModelScope提供模型的推理与微调,支持学术模型进行训练,因ModelScope封装比较深,对于定制化程度要求比较高的用户可以通过修改源码来满足实际需求。

FunASR除了支持常见的ASR结构,还支持其它语音相关模型,如VAD语音端点检测模型、中文标点模型、Data2vec预训练模型,以及说话人确认模型等。

训练代码针对一千小时以上的语音,Dataloader支持更大数据集训练,模型训练收敛更快效果更好;数据格式上支持更多格式,除了wav、wav.scp、Fbank等格式外,还支持MP3格式、音频bytes、音频采样点等。

除代码以外,还提供各模型recipe,分别存放在egs和egs_modelcope目录下。egs目录下主要是学术模型,方便用户复现论文结果;egs_modelscope目录下主要包括工业模型推理和finetune脚本,方便用户快速基于私有数据对模型进行定制。

这里以Paraformer-large为例,介绍如何基于私有数据进行模型定制。

首先,按上图所示格式进行数据准备,text路径存放音频标注和wav.scp存放音频文件。

数据准备完后可以对Paraformer-large模型进行微调,可以对如图所示的训练参数进行调整。数据量大的时候,通过设置dataset_type为"large"来训练大数据集的模型。调整完直接执行python文件即可,方便快捷。

模型训练完后进行模型推理,支持wav、pcm、wav文件url、wav二进制数据等。

推理代码通过调用ModelScope的pipeline得到语音识别输出。如果希望基于finetune之后的模型进行识别,只要将model名字改成finetune后的路径文件即可。

支持VAD、长音频,ASR中文标点模型等多个模型自由组合,传入多个模型整合构建pipeline。长音频支持时间戳输出,可以通过设置参数关闭。还开源了配套LM模型,设置如图所示参数,支持LM模型调用。

FunASR支持模型runtime部署,新版本支持模型导出功能,即一键导出onnx和touchscripts格式模型用于部署;但目前只支持Paraformer及基于Paraformer本地finetune后的模型。

经在cpu上进行测试发现,基于ModelScope onnxruntime部署的模型推理速度相对pipeline提升3倍,rtf实时率从0.110降低到0.038。同时增加了grpc服务功能,支持ModelScope推理pipeline进行服务部署和导出的onnxruntime格式部署。

效果表现上,基于Paraformer-large模型在开源数据集AISHELL-1和AISHELL-2的finetune 效果上来看,在对应测试集上达到CER接近百分之十下降。

在私有数据(180小时领域精标数据集)test1和test2上finetune ,发现CER有1个多点的下降;除了识别率外关键词的识别准确性也有提升,结果上看关键词召回有20个点的提升,说明私有数据finetune能产出更优的领域模型。

04 /ModelScope语音方向其他模型定制流程介绍

1.语音合成

语音合成主要有两部分:数据准备和模型训练。

数据准备,可以使用ModelScope提供的语音合成数据,或符合阿里标准的语音数据集进行微调。训练模型时需替换本地数据集路径及官方模型路径,训练完可使用定制模型进行语音合成操作。

2.语音降噪

通过官方提供的脚本工具实现数据下载及生成,生成纯净语音、噪声和混合噪声三个文件夹,替换本地数据集和模型路径,从而实现模型微调。

3.语音唤醒

训练套件已进行开源,同样是在配置完训练参数后可以直接启动训练并体验。

以上就是本次分享的内容。最后欢迎大家关注ModelScope魔搭社区、语音社区以及FunASR社区,交流讨论。



本文地址:https://www.6aiq.com/article/1687007721341
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出