相比于标准RNNT,具有更低的计算资源消耗与延迟
FunASR希望在语音识别方面建立学术研究和工业应用之间的桥梁。通过支持在ModelScope上发布的工业级语音识别模型的训练和微调,研究人员和开发人员可以更方便地进行语音识别模型的研究和生产,并促进语音识别生态系统的发展。
最新动态
| 环境安装
| 介绍文档
| 服务部署
| 模型库
| 联系我们
Boundary Aware Transducer (BAT) 是达摩院语音团队改进传统RNN-Transducer (RNN-T) 得到的计算高效且低延迟的语音识别模型。
传统RNN-T具有识别准确率高,流式友好等优良特性。
然而,训练时大量的时间和计算资源开销限制了RNN-T的使用。
此外,RNN-T倾向于访问更多的上下文以获得更好的性能,这导致了流式识别时更高的发射延迟(emission latency)。
为了解决这两个问题,我们提出了Boundary aware transducer(BAT),用于降低RNN-T训练时的显存开销和推理时的发射延迟。
在BAT中,我们用CIF在线生成的对齐对RNN-T损失计算的lattice进行裁剪。
CIF模块引入的额外计算很少,且可以与RNN-T模型联合优化。
大量实验表明,与RNN-T相比,BAT显著减少了训练中的时间和内存消耗,并在流式ASR的推理中实现了良好的CER-latency trade-off。
在页面右侧,可以在“在线体验”栏内看到我们预先准备好的示例音频,点击播放按钮可以试听,点击“执行测试”按钮,会在下方“测试结果”栏中显示识别结果。如果您想要测试自己的音频,可点“更换音频”按钮,选择上传或录制一段音频,完成后点击执行测试,识别内容将会在测试结果栏中显示。
对于有开发需求的使用者,特别推荐您使用Notebook进行离线处理。先登录ModelScope账号,点击模型页面右上角的“在Notebook中打开”按钮出现对话框。api调用方式可参考如下范例:
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
inference_16k_pipline = pipeline(
task=Tasks.auto_speech_recognition,
model='damo/speech_bat_asr-zh-cn-16k-aishell1-vocab4234-pytorch',
model_revision="v1.0.4")
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)
本项目提供的BAT是基于AISHELL-1的识别模型,开发者可以基于本项目对应的github代码仓库进一步进行模型的领域定制化。
FunASR框架支持魔搭社区开源的工业级的语音识别模型的training & finetuning,使得研究人员和开发者可以更加便捷的进行语音识别模型的研究和生产,目前已在github开源:https://github.com/alibaba-damo-academy/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.sh
sh Miniconda3-latest-Linux-x86_64.sh
conda create -n funasr python=3.7
conda 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 ModelScope
pip install "modelscope[audio]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
# Install other packages:
pip install --editable ./
接下来会以AISHELL-1数据集为例,介绍如何在FunASR框架中使用BAT进行训、微调和推理。
cd egs/aishell/bat
# 配置 run.sh 中参数
# CUDA_VISIBLE_DEVICES: 可用的gpu list
# gpu_num: 训练使用的gpu数量
# data_aishell: AISHELL-1原始数据路径
# feats_dir: 数据准备输出目录
# exp_dir: 模型输出路径
# tag: 模型保存后缀名
# 配置修改完成后,执行命令:
bash run.sh --stage 0 --stop_stage 5
cd egs/aishell/bat
# 配置 run.sh 中参数
# CUDA_VISIBLE_DEVICES: 可用的gpu list
# gpu_num: 训练使用的gpu数量
# feats_dir: 数据准备输出目录
# exp_dir: 模型输出路径
# tag: 模型保存后缀名
# init_param: 初始模型路径
# 配置修改完成后,执行命令:
bash run.sh --stage 4 --stop_stage 4
cd egs/aishell/bat
# 配置 run.sh 中参数
# CUDA_VISIBLE_DEVICES: 可用的gpu list
# gpu_num: 训练使用的gpu数量
# njob: 一块gpu解码的线程数
# feats_dir: 数据准备输出目录
# exp_dir: 模型输出路径
# tag: 模型保存后缀名
# 配置修改完成后,执行命令:
bash run.sh --stage 5 --stop_stage 5
model | dev(CER%) | test(CER%) |
---|---|---|
BAT | 4.56 | 4.97 |
运行范围
使用方式
使用范围与目标场景
考虑到特征提取流程和工具以及训练工具差异,会对CER的数据带来一定的差异(<0.1%),推理GPU环境差异导致的RTF数值差异。
@inproceedings{an2023bat,
title={BAT: Boundary aware transducer for memory-efficient and low-latency ASR},
author={Keyu An, Xian Shi, Shiliang Zhang},
booktitle={INTERSPEECH},
year={2023}
}