30分钟上手!FunASR实时Paraformer模型微调全流程

【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc. 【免费下载链接】FunASR 项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR

你是否还在为语音识别模型适配特定场景发愁?本文将带你从零开始,通过5个步骤完成实时Paraformer模型的微调优化,解决行业术语识别准确率低的痛点。读完后你将掌握数据准备、模型训练、性能验证的全流程,让语音识别系统在你的业务场景中准确率提升20%以上。

为什么选择实时Paraformer

FunASR作为阿里达摩院开源的端到端语音识别工具包,提供了包括语音识别(ASR)、语音端点检测(VAD)、文本后处理等全链路能力。其中实时Paraformer模型凭借非自回归结构,实现了高精度与低延迟的平衡,特别适合实时交互场景。

FunASR架构

核心优势:

  • 工业级预训练模型:基于6万小时中文数据训练,开源模型在通用场景CER(字符错误率)低至5.8%
  • 实时流式处理:支持600ms出字延迟,满足实时对话需求
  • 灵活部署:支持ONNX导出,可部署于CPU/GPU/移动端等多种环境

官方文档:docs/tutorial/README_zh.md
模型仓库:model_zoo/modelscope_models_zh.md

环境准备与依赖安装

基础环境要求

开始前请确保你的环境满足:

  • Python ≥ 3.8
  • PyTorch ≥ 1.13
  • 显卡显存 ≥ 12GB(推荐V100/A10以上)

快速安装

# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/fun/FunASR && cd FunASR

# 安装依赖
pip3 install -e ./
pip3 install -U modelscope huggingface_hub

如需使用多GPU训练,建议额外安装DeepSpeed:

pip3 install deepspeed

安装验证:

from funasr import AutoModel
model = AutoModel(model="paraformer-zh-streaming")
print("安装成功")

数据集准备与格式转换

数据规范

微调需要准备两种文件:

  • 音频文件列表(wav.scp):包含音频ID和路径
  • 文本标注文件(text.txt):包含音频ID和对应转录文本

示例格式:

train_wav.scp

ID0012W0013 /data/audio/ID0012W0013.wav
ID0012W0014 /data/audio/ID0012W0014.wav

train_text.txt

ID0012W0013 当客户风险承受能力评估依据发生变化时
ID0012W0014 所有只要处理data不管你是做machine learning还是deep learning

数据存放路径:data/list/

格式转换工具

使用FunASR提供的scp2jsonl工具将上述文件转换为训练所需的JSONL格式:

scp2jsonl \
++scp_file_list='["data/list/train_wav.scp", "data/list/train_text.txt"]' \
++data_type_list='["source", "target"]' \
++jsonl_file_out="data/list/train.jsonl"

转换后生成的JSONL文件可直接用于训练,示例:data/list/train.jsonl

微调实战步骤

1. 配置训练参数

核心配置文件路径:examples/industrial_data_pretraining/paraformer/finetune.sh

关键参数说明:

参数 含义 推荐值
CUDA_VISIBLE_DEVICES 指定GPU设备 "0,1"(多卡训练)
model_name_or_model_dir 预训练模型路径 "iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
batch_size 批处理大小(token数) 6000(根据显存调整)
max_epoch 训练轮次 50
lr 学习率 0.0002
output_dir 模型保存路径 "./outputs"

2. 启动微调训练

cd examples/industrial_data_pretraining/paraformer
bash finetune.sh

训练过程日志会保存至outputs/log.txt,关键指标包括:

  • loss_avg_rank:多GPU平均损失值
  • acc_avg_epoch:验证集准确率(越高越好)
  • lr:当前学习率

3. 训练监控

使用TensorBoard可视化训练过程:

tensorboard --logdir ./outputs/log/tensorboard

主要监控指标:

  • 训练损失(train/loss)
  • 验证准确率(valid/acc)
  • 学习率变化(train/lr)

模型评估与导出

微调效果验证

训练完成后,使用验证集评估模型性能:

from funasr import AutoModel

model = AutoModel(model="./outputs")
res = model.generate(input="test.wav")
print(res)

关键评估指标:

  • CER(字符错误率):越低越好
  • 实时率(RTF):越小越好(实时模型需<0.1)

ONNX导出部署

将微调后的模型导出为ONNX格式,便于生产环境部署:

funasr-export ++model="./outputs" ++quantize=true

导出后模型位于./outputs/onnx目录,可通过funasr-onnx库加载使用:

from funasr_onnx import Paraformer
model = Paraformer("./outputs/onnx", quantize=True)
result = model("test.wav")

部署文档:runtime/python/onnxruntime

常见问题解决

显存不足问题

  1. 减少batch_size:从6000降至4000
  2. 启用梯度累积:设置train_conf.accum_grad=2
  3. 使用混合精度训练:train_conf.use_fp16=true

过拟合处理

  1. 增加训练数据量
  2. 调整数据增强参数:dataset_conf.aug_prob=0.5
  3. 延长训练轮次或早停策略

实时性优化

  1. 调整流式参数:chunk_size=[0,8,4](降低延迟)
  2. 模型量化:导出时启用quantize=true
  3. 部署优化:使用Triton Inference Server

总结与进阶方向

通过本文介绍的流程,你已掌握实时Paraformer模型的微调全流程。建议进一步探索:

  1. 多轮微调:使用领域数据进行二次微调
  2. 模型压缩:量化/剪枝减小模型体积
  3. 热词定制:通过SeACo-Paraformer优化特定词汇识别

项目贡献者名单:Acknowledge.md
模型许可协议:MODEL_LICENSE

收藏本文,关注FunASR项目获取更多技术干货!下一期我们将带来"实时语音识别服务高并发部署实践"。

【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc. 【免费下载链接】FunASR 项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐