模型介绍
基于Paraformer online large(damo/speechparaformer-largeasr_nat-zh-cn-16k-common-vocab8404-online),更换vocab,增加粤语部分字,减小模型参数大小,通过在普通话1w小时、粤语100小时、英语1w小时音频数据集上进行训练1轮。此版本尚未训练完成,此次放出的为中间模型,最终模型还要训练一段时间。 模型训练和推理代码已改为funasr1.0。可用于流式(在线)语音识别和语音唤醒(需要的算力很小,速度比较快,边缘设备及手机均可流畅运行)。
Paraformer-large模型介绍
ModelScope-FunASR
FunASR希望在语音识别方面建立学术研究和工业应用之间的桥梁。通过支持在ModelScope上发布的工业级语音识别模型的训练和微调,研究人员和开发人员可以更方便地进行语音识别模型的研究和生产,并促进语音识别生态系统的发展。
最新动态 | 环境安装 | 介绍文档 | 中文教程 | 服务部署 | 模型库 | 联系我们
项目介绍
Paraformer是达摩院语音团队提出的一种高效的非自回归端到端语音识别框架。本项目为Paraformer中文通用语音识别模型,采用工业级数万小时的标注音频进行模型训练,保证了模型的通用识别效果。模型可以被应用于语音输入法、语音导航、智能会议纪要等场景。
Paraformer模型结构如上图所示,由 Encoder、Predictor、Sampler、Decoder 与 Loss function 五部分组成。Encoder可以采用不同的网络结构,例如self-attention,conformer,SAN-M等。Predictor 为两层FFN,预测目标文字个数以及抽取目标文字对应的声学向量。Sampler 为无可学习参数模块,依据输入的声学向量和目标向量,生产含有语义的特征向量。Decoder 结构与自回归模型类似,为双向建模(自回归为单向建模)。Loss function 部分,除了交叉熵(CE)与 MWER 区分性优化目标,还包括了 Predictor 优化目标 MAE。
其核心点主要有:
- Predictor 模块:基于 Continuous integrate-and-fire (CIF) 的 预测器 (Predictor) 来抽取目标文字对应的声学特征向量,可以更加准确的预测语音中目标文字个数。
- Sampler:通过采样,将声学特征向量与目标文字向量变换成含有语义信息的特征向量,配合双向的 Decoder 来增强模型对于上下文的建模能力。
- 基于负样本采样的 MWER 训练准则。
更详细的细节见:
- 论文: Paraformer: Fast and Accurate Parallel Transformer for Non-autoregressive End-to-End Speech Recognition
- 论文解读:Paraformer: 高识别率、高计算效率的单轮非自回归端到端语音识别模型
如何使用与训练自己的模型
本项目提供的预训练模型是基于大数据训练的通用领域识别模型,开发者可以基于此模型进一步利用ModelScope的微调功能或者本项目对应的Github代码仓库FunASR进一步进行模型的领域定制化。
在Notebook中开发
对于有开发需求的使用者,特别推荐您使用Notebook进行离线处理。先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框,首次使用会提示您关联阿里云账号,按提示操作即可。关联账号后可进入选择启动实例界面,选择计算资源,建立实例,待实例创建完成后进入开发环境,进行调用。
基于ModelScope进行推理
- 流式语音识别api调用方式可参考如下范例:
```#!/usr/bin/env python3
-- encoding: utf-8 --
Copyright FunASR (https://github.com/alibaba-damo-academy/FunASR). All Rights Reserved.
MIT License (https://opensource.org/licenses/MIT)
from funasr import AutoModel
chunksize = [0, 10, 5] #[0, 10, 5] 600ms, [0, 8, 4] 480ms encoderchunklookback = 4 #number of chunks to lookback for encoder self-attention decoderchunklook_back = 1 #number of encoder chunks to lookback for decoder cross-attention
model = AutoModel(model="dengcunqin/speechparaformer-tinyasrnat-zh-cantonese-en-16k-vocab8501-online", modelrevision="master") cache = {} res = model(input="example/asrexample普通话.wav", chunksize=chunksize, encoderchunklookback=encoderchunklookback, decoderchunklookback=decoderchunklookback, ) print(res)
import soundfile import os
wavfile = os.path.join(model.modelpath, "example/asrexample粤语.wav") speech, samplerate = soundfile.read(wavfile)
chunkstride = chunksize[1] * 960 # 600ms、480ms
cache = {}
for i in range(int(len((speech)-1)/chunkstride+1)): speechchunk = speech[ichunkstride:(i+1)chunkstride] isfinal = i == int(len((speech)-1)/chunkstride+1) res = model(input=speechchunk, cache=cache, isfinal=isfinal, chunksize=chunksize, encoderchunklookback=encoderchunklookback, decoderchunklookback=decoderchunklook_back, ) print(res)
## 使用方式以及适用范围
运行范围
- 支持Linux-x86_64、Mac和Windows运行。
使用方式
- 直接推理:可以直接对输入音频进行解码,输出目标文字。
- 微调:加载训练好的模型,采用私有或者开源数据进行模型训练。
使用范围与目标场景
- 适合于实时语音识别场景。
## 模型局限性以及可能的偏差
考虑到特征提取流程和工具以及训练工具差异,会对CER的数据带来一定的差异(<0.1%),推理GPU环境差异导致的RTF数值差异。
## 相关论文以及引用信息
BibTeX @inproceedings{gao2022paraformer, title={Paraformer: Fast and Accurate Parallel Transformer for Non-autoregressive End-to-End Speech Recognition}, author={Gao, Zhifu and Zhang, Shiliang and McLoughlin, Ian and Yan, Zhijie}, booktitle={INTERSPEECH}, year={2022} } ```
评论