如何使用ModelScope魔搭训练工业级语音识别模型

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 如何使用ModelScope魔搭训练工业级语音识别模型

开源工业级Paraformer非自回归端到端语音识别模型

我们在ModelScope上开放了阿里工业级的语音识别模型,涉及不同的模型结构(UniASR,Paraformer),不同的模型大小(small,large),不同的语种(中文,英文,中英自由说,日语,俄语,印尼语等)。

以Paraformer为例,本文将介绍其原理,以及如何体验和定制化训练自己的Paraformer模型。(本文介绍的模型在modelscope中名称为Paraformer-large,可在官网直接搜索)。

1. Paraformer基础原理

image.png

2. 为什么选择Paraformer?

大模型

开源的Paraformer-large模型相对论文中的学术Paraformer模型采用了更深更大的模型结构。Paraformer-large模型的Encoder有50层,包括memory equipped self-attention(SAN-M)和feed-forward networks (FFN)。Decoder有16层,包括SAN-M,FFN和multi-head attention(MHA)。

大数据

相对于公开论文中在单独封闭数据集(AISHELL-1、AISHELL-2等)上进行的效果验证,我们使用了更大数据量的工业数据上对模型进行训练,利用数万小时16K通用数据,包括半远场、输入法、音视频、直播、会议等领域。并在微调实验中,使用AISHELL-1、AISHELL-2单独数据集对模型进行finetune。

高效率

Paraformer采用非自回归结构,配合GPU推理,可以将推理效率提升5~10倍。同时使用了6倍下采样的低帧率建模方案,可以将计算量降低接近6倍,支持大模型的高效推理。

高性能

Paraformer-large模型在主流的中文语音识别任务中的识别准确率均远超于公开发表论文中的结果,同时具备工业落地的能力,在工业大数据上取得了与阿里云公有云上文件转写服务相当的效果。

3. Paraformer的效果

我们提出的Paraformer模型在一系列语音识别任务上进行了实验,以验证其性能优越性,其中包括学术数据集AISHELL-1、AISHELL-2、WenetSpeech,以及第三方评测项目SpeechIO TIOBE白盒测试集。 在学术界常用的中文识别评测任务AISHELL-1上,我们提出的Paraformer在目前公开发表论文中,为性能(识别效果&计算复杂度)最优的非自回归模型,且Paraformer-large模型的识别准确率远远超于目前公开发表论文中的结果(dev/test:1.75/1.95)。同时,Paraformer是首个能够在工业大数据上获得与自回归模型相当识别率的非自回归模型,Paraformer-large模型在工业界的第三方评测SpeechIO TIOBE白盒测试场景中也取得了最优的性能。

公开数据集

①AISHELL-1

image.png

image.png

表一、表二和表三中分别展现了Paraformer-large模型在AISHELL-1、AISHELL-2和WenetSpeech测试集上的效果,其表现远远超于目前公开发表论文中的结果,远好于使用单独封闭数据集训练的模型。从测试结果可以看到,大数据对于语音识别系统性能的重要性。在AISHELL-1公开数据集上,我们进行了finetune效果验证,单独使用AISHELL-1数据对Paraformer-large进行微调,在test集上分别取得了7.2%的效果提升,后续在AISHELL-1及AISHELL-2数据集上finetune实验结果及代码也将进行开源。

SpeechIO TIOBE

image.png

表五中展现了Paraformer-large模型与各家厂商语音服务的对比结果。可以看到在无LM的情况下,Paraformer-large模型取得了白盒测试场景榜单第二的成绩,接近喜马拉雅CER 2.16的成绩,在加入TransformerLM进行shallow fusion解码后取得了榜单第一的成绩。

*注:各厂商服务测试结果,为SpeechIO滚动测试报:2022年8月期公布结果,https://mp.weixin.qq.com/s/f8MU3CxHH3lsn5DmDNe1mw

如何快速体验模型效果?

1.在线体验

您可以在ModelScope官网,进入模型主页(复制该链接在浏览器中打开:https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary),在页面右侧,可以在“在线体验”栏内看到我们预先准备好的示例音频,点击播放按钮可以试听,点击“执行测试”按钮,推理完成后会在下方“测试结果”栏中显示识别结果。如果您想要测试自己的音频,可点击“更换音频”按钮,选择上传或录制一段音频,完成后点击执行测试,识别内容将会在测试结果栏中显示。具体使用方法请参考视频演示:

api调用方式可参考如下范例:

from modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasks
inference_16k_pipline = pipeline(    task=Tasks.auto_speech_recognition,    model='damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch')
rec_result = inference_16k_pipline(audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav')print(rec_result)

若输入音频为pcm格式,调用api时需要传入音频采样率参数audio_fs,例如:


rec_result = inference_16k_pipline(audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.pcm', audio_fs=16000)

如何训练自有的Paraformer语音识别模型?

本文介绍的Paraformer是基于大数据训练的通用领域的识别模型,开发者可以基于此模型进一步利用本项目对应的Github代码仓库进一步进行模型的领域定制化。

1.如何基于开源模型训练自有模型

FunASR框架支持魔搭社区开源的工业级的语音识别模型(Paraformer-large)的training & finetuning,使得研究人员和开发者可以更加便捷的进行语音识别模型的研究和生产,目前已在Github开源:https://github.com/alibaba-damo-academy/FunASR

目前FunASR框架已支持:

  • Paraformer-large模型ModelScope下载
  • Paraformer-large模型在AISHELL-1、AISHELL-2数据集上微调并推理
  • Paraformer-large模型在AISHELL-1、AISHELL-2、WenetSpeech、SpeechIO白盒场景推理
  • Paraformer-large模型使用自有数据微调并推理

接下来我们以FunASR框架的egs_modelscope/common为例,介绍如何使用小规模自有语料在Paraformer-large模型上进行领域定制化训练,并体验产出的模型效果。

环境搭建

  • 安装FunASR框架
# Clone the repo:git clone https://github.com/alibaba/FunASR.git
# Install Conda:wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.shsh Miniconda3-latest-Linux-x86_64.shconda create -n funasr python=3.7conda activate funasr
# Install Pytorch (version >= 1.7.0):conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=9.2 -c pytorch  # For more versions, please see https://pytorch.org/get-started/locally/
# Install other packages:pip install --editable ./
  • 安装ModelScope
pip install "modelscope[audio]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

模型微调训练

  • 数据准备

目前FunASR支持数据格式如下:

tree ./example_data/./example_data/├── dev│   ├── text│   └── wav.scp├── test│   ├── text│   └── wav.scp└── train    ├── text    └── wav.scp
3 directories, 6 files

text文件中存放音频标注,wav.scp文件中存放wav音频绝对路径,样例如下:

cat textBAC009S0002W0122 而 对 楼市 成交 抑制 作用 最 大 的 限 购BAC009S0002W0123 也 成为 地方 政府 的 眼中 钉
cat wav.scpBAC009S0002W0122 /mnt/data/wav/train/S0002/BAC009S0002W0122.wavBAC009S0002W0123 /mnt/data/wav/train/S0002/BAC009S0002W0123.wav
  • 特征提取

原始数据准备完成后,按照以下方式提取训练所需特征:

cd egs_modelscope/common
# compute fbank featuresutils/compute_fbank.sh --cmd "utils/run.pl" --nj 32 --speed_perturb "1.0" \        example_data/train ${exp_dir}/exp/make_fbank/train ${fbankdir}/trainutils/fix_data_feat.sh ${fbankdir}/train
# apply low_frame_rate and cmvnutils/apply_lfr_and_cmvn.sh --cmd "utils/run.pl" --nj 32 --lfr True --lfr-m 7 --lfr-n 6 \        ${fbankdir}/train am.mvn ${exp_dir}/exp/make_fbank/train ${feat_train_dir}
# Text Tokenize# 我爱reading->我 爱 read@@ ingutils/text_tokenize.sh --cmd "utils/run.pl" --nj 32 ${fbankdir}/train seg_dict ${feat_train_dir}/log ${feat_train_dir}
# Dictionary Preparationawk -v v=,vocab_size '{print $0v}' ${feat_train_dir}/text_shape > ${feat_train_dir}/text_shape.charcp ${feat_train_dir}/speech_shape ${feat_train_dir}/text_shape ${feat_train_dir}/text_shape.char asr_stats_fbank_zh_char/train
# dev集参照如上train集对音频进行特征提取
  • 下载模型

Paraformer-large模型是达摩院语音实验室提供的基于大数据训练的通用领域识别模型,我们以此为basemodel做后续微调。设定模型名称后,执行命令完成模型下载。

modelname="speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"python modelscope_utils/download_model.py --model_name $modelname
  • 模型训练

完成数据处理及模型下载后,可对conf/train_asr_paraformer_sanm_50e_16d_2048_512_lfr6.yaml配置进行修改,如学习率(lr)、最大训练epoch数(max_epoch)等,完成后我们就可以使用以下命令对模型进行微调:

python asr_train_paraformer.py \  --train_data_path_and_name_and_type ${feat_train_dir}/feats.scp,speech,kaldi_ark \  --train_data_path_and_name_and_type ${feat_train_dir}/text,text,text \  --valid_data_path_and_name_and_type ${feat_dev_dir}/feats.sc,speech,kaldi_ark \  --valid_data_path_and_name_and_type ${feat_dev_dir}/text,text,text \  --output_dir exp/model_dir \  --init_param base_model.pth \  --config finetune_config.yaml
  • 模型效果体验

在模型微调完毕后,我们可以使用产出的模型来识别语音了,执行如下命令,对音频进行解码推理:

cp finetuned_model.pth exp_dir/finetune_model_name.modelscopecp -r ${HOME}/.cache/modelscope/hub/damo/pretrained_model_name/* exp_dir/
python -m funasr.bin.modelscope_infer \  --local_model_path exp_dir \  --wav_list example_data/dev/wav.scp \  --output_file logdir/text

一站式体验(推荐使用)

您也可以选择配置modelscope_common_finetune.sh脚本中的数据路径及参数配置,完成后一键执行进行模型的微调及推理,具体如下:

# 配置modelscope_common_finetune.sh中参数# dataset:  数据路径,结构如example_data所示,dev/test可不配置,若无dev数据处理过程中可自动抽取训练集中1000句音频作为dev集# tag:  结果保存路径后缀
# 配置修改完成后,执行命令启动模型微调训练及推理: sh modelscope_common_finetune.sh

除此之外,我们提供了AISHELL-1、AISHELL-2、WenetSpeech、SpeechIO的微调及推理脚本,如上配置好数据路径后即可执行启动训练,欢迎试用。


结合NNLM模型效果体验

Paraformer-large模型可结合NNLM语言模型进行推理,在inference的sh脚本中配置use_lm=true即可使用NNLM解码。接下来我们以SpeechIO测试集为例,展示如何结合语言模型解码:

cd egs_modelscope/speechio/paraformer
# 配置paraformer_large_infer.sh中参数# ori_data:       # 测试数据路径# data_dir:        # 数据处理路径# exp_dir:        # 结果保存路径# test_sets:       # 测试集名称# use_lm=true      # 是否使用LM# beam_size=10    # 设置beam_size# lm_weight=0.15  # 设置lm_weight
# 测试集目录结构树,必须有trans.txt和wav.scptree SPEECHIO_ASR_ZH00001SPEECHIO_ASR_ZH00001├── metadata.tsv├── trans.txt├── wav│   ├── e5oipIfM49I__20190201_CCTV_10.wav│   └── e5oipIfM49I__20190201_CCTV_1.wav│    └── ...└── wav.scp
# 配置修改完成后,执行命令启动模型推理: sh paraformer_large_infer.sh

2.如何从随机初始化训练自有模型

如果用户想要随机初始化模型,只需要将上述模型训练阶段中的“--init_param base_model.pth”移除掉,其他步骤同上。

当前ModelScope上语音识别主要是端到端的声学模型。完整的语音识别服务还包含类似于语音端点检测、文本后处理等模块,达摩院语音实验室进一步上线这些功能模型,持续将最新的研究以及落地转化成果上线到ModelScope,敬请期待。

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
2月前
|
机器学习/深度学习 人工智能 UED
OpenAI o1模型:AI通用复杂推理的新篇章
OpenAI发布了其最新的AI模型——o1,这款模型以其独特的复杂推理能力和全新的训练方式,引起了业界的广泛关注。今天,我们就来深入剖析o1模型的特点、背后的原理,以及一些有趣的八卦信息。
316 73
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
77 1
|
3月前
|
人工智能 自然语言处理 API
AI大模型 智能AI开源模型与大模型接口整理(8个开源模型+7个大模型接口)
AI大模型 智能AI开源模型与大模型接口整理(8个开源模型+7个大模型接口)
404 5
|
5月前
|
人工智能 JSON 自然语言处理
智谱AI GLM4开源!支持多模态&长序列,魔搭推理、微调最佳实践来啦!
GLM-4-9B是智谱AI推出的新一代预训练模型GLM-4系列的开源版本,它在多个数据集上的测试中表现出高绩效,包括语义理解、数学问题解决、推理和代码理解等方面。GLM-4-9B模型有四个变体:基础版GLM-4-9B(8K)、对话版GLM-4-9B-Chat(128K)、超长上下文版GLM-4-9B-Chat-1M(1M)和多模态版GLM-4V-9B-Chat(8K)。用户可以通过魔搭社区提供的链接体验这些模型,包括在CPU上运行的版本和支持vLLM推理的版本。
智谱AI GLM4开源!支持多模态&长序列,魔搭推理、微调最佳实践来啦!
|
4月前
|
机器学习/深度学习 消息中间件 人工智能
人工智能平台PAI使用问题之EasyRec训练的步骤是怎样的
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
人工智能平台PAI产品使用合集之Alink是否加载预训练好的pytorch模型
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6月前
|
机器学习/深度学习 人工智能 编解码
极智AI | 教你用C++实现一般模型推理图片预处理模块
大家好,我是极智视界,本文介绍了用 C++ 实现一般模型推理图片预处理的方法,通用性较强。
234 0
|
6月前
|
人工智能 数据可视化 物联网
Mistral AI发布首个开源MoE模型,魔搭社区推理微调最佳实践来啦!
继Mistral 7B 后,Mistral AI 近日又放出一记大招——发布了引爆开源社区的首个 MoE 开源模型 Mixtral 8x7B,在 Apache 2.0 许可证下可商用。
|
人工智能 算法 语音技术
AI孙燕姿 ?AI东雪莲 !—— 本地部署DDSP-SVC一键包,智能音频切片,本地训练,模型推理,为你喜欢的角色训练AI语音模型小教程
AI孙燕姿 ?AI东雪莲 !—— 本地部署DDSP-SVC一键包,智能音频切片,本地训练,模型推理,为你喜欢的角色训练AI语音模型小教程
1425 0
|
人工智能 并行计算 PyTorch
【AI 大模型】离线运行ChatGLM2-6B(清华大模型)
【AI 大模型】离线运行ChatGLM2-6B(清华大模型)
2209 0

热门文章

最新文章

相关产品

  • 智能语音交互