01 七大模型开源:语音识别链路全线可选
02 功能完善:代码易用,推理速度UPUP!
Pipeline更新
基于Modelscope模型推理pipeline,新增加多种输入音频方式,如wav.scp、音频bytes、音频采样点pcm格式、wav格式等。
Paraformer与ParaformerBert模型新增加batch级解码,加快推理速度。 新增基于ModelScope微调训练定制模型,可通过调用modelscope.trainers快速实现模型微调训练。 优化pipeline推理速度,对于单条音频输入,推理速度提升显著。
基于ModelScope进行推理
wav文件路径例如: data/test/audios/asr_example.wav wav文件url,例如: https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav wav二进制数据,格式bytes,例如:用户直接从文件里读出bytes数据或者是麦克风录出bytes数据。 已解析的audio音频,例如:audio, rate = soundfile.read("asr_example_zh.wav"),类型为numpy.ndarray或者torch.Tensor。 wav.scp文件,需符合如下要求:
catwav.scp asr_example1data/test/audios/asr_example1.wav asr_example2 data/test/audios/asr_example2.wav
frommodelscope.pipelinesimportpipeline
frommodelscope.utils.constantimportTasks
inference_pipeline = pipeline(
task=Tasks.auto_speech_recognition,
model='damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch',
output_dir='./output_dir')
inference_pipeline("wav.scp")treeoutput_dir/
output_dir/
└──1best_recog
├──rtf
├──score
└── text
1directory, 3 files基于ModelScope进行微调
>>以下演示基于私有数据集进行微调的操作过程:
tree./example_data/
./example_data/
├──validation
│├── text
│└── wav.scp
└──train
├──text
└──wav.scp
2directories, 4 filescat./example_data/text
BAC009S0002W0122而 对 楼 市 成 交 抑 制 作 用 最 大 的 限 购
BAC009S0002W0123也 成 为 地 方 政 府 的 眼 中 钉
cat./example_data/wav.scp
BAC009S0002W0122/mnt/data/wav/train/S0002/BAC009S0002W0122.wav
BAC009S0002W0123/mnt/data/wav/train/S0002/BAC009S0002W0123.wavimport os
frommodelscope.metainfo import Trainers
frommodelscope.trainers import build_trainer
fromfunasr.datasets.ms_dataset import MsDataset
defmodelscope_finetune(params):
ifnot os.path.exists(params.output_dir):
os.makedirs(params.output_dir, exist_ok=True)
# dataset split ["train", "validation"]
ds_dict= MsDataset.load(params.data_path)
kwargs = dict(
model=params.model,
model_revision=params.model_revision,
data_dir=ds_dict,
dataset_type=params.dataset_type,
work_dir=params.output_dir,
batch_bins=params.batch_bins,
max_epoch=params.max_epoch,
lr=params.lr)
trainer = build_trainer(Trainers.speech_asr_trainer, default_args=kwargs)
trainer.train()
if__name__ =='__main__':
fromfunasr.utils.modelscope_param import modelscope_args
params= modelscope_args(model="damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch")
params.output_dir ="./checkpoint"# m模型保存路径
params.data_path ="./example_data/"# 数据路径
params.dataset_type ="small"# 小数据量设置small,若数据量大于1000小时,请使用large,加快训练速度
params.batch_bins =2000# batch size,如果dataset_type="small",batch_bins单位为fbank特征帧数,如果dataset_type="large",batch_bins单位为毫秒
params.max_epoch =50# 最大训练轮数
params.lr =0.00005# 设置学习率
modelscope_finetune(params)CUDA_VISIBLE_DEVICES=1,2python -m torch.distributed.launch --nproc_per_node2finetune.py > log.txt2>&1联系我们
也欢迎语音开源和语音应用感兴趣的研究人员和开发人员加入魔搭语音服务社区和FunASR社区!
ModelScope与FunASR区别与联系:
ModelScope提供模型托管服务,同时通过集成高层API的方式对FunASR进行封装,提供方便快捷的统一接口,进行模型推理与微调功能,用户容易上手。
FunASR作为基础框架,可以独立于ModelScope提供模型推理与微调服务以及学术模型的训练能力。由于ModelScope封装较深,对于定制化需求较高的专业人士,可以通过修改FunASR源码的方式来满足自己的实际需求。
