FunASR语音识别模型使用指南:从推理到训练全流程解析

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/gh_mirrors/fun/FunASR

项目概述

FunASR是一个开源的语音识别框架,提供了大量基于工业数据预训练的语音处理模型。这些模型涵盖了语音识别、语音活动检测、标点恢复等多个语音处理任务,支持多种语言和场景的应用。

模型推理指南

快速开始

FunASR提供了两种方式进行模型推理:

  1. 命令行方式
funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav
  1. Python API方式(推荐)
from funasr import AutoModel

model = AutoModel(model="paraformer-zh")
res = model.generate(input="音频文件路径.wav")
print(res)

AutoModel核心参数详解

model = AutoModel(
    model="模型名称或路径",
    device="cuda:0",  # 使用GPU
    ncpu=4,          # CPU线程数
    output_dir=None,  # 结果输出目录
    batch_size=1,     # 批处理大小
    hub="ms",         # 模型下载源
    **kwargs          # 其他模型配置参数
)

典型应用场景

1. 非流式语音识别

SenseVoice模型示例

model = AutoModel(
    model="iic/SenseVoiceSmall",
    vad_model="fsmn-vad",
    vad_kwargs={"max_single_segment_time": 30000},
    device="cuda:0"
)
res = model.generate(
    input="音频文件路径.mp3",
    language="auto",  # 自动检测语言
    use_itn=True,     # 启用逆文本归一化
    batch_size_s=60   # 动态批处理(秒)
)

Paraformer模型示例

model = AutoModel(
    model="paraformer-zh",
    vad_model="fsmn-vad",
    punc_model="ct-punc"
)
res = model.generate(
    input="长音频.wav",
    batch_size_s=300,
    batch_size_threshold_s=60,
    hotword='关键词'  # 热词增强
)
2. 流式语音识别
model = AutoModel(model="paraformer-zh-streaming")
chunk_size = [0, 10, 5]  # 600ms实时+300ms前瞻
chunk_stride = 960       # 600ms采样点数

for i in range(total_chunk_num):
    speech_chunk = 获取音频片段()
    is_final = (i == total_chunk_num - 1)
    res = model.generate(
        input=speech_chunk,
        cache=cache,
        is_final=is_final,
        chunk_size=chunk_size
    )
    print(res)
3. 语音活动检测(VAD)

非流式VAD

model = AutoModel(model="fsmn-vad")
res = model.generate(input="音频.wav")
# 输出格式: [[开始1,结束1], [开始2,结束2], ...] (毫秒)

流式VAD

model = AutoModel(model="fsmn-vad")
chunk_size = 200  # 毫秒

for i in range(total_chunk_num):
    speech_chunk = 获取音频片段()
    is_final = (i == total_chunk_num - 1)
    res = model.generate(
        input=speech_chunk,
        cache=cache,
        is_final=is_final,
        chunk_size=chunk_size
    )
    # 可能输出: [[beg,-1]], [[-1,end]], []等
4. 标点恢复
model = AutoModel(model="ct-punc")
res = model.generate(input="无标点文本")
print(res)  # 输出带标点的文本

模型训练指南

快速开始

推荐使用Python脚本进行训练:

cd examples/industrial_data_pretraining/paraformer
bash finetune.sh

训练参数详解

funasr/bin/train.py \
++model="模型名称或路径" \
++train_data_set_list="训练数据.jsonl" \
++valid_data_set_list="验证数据.jsonl" \
++dataset_conf.batch_size=20000 \
++dataset_conf.batch_type="token" \
++train_conf.max_epoch=50 \
++optim_conf.lr=0.0002 \
++output_dir="输出目录"

关键参数说明:

  • batch_type: 批处理类型(example/length/token)
  • batch_size: 批处理大小(样本数/帧数/token数)
  • max_epoch: 训练总轮次
  • lr: 学习率

多GPU训练配置

单机多GPU
export CUDA_VISIBLE_DEVICES="0,1"
gpu_num=$(echo $CUDA_VISIBLE_DEVICES | awk -F "," '{print NF}')

torchrun --nnodes 1 --nproc_per_node ${gpu_num} --master_port 12345 \
funasr/bin/train.py ${train_args}
多机多GPU

主节点(IP:192.168.1.1):

torchrun --nnodes 2 --node_rank 0 --nproc_per_node ${gpu_num} \
--master_addr 192.168.1.1 --master_port 12345 \
funasr/bin/train.py ${train_args}

工作节点:

torchrun --nnodes 2 --node_rank 1 --nproc_per_node ${gpu_num} \
--master_addr 192.168.1.1 --master_port 12345 \
funasr/bin/train.py ${train_args}

数据准备

训练数据需要准备为jsonl格式,可以从wav.scp和text.txt转换而来:

转换命令:

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

常见问题解决

  1. 内存不足(OOM)问题

    • 降低batch_size_s
    • 调整batch_size_threshold_s阈值
    • 减小max_single_segment_time
  2. 长音频处理

    • 结合VAD模型分割长音频
    • 使用动态批处理(batch_size_s)
  3. 流式处理延迟

    • 通过chunk_size参数控制实时性
    • 平衡延迟和准确率

通过本指南,您可以快速掌握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/gh_mirrors/fun/FunASR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霍璟尉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值