FunASR希望在语音识别方面建立学术研究和工业应用之间的桥梁。通过支持在ModelScope上发布的工业级语音识别模型的训练和微调,研究人员和开发人员可以更方便地进行语音识别模型的研究和生产,并促进语音识别生态系统的发展。
最新动态
| 环境安装
| 介绍文档
| 中文教程
| 服务部署
| 模型库
| 联系我们
Timestamp Prediction Model
目前大部分工业语音识别系统使用外接的强制对齐模型预测ASR模型识别结果的时间戳,这引入了额外的计算开销与时间开销,FunASR提供一种在ASR任务过程中天然的预测识别结果时间戳的方法。
Paraformer通过encoder之后的predictor模块实现token级别的声学表征的生成,predictor中的cif机制通过累积帧级别权重计算了每个token的持续区间与发射位置,这使得通过predictor实现与ASR任务一体化的时间戳预测(Timestamp Prediction, TP)成为了可能。本模型为Paraformer-large-长音频版的衍生模型,通过较小参数量的encoder与升采样cif predictor实现了时间戳预测功能,方便用户自由搭建ASR链路中的功能环节。
其核心点主要有:
本项目提供的预训练模型是基于大数据训练的通用领域识别模型,开发者可以基于此模型进一步利用ModelScope的微调功能或者本项目对应的Github代码仓库FunASR进一步进行模型的领域定制化。
对于有开发需求的使用者,特别推荐您使用Notebook进行离线处理。先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框,首次使用会提示您关联阿里云账号,按提示操作即可。关联账号后可进入选择启动实例界面,选择计算资源,建立实例,待实例创建完成后进入开发环境,进行调用。
cat wav.scp
asr_example1 data/test/audios/asr_example1.wav
asr_example2 data/test/audios/asr_example2.wav
...
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
inference_pipline = pipeline(
task=Tasks.speech_timestamp,
model='damo/speech_timestamp_prediction-v1-16k-offline',
output_dir='./tmp')
rec_result = inference_pipline(
audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_timestamps.wav',
text_in='一 个 东 太 平 洋 国 家 为 什 么 跑 到 西 太 平 洋 来 了 呢',)
print(rec_result)
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
inference_pipeline = pipeline(
task=Tasks.auto_speech_recognition,
model='damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch',
timestamp_model="damo/speech_timestamp_prediction-v1-16k-offline",
timestamp_model_revision="v1.0.5")
rec_result = inference_pipeline(audio_in="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_timestamps.wav")
print(rec_result)
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
inference_pipline = pipeline(
task=Tasks.speech_timestamp,
model='damo/speech_timestamp_prediction-v1-16k-offline',
output_dir='./tmp')
rec_result = inference_pipline(
audio_in='./wav.scp',
text_in='./text.scp')
print(rec_result)
输出的结果为带有静音标注时间戳的字符串以及排除了静音标注的与token数量一致的时间戳列表:
‘text’: ‘
‘timestamp’: [[380, 560], [560, 800], [800, 980], [980, 1140], [1140, 1260], [1260, 1440], [1440, 1680], [1680, 1920], [2040, 2200], [2200, 2320], [2320, 2500], [2500, 2680], [2680, 2880], [2880, 3060], [3060, 3200], [3200, 3380], [3380, 3500], [3500, 3660], [3660, 3800], [3800, 4160]]
模型暂不支持微调,待开发
支持基于ModelScope上数据集及私有数据集进行定制微调和推理,使用方式同Notebook中开发。
FunASR框架支持魔搭社区开源的工业级的语音识别模型的training & finetuning,使得研究人员和开发者可以更加便捷的进行语音识别模型的研究和生产,目前已在Github开源:https://github.com/alibaba-damo-academy/FunASR 。若在使用过程中遇到任何问题,欢迎联系我们:联系方式
pip3 install -U modelscope
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
接下来会以私有数据集为例,介绍如何在FunASR框架中使用timestamp_prediction-v1进行推理。
cd egs_modelscope/tp/speech_timestamp_prediction-v1-16k-offline
python infer.py
我们提供Aishell-1数据、内部工业大数据实验中本模型、Paraformer-large-长音频版模型以及kaldi hybrid系统的force-alignment模型的时间戳准确率比较。平均偏移时间(Accumulated averaged shift, AAS)通过计算文本中匹配的token时间戳起始位置相较于人工标注时间戳的相对偏移时间之和的平均值衡量时间戳的准确程度。
Data | System | AAS(ms) |
---|---|---|
Aishell-1 | Force-alignment | 80.1 |
Paraformer CIF | 71.0 | |
Industrial Data | Force-alignment | 60.3 |
Paraformer-large CIF2 | 65.3 | |
Paraformer-FA | 69.3 |
运行范围
使用方式
使用范围与目标场景
考虑到特征提取流程和工具以及训练工具差异,会对AAS的数据带来一定的差异(<0.1%),推理GPU环境差异导致的RTF数值差异。
@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}
}
@inproceedings{Shi2023AchievingTP,
title={Achieving Timestamp Prediction While Recognizing with Non-Autoregressive End-to-End ASR Model},
author={Xian Shi and Yanni Chen and Shiliang Zhang and Zhijie Yan},
booktitle={arXiv preprint arXiv:2301.12343}
year={2023}
}