面向离线、流式与边缘部署的工业级语音识别工具箱。
ASR · VAD · 标点 · 说话人 pipeline · 情感与音频事件模型 · OpenAI 兼容服务
快速开始 · Colab · 性能评测 · 模型选择 · 迁移指南 · 场景速览 · 社区集成 · 部署选型 · 部署中心 · 排障 FAQ · 模型列表 · Agent 集成 · 文档 · 贡献
不想先配置本地环境?可以打开 Colab 快速体验 在浏览器里转写公开样例或上传自己的音频。
pip install torch torchaudio
pip install funasr如果要运行 GPU quickstart,请先按 pytorch.org 选择与你的 NVIDIA driver 匹配的 PyTorch / torchaudio CUDA wheel,再安装 FunASR。 安装后先确认 GPU 可见:
python - <<'PY'
import torch
print(torch.cuda.is_available())
PY只有这里输出 True 时才使用 device="cuda";否则请先使用
device="cpu",或重新安装匹配 CUDA 的 PyTorch wheel。
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model = AutoModel(model="iic/SenseVoiceSmall", vad_model="fsmn-vad", spk_model="cam++", device="cuda")
result = model.generate(input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav")
# AutoModel pipeline 返回带说话人 id 和时间戳的 VAD 分段:
for seg in result[0]["sentence_info"]:
print(f"[{seg['start']/1000:.1f}s] 说话人{seg['spk']}: {rich_transcription_postprocess(seg['sentence'])}")输出 — 带说话人标签、时间戳和标点的结构化文本:
[0.6s] 说话人0: 欢迎大家来体验达摩院推出的语音识别模型
这是一次 AutoModel pipeline 调用,实际组合了 SenseVoiceSmall、FSMN-VAD
和 CAM++ 三个独立模型;说话人分离由 CAM++ 提供,并非 SenseVoiceSmall
checkpoint 的内置输出。
SenseVoice 论文见 arXiv:2407.04051,
模型见 Hugging Face checkpoint,
边缘部署可用 GGUF checkpoint。
Fun-ASR-Nano 是基于 SenseVoice 编码器 + Qwen3-0.6B 解码器的 LLM-ASR, 支持中文、英语、日语,以及 7 种中文方言和 26 种地域口音:
from funasr import AutoModel
model = AutoModel(model="FunAudioLLM/Fun-ASR-Nano-2512", vad_model="fsmn-vad", device="cuda")
result = model.generate(input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav")需要 31 语种时,请改用独立的 Fun-ASR-MLT-Nano-2512 checkpoint。Nano 与 MLT-Nano 的语言范围不同,使用时请按 checkpoint 选择。
使用 vLLM 做高吞吐批处理:
from funasr.auto.auto_model_vllm import AutoModelVLLM
model = AutoModelVLLM(model="FunAudioLLM/Fun-ASR-Nano-2512", tensor_parallel_size=1)
results = model.generate(["audio1.wav", "audio2.wav"], language="auto")部署为 API 服务:
funasr-server --device cuda→ 本地 OpenAI 兼容接口 localhost:8000接入 AI Agent: MCP 服务 支持 Claude/Cursor · OpenAI API 支持 LangChain/Dify/AutoGen
Whisper 是单个模型,FunASR 是一个工具箱——按场景挑模型: Fun-ASR-Nano(中/英/日及中文方言,需 GPU)、 Fun-ASR-MLT-Nano(31 语种)、SenseVoiceSmall(五语种 ASR, 并返回情感与音频事件标签)、Paraformer(低延迟流式)。下表展示的是 工具箱级能力,并标明由哪个模型或 pipeline 提供:
| FunASR(工具箱) | Whisper | 云端 API | |
|---|---|---|---|
| 最高速度 | 340 倍实时(Fun-ASR-Nano + vLLM) | 13 倍实时 | ~1 倍实时 |
| 说话人识别 | ✅ 由 VAD + CAM++ pipeline 提供 | ❌ 需要 pyannote | ✅ 额外付费 |
| 情感识别 | ✅ 由 SenseVoice 提供 | ❌ | ❌ |
| 语言数 | 取决于 checkpoint(例如 Qwen3-ASR 52、MLT-Nano 31、Nano 中/英/日) | 57 | 因服务而异 |
| 流式识别 | ✅ WebSocket(Paraformer) | ❌ | ✅ |
| CPU 可用 | ✅ 17 倍实时(SenseVoice) | ❌ 太慢 | 不适用 |
| 私有部署 | ✅ 支持(工具箱 MIT;模型协议各异) | ✅ MIT 开源 | ❌ 仅云端 |
| 费用 | 免费 | 免费 | ¥0.04/分钟起 |
第一次试用 FunASR?可以先跑 Colab 快速体验,再配置本地环境。还不确定先用哪个模型?先看 模型选择指南。计划从 Whisper 或云端 ASR 切换?请按 迁移指南 和 评测示例 用代表性音频评测、映射功能并安全上线。
184 条长音频(共 192 分钟)。完整报告 →
| 模型 | 中文 CER ↓ | GPU 速度 | CPU 速度 | 对比 Whisper-large-v3 |
|---|---|---|---|---|
| Fun-ASR-Nano(vLLM) | 8.20% | 340 倍实时 | — | 🚀 快 26 倍 |
| SenseVoice-Small | 7.81% | 170 倍实时 | 17 倍实时 | 🚀 快 13 倍 |
| Paraformer-Large | 10.18% | 120 倍实时 | 15 倍实时 | 🚀 快 9 倍 |
| Whisper-large-v3-turbo | 21.71% | 46 倍实时 | ❌ | 快 3.4 倍 |
| Whisper-large-v3 | 20.02% | 13 倍实时 | ❌ | 基准 |
一句话: FunASR 在 CPU 上的速度,比 Whisper 在 GPU 上还快。
- 2026/07/31:v1.4.0 已发布到 PyPI —
AutoModel现在会在下载模型前拒绝常见的vda_model误拼写并明确提示使用vad_model,避免依赖 VAD 的分段、说话人处理和sentence_info被静默关闭。GitHub 源码发布同时更新 legacy WebSocket 文件运行时:客户端会等待明确的输入结束确认,服务端先刷新待处理的 offline、online 与 2pass 音频,并把收尾失败返回给客户端。Python 包安装命令:python -m pip install -U "funasr==1.4.0"。发布页 → - 2026/07/27:v1.3.30 已发布到 PyPI — WAV、MP3、FLAC、OGG、MP4/M4A 和 WebM 等容器格式的音频字节现在会通过对应编解码器解码,不再被误当作原始 PCM。OpenAI 兼容响应会保留说话人标签,标点不匹配时仍保留 VAD 分句时间,受信任的浏览器客户端可按需启用 CORS,vLLM 的 VAD 分段上限为 30 秒。GitHub 发布页还同时提供覆盖九种桌面和服务器目标的当前 llama.cpp 预编译运行包。安装命令:
python -m pip install -U "funasr==1.3.30"。发布页 → - 2026/07/24:v1.3.29 热修复已发布到 PyPI — SenseVoice 长音频在没有词级时间戳和标点模型时,现在会通过
sentence_info返回每个 VAD 语音片段。字幕客户端可直接获得识别文本及真实的毫秒级起止时间,不再退化为零时长或覆盖整段媒体的单条字幕。安装命令:python -m pip install -U "funasr==1.3.29"。发布页 → - 2026/07/24:v1.3.28 热修复已发布到 PyPI — 实时 WebSocket 在 VAD 锁句结果退化为短前缀、重复幻觉或解码异常时,会保留连续且完整覆盖当前语音段的干净 partial;短音频 STOP、VAD 收尾和说话人结束现在统一走可靠的完成路径。SenseVoice 字幕分句也会正确对齐富标签、标点与词/BPE 时间戳,不再把中文压成一个字幕块,也不会破坏英文原文。安装命令:
python -m pip install -U "funasr==1.3.28"。发布页 → - 2026/07/24:v1.3.27 已发布到 PyPI — OpenAI 兼容服务现在会在
verbose_json中返回 SenseVoice 检测到的语言,并在 vLLM 降级后复用已缓存的 Fun-ASR-NanoAutoModel。当 vLLM/VAD 初始化及其 fallback 均失败时,不会残留半初始化的 engine 状态,后续请求可以重试。安装命令:python -m pip install -U "funasr==1.3.27"。发布页 → - 2026/07/23:llama.cpp runtime v0.1.9 — 新增独立的 Windows Vulkan 包
funasr-llamacpp-windows-x64-vulkan.zip,支持在安装当前 AMD、Intel 或 NVIDIA Vulkan 驱动的 Windows 机器上运行 SenseVoiceSmall;Linux Vulkan、Windows CUDA、CPU/AVX2、Linux arm64 和 macOS arm64 包继续提供。发布页 → - 2026/07/23:v1.3.26 已发布到 PyPI —
funasr-server --model fun-asr-nano --hub ms现在会在默认 Fun-ASR-Nano 的 vLLM 路径和 AutoModel fallback 路径中都尊重 ModelScope hub 选择,避免用户指定 ModelScope 时仍误走 Hugging Face 下载。安装命令:python -m pip install -U "funasr==1.3.26"。发布页 → - 2026/07/23:v1.3.25 已发布到 PyPI — 实时 WebSocket 服务新增
POSTPROCESS_HOTWORDS:错词=>正确词与--postprocess-hotword-file,可在 final 文本阶段做确定性热词纠正,避免把固定错词修正误用成模型层HOTWORDS:解码偏置;源码目录下的实时服务入口也可直接运行。安装命令:python -m pip install -U "funasr==1.3.25"。发布页 → - 2026/07/23:v1.3.24 已发布到 PyPI — OpenAI 兼容服务现在支持自定义模型路径和 hub 选择,llama.cpp/GGUF 文档补充 HTTP 转写 wrapper 与 Linux Vulkan 包,公开文档链接也已刷新,便于新用户顺利上手。安装命令:
python -m pip install -U "funasr==1.3.24"。发布页 → - 2026/07/19:v1.3.22 已发布到 PyPI —
funasr-server现在会为 SenseVoice/Paraformer fallback 的纯文本结果补齐 OpenAI 兼容verbose_json.segments,避免字幕类客户端在text已有内容时仍拿到空segments数组。安装命令:python -m pip install -U "funasr==1.3.22"。发布页 → - 2026/07/19:v1.3.21 已发布到 PyPI — 修复全新环境里先安装
funasr、尚未选择平台对应 PyTorch 版本时的首次导入阻塞。现在import funasr和funasr.__version__不再因为缺少 torch 失败;真正访问AutoModel时仍会要求安装 PyTorch,并给出明确安装提示。安装命令:python -m pip install -U "funasr==1.3.21"。发布页 → - 2026/07/19:v1.3.20 已发布到 PyPI — PyPI 项目页和安装引导已同步到当前 FunASR 文档、社区集成列表,以及 Fun-ASR-Nano 部署路径中带引号的
python -m pip install -U "funasr>=1.3.19"命令。本版本是文档/打包元数据同步,运行时代码与 v1.3.19 保持一致。安装命令:python -m pip install -U "funasr==1.3.20"。发布页 → - 2026/07/19:v1.3.19 已发布到 PyPI — 实时 WebSocket 长会话排障文档已随包发布。启动服务时加上
--enable-spk --log-session-stats-interval 30,如果仍遇到断连或内存增长,请在 issue 中附上输出的Session stats:日志。安装命令:python -m pip install -U "funasr==1.3.19"。长会话诊断 → · 发布页 → - 2026/07/19:v1.3.18 已发布到 PyPI — CLI 的 SRT/TSV 字幕输出现在会请求句级时间戳,并在需要时加载标点模型;
funasr audio.wav --output-format srt --output-dir ./subs会输出分句字幕,不再退化成一个全文字幕块。安装命令:python -m pip install -U "funasr==1.3.18"。发布页 → - 2026/07/18:v1.3.16 已发布到 PyPI — Fun-ASR-Nano 实时服务新增客户端分句模式。一个 WebSocket 会话可连续发送 PCM,并用
COMMIT提交每个句子;无需加载服务端 VAD,短句可正常结束,多轮时间戳保持递增。执行pip install --upgrade funasr后,可用funasr-realtime-server --endpoint-mode client启动。使用文档 → - 2026/07/22:llama.cpp runtime v0.1.8 — 新增 Linux Vulkan 预编译包
funasr-llamacpp-linux-x64-vulkan.tar.gz,可在支持 Vulkan driver/ICD 的 Linux GPU 上运行llama-funasr-sensevoice ... --backend vulkan;CPU、AVX2、macOS arm64、Windows CPU/AVX2、Windows CUDA 包继续保留。发布页 → - 2026/07/18:llama.cpp runtime v0.1.7 — 新增 SenseVoiceSmall 的 Windows CUDA 预编译包
funasr-llamacpp-windows-x64-cuda.zip,并保留 Linux / macOS / Windows CPU 包。下载 GGUF 模型后,可在支持的 NVIDIA GPU 上运行llama-funasr-sensevoice ... --backend cuda。发布页 → - 2026/05/24:vLLM 推理引擎 — Fun-ASR-Nano 解码加速 2-3 倍。支持流式 WebSocket 服务(VAD + 说话人分离 + 热词)。文档 → · 实时 WS 调优 → · API 稳定性清单 →
- 2026/05/24:动态 VAD — 自适应静音阈值(默认开启),短句不切碎、长句自动切分。详情 →
- 2026/05/24:v1.3.3 —
funasr-server命令行工具、OpenAI 兼容 API、MCP 服务。pip install --upgrade funasr - 2026/05/20:新增 Qwen3-ASR (0.6B/1.7B),52 种语言自动检测。使用方法
- 2026/05/20:新增 GLM-ASR-Nano (1.5B),17 种语言,方言优化。使用方法
- 2026/05/19:Fun-ASR-Nano 和 SenseVoice 可与 VAD、CAM++ 组合为说话人分离 pipeline。
- 2025/12/15:Fun-ASR-Nano-2512 上线,支持中/英/日及中文方言。
更早
- 2024/10/10:支持 Whisper-large-v3-turbo。
- 2024/07/04:SenseVoice 发布。
- 2024/01/30:FunASR 1.0 发布。
pip install funasr从源码安装
git clone https://github.com/modelscope/FunASR.git && cd FunASR
pip install -e ./环境要求:Python ≥ 3.8、PyTorch ≥ 1.13、torchaudio
| 模型 | 任务 | 语言 | 参数量 | 链接 |
|---|---|---|---|---|
| Fun-ASR-Nano | 识别 | 中/英/日 + 中文方言 | 800M | ⭐ 🤗 GGUF |
| Fun-ASR-MLT-Nano | 识别 | 31 种语言 | 800M | ⭐ 🤗 |
| SenseVoiceSmall | 识别 + 情感 + 事件 | 中/英/日/韩/粤 | 234M | ⭐ 🤗 GGUF 论文 |
| Paraformer-zh | 识别 + 时间戳 | 中/英 | 220M | ⭐ 🤗 |
| Paraformer-zh-streaming | 流式识别 | 中/英 | 220M | ⭐ 🤗 |
| Qwen3-ASR | 识别,52 种语言 | 多语言 | 1.7B | 使用 |
| GLM-ASR-Nano | 识别,17 种语言 | 多语言 | 1.5B | 使用 |
| Whisper-large-v3 | 识别 + 翻译 | 多语言 | 1550M | 使用 |
| Whisper-large-v3-turbo | 识别 + 翻译 | 多语言 | 809M | 使用 |
| ct-punc | 标点恢复 | 中/英 | 290M | ⭐ 🤗 |
| fsmn-vad | 语音检测 | 中/英 | 0.4M | ⭐ 🤗 |
| cam++ | 说话人分离 | — | 7.2M | ⭐ 🤗 |
| emotion2vec+large | 情感识别 | — | 300M | ⭐ 🤗 |
完整参数文档:教程 →
from funasr import AutoModel
# 中文生产级(VAD + 识别 + 标点 + 说话人)
model = AutoModel(model="paraformer-zh", vad_model="fsmn-vad", punc_model="ct-punc", spk_model="cam++", device="cuda")
result = model.generate(input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav", hotword="关键词 20")
# 中/英/日 + 中文方言
model = AutoModel(model="FunAudioLLM/Fun-ASR-Nano-2512", hub="hf", trust_remote_code=True,
vad_model="fsmn-vad", vad_kwargs={"max_single_segment_time": 30000}, device="cuda")
result = model.generate(input="audio.wav", batch_size=1)
# 流式实时识别(逐块喂音频)
import soundfile as sf
model = AutoModel(model="paraformer-zh-streaming", device="cuda")
audio, sr = sf.read("speech.wav", dtype="float32") # 16 kHz 单声道
chunk_size = [0, 10, 5] # 每块 600ms
chunk_stride = chunk_size[1] * 960
cache = {}
n_chunks = (len(audio) - 1) // chunk_stride + 1
for i in range(n_chunks):
chunk = audio[i * chunk_stride : (i + 1) * chunk_stride]
res = model.generate(input=chunk, cache=cache, is_final=(i == n_chunks - 1),
chunk_size=chunk_size, encoder_chunk_look_back=4, decoder_chunk_look_back=1)
if res[0]["text"]:
print(res[0]["text"], end="", flush=True)
# 情感识别
model = AutoModel(model="emotion2vec_plus_large", device="cuda")
result = model.generate(input="audio.wav", granularity="utterance")# 转写音频(最简用法)
funasr audio.wav
# JSON 输出(适合 AI Agent 调用)
funasr audio.wav --output-format json
# 生成 SRT 字幕
funasr audio.wav --output-format srt --output-dir ./subs
# 说话人分离 + 时间戳
funasr audio.wav --spk --timestamps -f json
# 指定模型和语言
funasr audio.wav --model paraformer --language zh
# 批量转写
funasr *.wav --output-format srt --output-dir ./output可用模型:sensevoice(默认)、paraformer、paraformer-en、fun-asr-nano
# OpenAI 兼容 API(推荐)
pip install funasr fastapi uvicorn python-multipart
funasr-server --model sensevoice --device cuda
# → POST /v1/audio/transcriptions,地址 localhost:8000使用公开样例音频验证服务:
curl -L https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav -o sample.wav
curl http://localhost:8000/v1/audio/transcriptions \
-F file=@sample.wav \
-F model=sensevoice \
-F response_format=verbose_json# Docker 流式服务
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12在 CPU 和边缘设备上用单个自包含二进制运行 SenseVoice / Paraformer / Fun-ASR-Nano,无需 Python 运行环境,并内置 FSMN-VAD。
# Linux / macOS:在解压后的发布目录中执行
bash download-funasr-model.sh sensevoice ./gguf # 也可使用 paraformer 或 nano
./llama-funasr-sensevoice -m ./gguf/sensevoice-small-q8.gguf --vad ./gguf/fsmn-vad.gguf -a audio.wav
# -> 欢迎大家来体验达摩院推出的语音识别模型# Windows PowerShell:在解压根目录执行(需已安装 `hf` CLI)
hf download FunAudioLLM/SenseVoiceSmall-GGUF sensevoice-small-q8.gguf --local-dir .\gguf
hf download FunAudioLLM/fsmn-vad-GGUF fsmn-vad.gguf --local-dir .\gguf
.\llama-funasr-sensevoice.exe -m .\gguf\sensevoice-small-q8.gguf --vad .\gguf\fsmn-vad.gguf -a audio.wav
# 使用 windows-x64-vulkan 包,并安装 AMD、Intel 或 NVIDIA 的当前 Vulkan 显卡驱动:
.\llama-funasr-sensevoice.exe -m .\gguf\sensevoice-small-q8.gguf --vad .\gguf\fsmn-vad.gguf -a audio.wav --backend vulkan
# RTX 30 系列等架构 86 GPU 可使用 windows-x64-cuda 包:
.\llama-funasr-sensevoice.exe -m .\gguf\sensevoice-small-q8.gguf --vad .\gguf\fsmn-vad.gguf -a audio.wav --backend cudaLinux GPU 用户可下载 funasr-llamacpp-linux-x64-vulkan.tar.gz,在已安装可用
Vulkan driver/ICD 的机器上运行:
./llama-funasr-sensevoice -m ./gguf/sensevoice-small-q8.gguf --vad ./gguf/fsmn-vad.gguf -a audio.wav --backend vulkanWindows Vulkan ZIP 使用显卡驱动提供的系统 Vulkan loader,不需要另外安装 Vulkan SDK;当前与 Linux Vulkan 包一样,仅加速 SenseVoiceSmall。
当前 Windows CUDA 包面向 CUDA architecture 86。RTX 50 / Blackwell GPU 会报告
compute capability 12.0(sm_120),在专用 CUDA 产物发布前,请使用 CPU 包,或从
源码构建并设置 -DCMAKE_CUDA_ARCHITECTURES=120。
预编译二进制: Releases · v0.1.9 · Linux Vulkan tarball · Windows Vulkan zip · Windows CUDA zip · 下载与快速开始: funasr.com/llama-cpp · GGUF 模型: Hugging Face · 文档与评测: runtime/llama.cpp/
OpenAI API 示例 → · Gradio Demo → · 客户端配方 → · JavaScript/TypeScript 配方 → · Kubernetes 模板 → · 工作流配方 → · Postman 集合 → · OpenAPI 规范 → · 安全指南 → · 部署选型 → · 部署文档 → · Agent 集成 →
| 📖 文档 | 🐛 问题反馈 |
| 💬 讨论 | 🤗 HuggingFace |
| 🤝 贡献指南 | 📈 20k 增长计划 |
| 🗺️ 仓库职责与路线图 | 🌐 funasr.com |
| 🧩 社区集成 | 💡 使用案例 |
- 本仓库的 FunASR 工具箱源码:MIT License。
- 预训练模型权重单独授权,请以各模型卡标注的协议为准;模型卡若链接本仓库的 FunASR 模型开源协议,则适用该协议。
@inproceedings{gao2023funasr,
author={Zhifu Gao and others},
title={FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
booktitle={INTERSPEECH},
year={2023}
}