MCPcopy
hub / github.com/modelscope/FunASR

github.com/modelscope/FunASR @v1.3.13 sqlite

repository ↗ · DeepWiki ↗ · release v1.3.13 ↗
7,956 symbols 28,417 edges 1,329 files 4,008 documented · 50%
README

(English|简体中文|日本語|한국어)

FunASR

工业级语音识别。比 Whisper 快 170 倍。支持 50+ 语言。

说话人分离 · 情感识别 · 流式转写 · 一次调用搞定

PyPI Stars Downloads Docs

modelscope%2FFunASR | Trendshift

快速开始 · Colab · 性能评测 · 模型选择 · 迁移指南 · 场景速览 · 部署选型 · 模型列表 · Agent 集成 · 文档 · 贡献


快速开始

Open In Colab

不想先配置本地环境?可以打开 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 分段、语音识别、标点恢复、说话人分离全部自动完成。

LLM 语音识别:Fun-ASR-Nano

追求更高精度、支持 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?

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 上还快。


最新动态

  • 2026/05/24:vLLM 推理引擎 — Fun-ASR-Nano 解码加速 2-3 倍。支持流式 WebSocket 服务(VAD + 说话人分离 + 热词)。文档 →
  • 2026/05/24:动态 VAD — 自适应静音阈值(默认开启),短句不切碎、长句自动切分。详情 →
  • 2026/05/24:v1.3.3funasr-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 支持说话人分离。
  • 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 识别 + 时间戳 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")

命令行工具(Agent 友好)

# 转写音频(最简用法)
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(默认)、paraformerparaformer-enfun-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 增长计划

Star 趋势

Star History Chart

许可证

MIT License

引用

@inproceedings{gao2023funasr,
  author={Zhifu Gao and others},
  title={FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
  booktitle={INTERSPEECH},
  year={2023}
}

Extension points exported contracts — how you extend this code

RecognitionService2 (Interface)
@author Virgil Qiu @since 2024/04/24 [3 implementers]
runtime/java/java_http2ws_src/http/src/main/java/com/example/funasr_java_client/Servcvice/RecognitionService2.java
RecognitionService (Interface)
@author Virgil Qiu @since 2024/04/24 [3 implementers]
runtime/java/java_http2ws_src/http/src/main/java/com/example/funasr_java_client/Servcvice/RecognitionService.java

Core symbols most depended-on inside this repo

on
called by 477
web-pages/public/index.js
P
called by 312
web-pages/public/decoder.js
log
called by 303
funasr/train_utils/trainer.py
r
called by 242
web-pages/public/index.js
keys
called by 187
examples/industrial_data_pretraining/lcbnet/compute_wer_details.py
apply
called by 169
funasr/models/sense_voice/whisper_lib/decoding.py
emit
called by 158
web-pages/public/jessibuca.js
error
called by 156
web-pages/public/jessibuca.js

Shape

Method 3,691
Function 2,948
Class 1,294
Route 18
Interface 2
Struct 2
Enum 1

Languages

Python74%
TypeScript25%
Java1%
Go1%

Modules by API surface

web-pages/public/index.js730 symbols
web-pages/public/jessibuca.js369 symbols
web-pages/public/static/liveplayer/liveplayer-lib.min.js336 symbols
web-pages/public/static/liveplayer/liveplayer-component.min.js258 symbols
web-pages/public/decoder.js114 symbols
tests/test_asr_inference_pipeline.py62 symbols
funasr/models/language_model/rnn/attentions.py60 symbols
funasr/models/sense_voice/whisper_lib/decoding.py58 symbols
examples/aishell/paraformer/utils/textnorm_zh.py57 symbols
examples/aishell/e_paraformer/utils/textnorm_zh.py57 symbols
funasr/models/fun_asr_nano/tools/cn_tn.py56 symbols
examples/industrial_data_pretraining/fun_asr_nano/tools/cn_tn.py56 symbols

Dependencies from manifests, versioned

@babel/core7.17.10 · 1×
@babel/eslint-parser7.17.0 · 1×
@liveqing/liveplayer2.7.10 · 1×
@vue/cli-plugin-babel5.0.4 · 1×
@vue/cli-plugin-eslint5.0.4 · 1×
@vue/cli-plugin-router5.0.4 · 1×
@vue/cli-plugin-vuex5.0.4 · 1×
@vue/cli-service5.0.4 · 1×
@vue/eslint-config-standard6.1.0 · 1×
ant-design-vue1.7.5 · 1×
axios0.19.2 · 1×

For agents

$ claude mcp add FunASR \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact