
FunASR 实战指南从一行转写代码到自建语音识别 API【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR如果你要把语音识别放进自己的系统通常会撞上三堵墙Whisper 在 CPU 上慢、说话人分离要再拼一个第三方库、云端 API 则意味着音频外传和按分钟计费。FunASR 是阿里巴巴开源的语音识别工具包把语音识别ASR、语音活动检测VAD负责找出音频里哪些位置有人在说话、标点恢复、说话人分离、情绪与声音事件标注装进同一个包里一次AutoModel调用即可拿到谁、在什么时候、说了什么的结构化结果还能一键起成 OpenAI 兼容的 API 服务。这篇文章只讲三件事先跑通第一个结果、看懂内部怎么拼装、最后怎么选模型和落地部署。5 分钟出第一个结果几行代码转写一段音频安装只有一条命令CPU 环境直接用默认 wheelGPU 环境先装好对应 CUDA 版本的 PyTorchpip install funasr默认推荐SenseVoiceSmall一个 234M 参数的非自回归模型支持中、英、日、韩、粤语五种语言顺带输出情绪和声音事件标签CPU 上也能跑到约 17 倍实时速度。配合 VAD 和 CAM说话人嵌入模型两条组件下面 7 行代码就能拿到带说话人标注的结果from funasr import AutoModel model AutoModel(modeliic/SenseVoiceSmall, vad_modelfsmn-vad, spk_modelcam, devicecpu) result model.generate(inputaudio.wav) for seg in result[0][sentence_info]: print(seg[spk], f{seg[start]/1000:.1f}s, seg[sentence])输出类似0 0.6s 欢迎大家来体验达摩院推出的语音识别模型——说话人编号、起始时间、句子一次调用全部到位。如果你追求的是中文极限精度并且有 GPU把model换成旗舰的 Fun-ASR-Nano800M 参数、基于 LLM 的识别模型即可。内部机制一条可以逐个替换组件的流水线FunASR 的核心设计是组件化拼装。AutoModel只是装配点你传入哪些模型它就按固定顺序串起哪些环节组件代表模型职责ASR 主模型Paraformer / SenseVoice / Fun-ASR-Nano声学特征转文本VADFSMN-VAD仅 0.4M 参数切出语音片段跳过静音标点ct-puncCT-Transformer给裸文本补回标点说话人CAM7.2M 参数为片段打说话人标签情绪/事件emotion2vec、SenseVoice 内置标签附加信息输出整条链路的分工可以从这张架构图看清左侧是模型库中间是负责训练与推理的 funasr 库模型可以经 Export 导出到 LibTorch / ONNX / TensorRT再由 Runtime 或 gRPC、WebSocket、Triton 等 Service 层对外提供服务。而在离线推理一侧一条长音频会依次经过五个环节FSMN-VAD 端点检测 → Paraformer 声学模型 → 结合 N-gram 语言模型与热词表Fst-hotword的 WFST 解码 → CT-Transformer 标点预测 → ITN逆文本正则化把一二零一还原为1201这类规范写法这种设计的实际意义是每个环节都能独立替换。想加标点就传punc_model想区分说话人就加spk_model想换更快的 VAD 可以切到 Silero-VAD互不牵动。两个值得深挖的亮点上下文注入与谁说了什么热词与上下文注入。垂直领域的专有名词是识别精度的常见短板。Fun-ASR-Nano 的 V2 架构在标准编码器之上加了一条上下文通路Audio Context 利用音频自身的前后上下文CTC Predicting Context 用 CTC 解码逐帧独立预测的解码方式的中间结果辅助主解码器User Hotword 直接注入用户指定热词RAG-user hotword 则从候选词库中检索相关热词动态喂给模型。用法上就是给generate多传一个hotword关键词 20参数。说话人归属转写。多人对话的转写有两种做法区别见下图多说话人 ASR 把整段音频切成互不重叠的片段每个片段只有一段文本说话人归属 ASRSpeaker-Attributed ASR则允许一句话跨人归属逐句标注是哪个说话人说的。在 FunASR 里这条能力不用自己拼VAD 切段 → CAM 提取声纹 → 聚类打标最后sentence_info里每句自带spk字段。此外若只想对整段长音频一次性拿到转写、时间戳和匿名说话人标签可以直接用 MOSS-Transcribe-Diarize 服务它把这三件事合并成一个离线请求不需要再外接 VAD 和说话人模型。模型怎么选一张决策表官方模型库覆盖了几类典型需求选型前先对号入座需求场景建议模型说明CPU 部署 / 多语言 情绪事件SenseVoiceSmall234M5 种语言CPU 约 17 倍实时中文生产转写、要时间戳和热词Paraformer-zh220M成熟稳定流式版 Paraformer-zh-streaming 支持 600ms 分块实时出字中英文日语 方言、极限精度Fun-ASR-Nano800MLLM 架构需 GPU配 vLLM 批量推理可达 340 倍实时31 种语言Fun-ASR-MLT-Nano与 Nano 是不同 checkpoint语言覆盖按 checkpoint 区分长音频 时间戳 匿名说话人MOSS-Transcribe-Diarize一次离线请求返回全部结果官方在同一批 184 段长音频192 分钟上的中文 CER 对比SenseVoiceSmall 7.81%、Fun-ASR-Nano 8.20%vLLM 加速、Whisper-large-v3 为 20.02%速度上 SenseVoiceSmall 的 CPU 17 倍实时也超过了 Whisper-large-v3 在 GPU 上的 13 倍实时。更细的对比与迁移建议见 模型选型指南。三种落地形态命令行、API 服务与边缘二进制CLI适合脚本和 AI Agent 调用funasr audio.wav --spk --timestamps -f json直接输出带说话人和时间戳的 JSON--output-format srt --output-dir ./subs则批量生成字幕文件。OpenAI 兼容 API适合业务系统接入funasr-server --device cuda一条命令起服务POST /v1/audio/transcriptions即为标准接口现有 OpenAI SDK、LangChain 等客户端改个 base_url 就能用同仓库还提供 MCP Server可让 Claude、Cursor 这类 Agent 直接调用转写工具。参考 OpenAI API 示例。边缘/CPU 二进制适合无 GPU、无 Python 环境项目基于 llama.cpp 提供了 GGUF 量化模型的单文件可执行程序内置 FSMN-VADLinux/macOS/Windows 都有发行包中文 CER 比 whisper.cpp 低约 3 个百分点见 llama.cpp 运行时。部署形态的完整覆盖范围可以查 部署矩阵。写在最后如果你的目标是音频进、带说话人和标点的文本出从pip install funasr加前面那 7 行代码开始如果是给业务系统提供能力直接走funasr-server的 OpenAI 兼容接口客户端几乎零改造。组件化拼装、上下文热词注入、以及从 Python 库到边缘二进制的完整落地路径是 FunASR 区别于单个识别模型的关键建议先用一个小音频把整条链路跑通再按场景替换对应组件。【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考