全文目录:
1.ModelScope 语音方向模型总览
2.Paraformer 非自回归端到端语音识别模型
3.如何在 ModelScope 社区体验和定制训练 Paraformer 模型
4.ModelScope 语音方向其他模型定制流程介绍
分享嘉宾|李泽瑞 阿里巴巴达摩院 语音算法工程师
编辑整理|余安琪
出品社区|DataFun
01
首先来回顾一下语音 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
机器将人的语音转化为文本,接收的音频信号先经过加窗和分帧得到语音帧,然后通过傅立叶变换语音特征从时域的采样点转化为频域得到语音特征,得到的语音特征送入到语音识别系统输出识别文本。传统的混合的语音识别系统采用多个模块级联方式,系统构建复杂、门槛较高,如早期的隐马尔可夫模型。
学术研究和工业落地更多采用端到端语音识别(seqtoseq 模型)实现语音特征输入到输出文本的关系,相对混合系统比较简单,最具代表性的是基于transformer的语音识别系统。
端到端语音识别系统分为根据建模不同,分为自回归及非自回归两种,自回归在 decoder 端,当前时刻输出依赖于前一时刻预测的输出,对建模结构对并行推理有局限性;另外一种是非自回归的端到端,可以去除 token 依赖关系,每个 token 独立分布,对并行推理比较友好。
构建单步非自回归端到端语音系统需要解决三个问题:
-
准确预测输出序列长度,送入预测语音信号判断包含多少文字。
-
如何从 encoder 的输出中提取隐层表征,作为 decoder 的输入。
-
如何增强非自回归预测内部依赖的建模能力。
语音识别三类错误包括插入错误,删除错误,替换错误。图中可以看到,非自回归相对于自回归模型替换错误明显增多,因为非自回归模型的独立性假设使得上下文建模能力比较弱,同音和近音增多导致的。
针对以上这三个问题,达摩院提出了 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 离线模型已开源,流式模型在规划中,后续逐步进行开源。
下面介绍一个开源的工业级语音识别模型,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 评测榜单上排名第一,相较于其它云服务有明显的优势。
登录 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 提供的语音合成数据,或符合阿里标准的语音数据集进行微调。训练模型时需替换本地数据集路径及官方模型路径,训练完可使用定制模型进行语音合成操作。
通过官方提供的脚本工具实现数据下载及生成,生成纯净语音、噪声和混合噪声三个文件夹,替换本地数据集和模型路径,从而实现模型微调。
训练套件已进行开源,同样是在配置完训练参数后可以直接启动训练并体验。
以上就是本次分享的内容。最后欢迎大家关注 ModelScope 魔搭社区、语音社区以及FunASR 社区,交流讨论。
分享嘉宾
INTRODUCTION
李泽瑞
阿里巴巴达摩院
语音算法工程师