Monotonic-Aligner语音时间戳预测-16k-离线
输入语音与对应文本,生成文本中token的起止位置时间戳预测。
  • 模型资讯
  • 模型资料

Highlights

  • 通过参数量较小的encoder与反卷积predictor实现时间戳预测,时间戳准确率与kaldi force-alignment系统相当(详见下方实验结果)。

ModelScope-FunASR

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链路中的功能环节。

其核心点主要有:

  • Upsample Predictor 模块:在低帧率模型中predictor产生的帧级别权重可能存在预测不稳定的问题,表现为首尾帧出字与连续帧出字,这为基于cif权重的时间戳预测带来了困扰。本模型
    • (1) 在predictor的线性层之前引入了反卷积升采样模块与lstm模块,在多倍帧率的情况下预测权重;
    • (2) 通过scaled cif对权重进行尺度缩小与平滑,使得cif权重不表现为一个peak而是一段累积过程。通过上述两个操作得到了能用于时间戳预测的帧权重。
  • 基于约5w小时工业数据训练的时间戳预测模型,鲁棒性更强,时间戳准确率更高。

如何使用与训练自己的模型

本项目提供的预训练模型是基于大数据训练的通用领域识别模型,开发者可以基于此模型进一步利用ModelScope的微调功能或者本项目对应的Github代码仓库FunASR进一步进行模型的领域定制化。

在Notebook中开发

对于有开发需求的使用者,特别推荐您使用Notebook进行离线处理。先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框,首次使用会提示您关联阿里云账号,按提示操作即可。关联账号后可进入选择启动实例界面,选择计算资源,建立实例,待实例创建完成后进入开发环境,进行调用。

基于ModelScope进行推理

  • 推理支持音频格式如下:
    • wav文件路径,例如:data/test/audios/asr_example.wav
    • pcm文件路径,例如:data/test/audios/asr_example.pcm
    • wav文件url,例如:https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_timestamps.wav
    • wav二进制数据,格式bytes,例如:用户直接从文件里读出bytes数据或者是麦克风录出bytes数据。
    • 已解析的audio音频,例如:audio, rate = soundfile.read(“asr_example_zh.wav”),类型为numpy.ndarray或者torch.Tensor。
    • wav.scp文件,需符合如下要求:
cat wav.scp
asr_example1  data/test/audios/asr_example1.wav
asr_example2  data/test/audios/asr_example2.wav
...
  • 若输入格式wav文件url,api调用方式可参考如下范例:
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)
  • 在普通ASR模型的inference中,FunASR支持自由组合timestamp prediction模型进入pipeline中以支持任意ASR模型之后的时间戳预测,参考以下范例:
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)
  • 若输入格式为文件wav.scp与对应的抄本text.scp(注:文件名需要以.scp结尾),可添加 output_dir 参数将识别结果写入文件中,api调用方式可参考如下范例:
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’: ‘ 0.000 0.380;一 0.380 0.560;个 0.560 0.800;东 0.800 0.980;太 0.980 1.140;平 1.140 1.260;洋 1.260 1.440;国 1.440 1.680;家 1.680 1.920; 1.920 2.040;为 2.040 2.200;什 2.200 2.320;么 2.320 2.500;跑 2.500 2.680;到 2.680 2.880;西 2.880 3.060;太 3.060 3.200;平 3.200 3.380;洋 3.380 3.500;来 3.500 3.660;了 3.660 3.800;呢 3.800 4.160; 4.160 4.440;’,

‘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进行微调

模型暂不支持微调,待开发

在本地机器中开发

基于ModelScope进行推理

支持基于ModelScope上数据集及私有数据集进行定制微调和推理,使用方式同Notebook中开发。

基于FunASR进行推理

FunASR框架支持魔搭社区开源的工业级的语音识别模型的training & finetuning,使得研究人员和开发者可以更加便捷的进行语音识别模型的研究和生产,目前已在Github开源:https://github.com/alibaba-damo-academy/FunASR 。若在使用过程中遇到任何问题,欢迎联系我们:联系方式

FunASR框架安装

  • 安装FunASR和ModelScope,详见
pip3 install -U modelscope
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./

基于FunASR进行推理

接下来会以私有数据集为例,介绍如何在FunASR框架中使用timestamp_prediction-v1进行推理。

cd egs_modelscope/tp/speech_timestamp_prediction-v1-16k-offline
python infer.py

Benchmark

我们提供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

使用方式以及适用范围

运行范围

  • 支持Linux-x86_64,Mac和Windows。

使用方式

  • 直接推理:可以直接通过输入的音频与文字进行时间戳预测,输出与文字序列同步的时间戳。

使用范围与目标场景

  • 适合于离线场景,对不同声学环境中的语音均能够较好的支持,但需要注意输入的文字与语音中的内容不匹配时预测可能会不稳定。

模型局限性以及可能的偏差

考虑到特征提取流程和工具以及训练工具差异,会对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}
}