FunASR:几行代码搞定语音识别全流程的开源工具包,GitHub已获15.2k Star!

0 阅读8分钟

导读

语音识别(ASR)是人工智能落地最广泛的方向之一,但学术界的前沿模型与工业界的实际部署之间一直存在距离。

阿里达摩院开源的 FunASR,正是为弥合这一差距而生。它提供基于大规模工业语料训练的预训练模型,支持训练、微调和服务部署,覆盖语音识别、语音活动检测、标点恢复、说话人分离、情感识别等任务。项目自 2023 年开源以来持续更新,除自研的 Paraformer 系列外,还集成了通义实验室的 Fun-ASR-Nano(支持中文 7 种方言和 26 种地方口音)、SenseVoice 等外部模型,目前在 GitHub 上已获得 15.2k Star。本文将从项目定位、模型体系、使用方式和服务部署几个方面,对 FunASR 做一个全面的介绍。


一、FunASR 是什么?

screenshot_2026-03-16_11-02-32.png

图片来源于原论文

FunASR(Fundamental ASR)是一个基于 PyTorch 的端到端语音识别工具包,由阿里达摩院语音实验室开发并开源。项目的核心目标有两个:

  1. 提供工业级预训练模型:在 ModelScope 和 Hugging Face 上发布多个基于工业数据训练的模型,涵盖语音识别、语音活动检测、标点恢复、情感识别等任务,用户可以直接调用。
  2. 打通训练到部署的全链路:FunASR 不仅支持模型推理,还提供从零训练的学术流水线和面向工业场景的微调脚本,并提供 Docker 化的服务部署方案(包括实时流式转录和离线文件转录),直接对接生产环境需求。

FunASR 的核心价值在于工具包能力——统一的 AutoModel 接口、灵活的模型组合、一键服务部署。它不仅提供自研模型(Paraformer 系列),还集成了来自其他团队的模型(如通义实验室的 SenseVoice 和 Fun-ASR-Nano、OpenAI 的 Whisper、阿里云的 Qwen-Audio 等),让开发者用几行代码,就能完成从"一段音频"到"一段带标点、带时间戳、带说话人标签的文字"的全过程。


二、核心模型一览

FunASR 的模型库覆盖了语音处理的多个环节。需要说明的是,FunASR 作为工具包,既包含达摩院自研的模型,也集成了其他团队的模型,以下按来源分类列出:

达摩院自研模型**screenshot_2026-03-16_11-03-52.png**图片来源于原论文

模型名称语言参数量特点
Paraformer-zh中文220M6 万小时中文数据训练,支持时间戳,非流式
Paraformer-zh-streaming中文220MParaformer 的流式版本
Paraformer-en英文220M5 万小时英文数据训练,非流式
Conformer-en英文220M5 万小时英文数据训练,非流式

Paraformer 是 FunASR 的自研核心模型,发表于 INTERSPEECH 2022/2023。它是一个单步非自回归(NAR)模型,相比自回归模型实现了 12 倍推理加速。在 AISHELL test 上 CER 为 1.95%。需要注意的是,随着领域的快速发展,Paraformer 在中文识别精度上已不是最新 SOTA(如 FireRedASR 在 AISHELL-1 上 CER 已达 0.57%),但 FunASR 的优势在于工具包层面的模型组合和部署能力。

集成的外部模型

模型名称来源语言参数量特点
Fun-ASR-Nano通义实验室中/英/日800M数千万小时数据训练,支持 7 种方言、26 种口音,支持歌词与说唱识别
SenseVoiceSmall通义实验室中/粤/英/日/韩234M40 万+小时数据,同时支持语种识别、情感识别、音频事件检测,非自回归端到端架构,处理 10 秒音频仅需 70ms
Whisper-large-v3OpenAI多语言1550M多语言语音识别,带时间戳
Whisper-large-v3-turboOpenAI多语言809M多语言语音识别,带时间戳
Qwen-Audio阿里云 Qwen 团队多语言8B音频-文本多模态(预训练)
Qwen-Audio-Chat阿里云 Qwen 团队多语言8B音频-文本多模态(对话)

这些模型由各自团队开发和维护,FunASR 通过统一的 AutoModel 接口将它们集成在一起,用户切换模型只需更改 model 参数。

辅助任务模型

模型名称任务参数量说明
fsmn-vad语音活动检测0.4M检测音频中的有效语音段,输出起止时间(毫秒)
ct-punc标点恢复290M1 亿条样本训练,为识别文本自动添加标点
fsmn-kws关键词检测0.7M支持流式关键词检测
fa-zh时间戳预测38M对已有文本进行精确时间对齐
cam++说话人验证/分离7.2M用于区分不同说话人
emotion2vec+large情感识别300M4 万小时数据训练,识别语音中的情感

值得注意的是,这些模型可以灵活组合使用。比如将 VAD + Fun-ASR-Nano + 标点恢复串联,就可以实现"长音频 → 分段识别 → 带标点文本"的完整流水线。这种模型组合能力是 FunASR 作为工具包的核心优势。


三、上手使用:从几行代码开始

安装

FunASR 的安装非常简单,要求 Python ≥ 3.8、PyTorch ≥ 1.13:

pip3 install -U funasr

FunASR 提供了统一的 AutoModel 接口,通过切换模型名称和组合不同模块即可完成各类语音任务。

命令行调用

最快捷的方式是直接用命令行,一行命令即可完成 VAD 分段 + 语音识别 + 标点恢复:

funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav

支持单个音频文件或 Kaldi 风格的 wav.scp 文件列表。

Python API(非流式:Fun-ASR-Nano)

以下示例使用 Fun-ASR-Nano 模型,配合 VAD 进行语音识别:

from funasr import AutoModel

model = AutoModel(
    model="FunAudioLLM/Fun-ASR-Nano-2512",
    vad_model="fsmn-vad",
    vad_kwargs={"max_single_segment_time"30000},
    device="cuda:0",
)
res = model.generate(input=[wav_path], cache={}, batch_size_s=0)
text = res[0]["text"]

Python API(多能力识别:SenseVoiceSmall)

SenseVoiceSmall 的调用方式类似,通过 language="auto" 自动检测语种,use_itn=True 启用标点和反向文本规范化:

from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

model = AutoModel(
    model="iic/SenseVoiceSmall",
    vad_model="fsmn-vad",
    vad_kwargs={"max_single_segment_time"30000},
    device="cuda:0",
)
res = model.generate(
    input=f"{model.model_path}/example/en.mp3",
    cache={},
    language="auto",
    use_itn=True,
    batch_size_s=60,
    merge_vad=True,
    merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])

两个示例使用的都是 FunASR 统一的 AutoModel 接口,切换模型只需更改 model 参数。主仓库 README 中还提供了流式识别、VAD、标点恢复、时间戳预测、情感识别等完整的代码示例,详见项目仓库。


四、服务部署:面向生产环境

FunASR 不只是一个研究工具,它提供了面向生产的服务部署方案:

离线文件转录服务

  • FFmpeg 音频格式处理
  • 时间戳生成
  • 热词模型
  • 动态批处理
  • CPU 和 GPU 两种部署方式
  • SenseVoiceSmall ONNX 模型支持

实时流式转录服务

  • 支持边说边转的实时识别
  • 支持先出流式结果、再用离线模型修正的两阶段模式

性能表现

  • GPU 离线转录服务单线程 RTF 为 0.0076,多线程加速比 1200+
  • CPU 上使用 ONNX Int8 量化 RTF 为 0.0446,CER 无损失,AMP 量化提升推理速度约 40%

多平台与模型导出

  • Windows SDK(v2.0)
  • ARM64 平台 Docker 镜像
  • ONNX 模型导出,一行命令完成:
funasr-export ++model=paraformer ++quantize=false ++device=cpu

社区生态

围绕 FunASR 的模型,社区贡献了多种部署方案:

  • Triton GPU 部署
  • sherpa-onnx:支持 C++/Python/Java 等 10 种编程语言,覆盖 iOS/Android/Raspberry Pi
  • SenseVoice.cpp:基于 GGML 的纯 C/C++ 实现,支持 3/4/5/8 位量化
  • SenseVoice FastAPI 服务部署,支持 Python、C++、Java、C# 等多种语言调用

五、总结:FunASR 适合谁?

FunASR 的定位介于纯学术框架和商业 API 之间,它的价值在于开源、可控、可定制。具体来说:

  • 需要私有化部署语音识别的团队:不依赖第三方 API,数据不出本地,适合对数据安全有要求的场景。
  • 需要多任务组合的开发者:VAD、ASR、标点、说话人分离、情感识别可以灵活串联,通过统一的 AutoModel 接口构建定制化的语音处理流水线。
  • 需要实时转录的应用场景:会议记录、直播字幕、客服质检等场景可以直接使用其流式和离线转录服务。
  • 需要在特定领域微调的团队:FunASR 支持在预训练模型基础上进行微调,适配垂直行业的专业词汇和口音。

从 2023 年至今,FunASR 保持着稳定的更新节奏,从自研的 Paraformer 到集成通义实验室的 SenseVoice 和 Fun-ASR-Nano,工具包的模型覆盖和部署能力持续扩展。


相关仓库

论文:Zhifu Gao, Zerui Li, Jiaming Wang, et al. "FunASR: A Fundamental End-to-End Speech Recognition Toolkit." INTERSPEECH 2023.

许可证:代码采用 MIT License;模型使用需遵守 Model License Agreement。