项目文件夹

0
zhifu gao 486b4b7ceb docs: connect native Transformers guides to tested CUDA recipe (#3697)
Connect bilingual source guides to the tested canonical GPU example without changing CPU recipes or model capabilities.

Signed-off-by: LauraGPT <18321252+LauraGPT@users.noreply.github.com>
2026-09-10 18:58:26 +08:00
2024-07-23 11:45:43 +08:00
2024-04-24 16:03:38 +08:00
2024-03-13 17:18:16 +08:00
2026-07-10 04:34:41 +00:00
2024-12-17 11:15:53 +08:00
2024-11-20 11:27:45 +08:00
2025-08-14 16:07:24 +08:00

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

FunASR

面向离线、流式与边缘部署的工业级语音识别工具箱。
ASR · VAD · 标点 · 说话人 pipeline · 情感与音频事件模型 · OpenAI 兼容服务

PyPI Stars Downloads Docs

modelscope%2FFunASR | Trendshift

快速开始 · 模型选择 · 模型列表 · 部署选型 · 部署中心 · 文档中心 · 性能评测 · 贡献


快速开始

原生 Transformers

使用 Hugging Face API 转写 Fun-ASR-Nano,先看 Transformers 5.17.0 CPU 快速开始,不需要安装 FunASR 工具库或执行远程 Python 代码。

Space · Notebook · Python / batch examples

FunASR 工具库与流水线

Open In Colab

不想先配置本地环境?可以打开 Colab 快速体验 在浏览器里转写公开样例或上传自己的音频。

FunASR 对你有帮助?欢迎 Star 项目,让更多开发者找到它。

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。

以下 SenseVoiceSmall 示例先使用 CPU,并组合 FSMN-VAD 与 CAM++。

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="cpu")
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'])}")

代码打印实际返回的 VAD 分段起点(秒)、匿名说话人编号和去除 SenseVoice 标签后的文本。文本与分段边界取决于音频和 checkpoint,这里不预设转写结果。

CAM++ 提取 spk_embedding 说话人嵌入,AutoModel 再聚类并为 VAD 分段分配 说话人编号;编号仅在当前录音内有效,不是已知人物身份,也不是 SenseVoiceSmall checkpoint 的内置输出。组件和返回字段见 SDK 契约。 需要 GPU 时,先按上文验证环境,再将 device 改为 "cuda"。 SenseVoice 论文见 arXiv:2407.04051, 模型见 Hugging Face checkpoint, 边缘部署可用 GGUF checkpoint

LLM 语音识别:Fun-ASR-Nano

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 服务: 本地 SenseVoice CPU 配方 · Nano GPU 服务与固定版本 vLLM 环境

接入 AI Agent MCP 服务 支持 Claude/Cursor · OpenAI API 支持 LangChain/Dify/AutoGen

接入语音 Agent OpenClaw 实时转写插件 支持私有部署的 Talk 与 Voice Call 转写

为什么选 FunASR?

FunASR 是工具箱,需要分别选择任务、checkpoint 和运行时。 一个模型或适配器支持的能力,不代表所有服务后端都支持。

任务 Checkpoint 或 pipeline 运行时入口 主要边界
文件转写及情感/事件标签 SenseVoiceSmall Python AutoModel,CPU 或 GPU 五语种 checkpoint;标签不代表说话人身份。
LLM 文件转写 Fun-ASR-Nano AutoModel;文档指定的 GPU 拆分引擎 AutoModelVLLM 基础 Nano 覆盖中/英/日及中文方言/口音;时间戳取决于 checkpoint 和路径。
更多语种的文件转写 Fun-ASR-MLT-Nano Python AutoModel 独立的 31 语种 checkpoint,不能把其覆盖范围归给基础 Nano。
分块实时转写 Paraformer-zh-streaming 流式 SDK 或 runtime WebSocket 服务 使用流式 checkpoint 和会话独立 cache,不能替换为离线 checkpoint。
带说话人的文件转写 SenseVoiceSmall + FSMN-VAD + CAM++ AutoModel 的 VAD 与嵌入聚类 编号仅在当前录音内有效,不是已注册人物身份识别。
联合文本、时间戳与说话人 第三方 OpenMOSS 的 MOSS-Transcribe-Diarize MOSS 指南中的 FunASR adapter 或上游后端 离线、录音内匿名标签;统一路径不外接 VAD/说话人 pipeline。
原生 CPU/端侧转写 Fun-ASR-Nano 或 SenseVoiceSmall GGUF llama.cpp runtime 需要匹配的转换权重,GGUF 不能作为 Python AutoModel checkpoint 加载。

Checkpoint、接口与协议边界见 Model Zoo部署矩阵。请用目标音频与硬件评测后再选运行时。

第一次试用 FunASR?可以先跑 Colab 快速体验,再配置本地环境。还不确定先用哪个模型?先看 模型选择指南。计划从 Whisper 或云端 ASR 切换?请按 迁移指南评测示例 用代表性音频评测、映射功能并安全上线。


性能评测

历史评测报告拆分引擎测量 保留原始结果。 两者是独立记录,不能合并成通用速度排名或生产容量承诺。

请按 RTFx 与可复现评测说明 对齐 checkpoint/revision、音频集、硬件、批量大小、预热、计时范围与 CER/WER。 离线吞吐量不等于流式延迟;可使用 迁移评测示例 以相同口径测量自己的录音。


最新动态

  • MOSS-Transcribe-Diarize 已接入 FunASR 服务、Docker、Kubernetes、vLLM/SGLang 工作流和 FunClip,一次完成长音频转写、时间戳与匿名说话人标注。部署 MOSS ->
  • FunASR 1.4.15 新增经过测试的 NumPy 2 兼容支持,修复流式 KWS/VAD 边界处理和 checkpoint 排序。升级命令:python -m pip install -U "funasr==1.4.15"发布说明与验证范围 ->
  • 原生 Transformers 正式版 5.17.0 已支持 Fun-ASR-Nano。官方 -hf 权重、CPU 示例与 Notebook安装与推理 ->

完整改动记录和可下载资产请查看 GitHub Releases


安装

pip install funasr
从源码安装
git clone https://github.com/modelscope/FunASR.git && cd FunASR
pip install -e ./

环境要求:Python ≥ 3.8、PyTorch ≥ 1.13、torchaudio


模型列表

列表包含第三方模型。MOSS-Transcribe-Diarize 由 OpenMOSS 发布,FunASR 提供适配器,并不拥有其权重。统一路径为离线处理,匿名说话人标签仅在当前录音 内有效,不是实时流式或已知人物身份识别。模型协议与工具箱 MIT 协议分别适用。

模型 任务 语言 参数量 链接
Fun-ASR-Nano 识别 中/英/日 + 中文方言 800M HF / Transformers · HF / FunASR GGUF
Fun-ASR-MLT-Nano 识别 31 种语言 800M 🤗
SenseVoiceSmall 识别 + 情感 + 事件 中/英/日/韩/粤 234M 🤗 GGUF 论文
MOSS-Transcribe-Diarize 第三方 OpenMOSS:离线识别 + 时间戳 + 匿名说话人 以官方模型卡为准 以官方模型卡为准 🤗 指南
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++ 说话人嵌入(speaker embeddings,pipeline 组件) 7.2M 🤗
emotion2vec+large 情感识别 300M 🤗

使用示例

Python 教程 · SDK 参数与输出 · 训练与微调 · 模型注册

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")

# 使用 Silero VAD(先安装:python -m pip install "funasr[silero]"
model = AutoModel(
    model="paraformer-zh", vad_model="silero-vad", device="cpu",
    vad_kwargs={"silero_threshold": 0.5, "silero_min_silence_duration_ms": 100},
)
result = model.generate(input="audio.wav")

# 中/英/日 + 中文方言
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


部署

在新目录中使用 POSIX shell 和 Python 3.11,启动本地 SenseVoice CPU 服务。 下面将 PyPI 发布包安装到独立环境,不是安装当前源码 checkout。服务不内置鉴权, 请保留 loopback 监听;向其他客户端开放前先阅读安全指南

python3.11 -m venv .venv-funasr-http
. .venv-funasr-http/bin/activate
python -m pip install torch torchaudio
python -m pip install funasr fastapi uvicorn python-multipart
python -m pip check
funasr-server --host 127.0.0.1 --port 8000 --model sensevoice --device cpu

等待模型下载和服务启动。在第二个终端进入同一目录,使用 curl 7.76+ 下载并转写 公开的中文样例音频。请求使用已预加载的模型,不保证固定文本或说话人标签。

curl --fail --location https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav -o sample.wav && \
curl --fail-with-body http://127.0.0.1:8000/v1/audio/transcriptions \
  -F file=@sample.wav \
  -F model=sensevoice \
  -F response_format=verbose_json

需要离线联合 ASR 与匿名说话人标签(moss-transcribe-diarize)时,请按 MOSS 服务、Docker、Kubernetes、vLLM、SGLang、LocalAI 与 FunClip 部署指南 → 准备独立环境。这是替代服务,不是在上述 CPU 环境中再执行一条命令;复用 8000 端口前先停止 CPU 服务。Nano GPU 服务请遵循固定版本的分离引擎指南, 并检查实际后端加载日志,不能仅凭模型选择就认定已启用 vLLM。

# Docker 流式服务
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12

CPU / 边缘部署 - llama.cpp / GGUF(无需 GPU、无需 Python

在 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 cuda

Linux 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 vulkan

Windows Vulkan ZIP 使用显卡驱动提供的系统 Vulkan loader,不需要另外安装 Vulkan SDK;当前与 Linux Vulkan 包一样,仅加速 SenseVoiceSmall。

带 tag 的发布提供两个 Windows CUDA 包:标准 windows-x64-cuda ZIP 面向 CUDA architecture 86,windows-x64-cuda-blackwell 面向 RTX 50 / Blackwell 的 architecture 120sm_120)。两个 ZIP 都包含所需的 cuBLAS DLL,并使用静态 MSVC runtime;用户只需 安装兼容的 NVIDIA 驱动,无需另装 CUDA Toolkit。CI 验证架构与打包边界,但不代表已经在 Blackwell 实机上完成推理验证。

预编译二进制: Releases · v0.2.6 · Linux Vulkan tarball · Windows Vulkan zip · Windows CUDA zip · Windows Blackwell CUDA zip · 下载与快速开始: funasr.com/deploy/llama-cpp · GGUF 模型: Hugging Face · 文档与评测: runtime/llama.cpp/

OpenAI API 示例 → · Gradio Demo → · 客户端配方 → · JavaScript/TypeScript 配方 → · Kubernetes 模板 → · 工作流配方 → · Postman 集合 → · OpenAPI 规范 → · 安全指南 → · 部署选型 → · 部署文档 → · Agent 集成 →


社区

反馈问题前先查阅故障排查,并附上确切模型、运行时、环境与最小复现。

📖 文档 🐛 问题反馈
💬 讨论 🤗 HuggingFace
🤝 贡献指南 📈 20k 增长计划
🗺️ 仓库职责与路线图 🌐 funasr.com
🧩 社区集成 💡 使用案例

Star 趋势

Star History Chart

许可证

  • 本仓库的 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}
}