工业级语音识别。比 Whisper 快 170 倍。支持 50+ 语言。
说话人分离 · 情感识别 · 流式转写 · 一次调用搞定
快速开始 · Colab · 性能评测 · 模型选择 · 迁移指南 · 场景速览 · 部署选型 · 模型列表 · Agent 集成 · 文档 · 贡献
不想先配置本地环境?可以打开 Colab 快速体验 在浏览器里转写公开样例或上传自己的音频。
pip install funasr
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")
# 一次调用即返回带说话人 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: 欢迎大家来体验达摩院推出的语音识别模型
一个模型、一次调用 — VAD 分段、语音识别、标点恢复、说话人分离全部自动完成。
追求更高精度、支持 31 种语言(含中文方言),使用 Fun-ASR-Nano — SenseVoice 编码器 + Qwen3-0.6B 解码器的 LLM-based ASR:
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")
使用 vLLM 加速(批量处理快 16 倍):
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
| FunASR | Whisper | 云端 API | |
|---|---|---|---|
| 速度 | 170 倍实时 | 13 倍实时 | ~1 倍实时 |
| 说话人识别 | ✅ 内置 | ❌ 需要 pyannote | ✅ 额外付费 |
| 情感识别 | ✅ 开心/悲伤/愤怒 | ❌ | ❌ |
| 语言数 | 50+ | 57 | 因服务而异 |
| 流式识别 | ✅ WebSocket | ❌ | ✅ |
| 私有部署 | ✅ MIT 开源 | ✅ MIT 开源 | ❌ 仅云端 |
| 费用 | 免费 | 免费 | ¥0.04/分钟起 |
| CPU 可用 | ✅ 17 倍实时 | ❌ 太慢 | 不适用 |
第一次试用 FunASR?可以先跑 Colab 快速体验,再配置本地环境。还不确定先用哪个模型?先看 模型选择指南。计划从 Whisper 或云端 ASR 切换?请按 迁移指南 和 评测示例 用代表性音频评测、映射功能并安全上线。
184 条长音频(共 192 分钟)。完整报告 →
| 模型 | GPU 速度 | CPU 速度 | 对比 Whisper-large-v3 |
|---|---|---|---|
| SenseVoice-Small | 170 倍实时 | 17 倍实时 | 🚀 快 13 倍 |
| Paraformer-Large | 120 倍实时 | 15 倍实时 | 🚀 快 9 倍 |
| Whisper-large-v3-turbo | 46 倍实时 | ❌ | 快 3.4 倍 |
| Fun-ASR-Nano | 17 倍实时 | 3.6 倍实时 | 快 1.3 倍 |
| Whisper-large-v3 | 13 倍实时 | ❌ | 基准 |
一句话: FunASR 在 CPU 上的速度,比 Whisper 在 GPU 上还快。
funasr-server 命令行工具、OpenAI 兼容 API、MCP 服务。pip install --upgrade funasr更早
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 | 识别 + 时间戳 | 31 种语言 | 800M | ⭐ 🤗 |
| SenseVoiceSmall | 识别 + 情感 + 事件 | 中/英/日/韩/粤 | 234M | ⭐ 🤗 |
| 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")
# 31 种语言 + 时间戳
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 / 边缘部署(无需 GPU、无需 Python): 用 llama.cpp / GGUF 跑 Fun-ASR-Nano / SenseVoice / Paraformer —— 单个自包含二进制,对标 whisper.cpp。详见 runtime/llama.cpp/。
OpenAI API 示例 → · Gradio Demo → · 客户端配方 → · JavaScript/TypeScript 配方 → · Kubernetes 模板 → · 工作流配方 → · Postman 集合 → · OpenAPI 规范 → · 安全指南 → · 部署选型 → · 部署文档 → · Agent 集成 →
| 📖 文档 | 🐛 问题反馈 |
| 💬 讨论 | 🤗 HuggingFace |
| 🤝 贡献指南 | 📈 20k 增长计划 |
@inproceedings{gao2023funasr,
author={Zhifu Gao and others},
title={FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
booktitle={INTERSPEECH},
year={2023}
}
$ claude mcp add FunASR \
-- python -m otcore.mcp_server <graph>