ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

FunASR 安装、AutoModel 流水线、CLI 与部署实战指南:从 Python 推理到 OpenAI 兼容服务

FunASR 安装、AutoModel 流水线、CLI 与部署实战指南:从 Python 推理到 OpenAI 兼容服务 FunASR 安装、AutoModel 流水线、CLI 与部署实战指南从 Python 推理到 OpenAI 兼容服务【免费下载链接】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本文基于 FunASR 仓库根目录的主文档整理并深入展开覆盖安装、AutoModel推理流水线VAD/标点/说话人/流式、面向 Agent 的 CLI、本地 OpenAI 兼容服务与 llama.cpp 边缘部署等核心链路并结合仓库源码说明参数解析与调用路由的实现细节。读完本文你可以独立完成 FunASR 从环境搭建、模型选型、批量转写到 API 服务化的完整落地。一、定位FunASR 是一个任务-检查点-运行时可分离的工具箱FunASR 官方将其定位为面向离线、流式与边缘部署的工业级语音识别工具箱能力覆盖 ASR、VAD、标点恢复、说话人流水线、情感与音频事件模型以及 OpenAI 兼容服务。与一个模型包揽一切的路线不同FunASR 的核心设计是把任务、检查点checkpoint与运行时三者解耦选择哪个模型、跑在哪个运行时上是可以分开决策的。README 中明确给出了一张选型表并特别强调某个模型或适配器支持某能力并不意味着每个服务后端都支持该能力任务检查点或流水线运行时入口关键限制带情感/事件标签的文件转写SenseVoiceSmallPythonAutoModelCPU 或 GPU五语种检查点标签不代表说话人基于 LLM 的文件转写Fun-ASR-NanoAutoModelGPU 路径用拆分引擎AutoModelVLLM基础 Nano 覆盖中/英/日与中文方言口音时间戳支持取决于检查点与路径更广泛的多语种转写Fun-ASR-MLT-NanoPythonAutoModel独立的 31 语种检查点不要将其覆盖范围迁移到基础 Nano分块实时转写Paraformer-zh-streaming流式 SDK 或运行时 WebSocket 服务必须用流式检查点与会话级 cache不能用离线检查点带说话人的文件转写SenseVoiceSmall FSMN-VAD CAMAutoModel VAD 嵌入聚类录音内匿名说话人索引不是已注册说话人识别文本时间戳说话人联合输出MOSS-Transcribe-Diarize第三方 OpenMOSSFunASR 适配器或上游后端离线、录音内匿名标签统一路径不含外部 VAD/说话人流水线原生 CPU/边缘转写Fun-ASR-Nano 或 SenseVoiceSmall GGUFllama.cpp 运行时需要匹配转换后的权重GGUF 不是 PythonAutoModel检查点完整的检查点、接口与授权边界见 Model Zoo 与 部署矩阵。README 同时给出三条典型入门路径第一次接触先用 Colab 快速上手选型不确定先看 模型选择指南从 Whisper 或云 ASR 迁移则用 迁移指南 与 迁移基准示例。二、安装最基本的安装只有一条命令pip install funasr从源码安装git clone https://github.com/modelscope/FunASR.git cd FunASR pip install -e ./前提条件来自 setup.py 与 READMEPython ≥ 3.8先安装与 NVIDIA 驱动匹配的torch/torchaudio再装funasrCPU-only 环境可直接用 PyPI 默认 wheelsetup.py 的install依赖还包含librosa、soundfile、modelscope、huggingface_hub、transformers等即安装即具备模型下载与双 hub 能力可选依赖分组funasr[silero]安装 Silero VADfunasr[knf]提供无 torchaudio 环境如部分 NPU/aarch64 服务器下的 fbank 回退后端。安装后建议验证 GPU 是否可见python - PY import torch print(torch.cuda.is_available()) PY仅当打印True时才能安全使用devicecuda否则使用devicecpu或重装匹配的 CUDA wheel。三、快速上手AutoModel 推理流水线3.1 旗舰模型 Fun-ASR-NanoGPU 路径Fun-ASR-Nano 是 800M 参数的 LLM 类 ASR 检查点覆盖中、英、日与中文方言组及地区口音from funasr import AutoModel model AutoModel(modelFunAudioLLM/Fun-ASR-Nano-2512, devicecuda) result model.generate(inputhttps://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav) print(result[0][text])注意语言覆盖是检查点相关的31 语种能力由独立的 Fun-ASR-MLT-Nano 检查点提供两者应视为不同的模型选择不可互相迁移能力声明。另有独立的原生 Transformers 路径无需安装 FunASR 工具箱即可用 Hugging Face API 跑 Fun-ASR-Nano 转写详见 原生 Transformers 指南。3.2 CPU 优先的五语种示例SenseVoiceSmall VAD 说话人SenseVoiceSmall234M支持五语种 ASR 并附带情感与音频事件标签。下面的流水线把它与 FSMN-VAD、CAM 组合输出带说话人索引的 VAD 分段这些说话人索引是聚类得到的匿名索引不是 SenseVoiceSmall 检查点原生的说话人输出from funasr import AutoModel from funasr.utils.postprocess_utils import rich_transcription_postprocess model AutoModel(modeliic/SenseVoiceSmall, vad_modelfsmn-vad, spk_modelcam, devicecpu) result model.generate( inputhttps://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav, batch_size_s300, ) # AutoModel 流水线返回带说话人 id 与时间戳的 VAD 分段 for seg in result[0][sentence_info]: print(f[{seg[start]/1000:.1f}s] Speaker {seg[spk]}: {rich_transcription_postprocess(seg[sentence])})几点实现层面的说明对应 funasr/utils/postprocess_utils.py 与 funasr/auto/auto_model.pyCAM 提取spk_embedding向量AutoModel对其聚类并给 VAD 分段分配说话人索引索引仅在本次录音内有效不代表已知人物身份rich_transcription_postprocess会去掉 SenseVoice 输出中的|zh|、|NEUTRAL|等富标签得到纯文本batch_size_s300是动态批处理的总时长秒即按累计音频时长攒批而不是固定条数。3.3 生产级中文流水线ASR VAD 标点 说话人 热词README 给出的中文生产组合是paraformer-zhfsmn-vadct-punccamfrom funasr import AutoModel # Chinese production (VAD ASR punctuation speaker) model AutoModel(modelparaformer-zh, vad_modelfsmn-vad, punc_modelct-punc, spk_modelcam, devicecuda) result model.generate(inputhttps://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav, hotword关键词 20)AutoModel的构造参数依据 funasr/auto/auto_model.py#L420-L439 的文档字符串参数说明modelhub 别名、完整模型 ID 或本地路径devicecuda:0、cpu、mps、npu:0指定设备不可用时回退 CPUvad_model/vad_kwargs长音频切分 VAD如{max_single_segment_time: 60000}punc_model标点恢复模型Fun-ASR-Nano / SenseVoice / Qwen3-ASR 原生输出标点无需该参数spk_model/spk_mode说话人模型camspk_mode取punc_segment默认或vad_segmentspk_model依赖vad_modelhubmsModelScope默认或hfHugging FacencpuCPU 线程数默认 4disable_update/disable_pbar跳过启动版本检查 / 关闭进度条generate()的路由逻辑可以从源码确认funasr/auto/auto_model.py#L695-L754未配置vad_model时走单段inference()若配置了punc_model则对每段文本再跑一次标点模型并替换text字段配置了vad_model时走inference_with_vad()。输入支持文件路径、URL、numpy 数组float32、16kHz、字节串或列表批量。运行时常用**cfg参数包括cache流式模式会话状态首次传{}hotword/postprocess_hotwords模型级热词加权与解码后文本级热词纠错后者支持错误词目标词映射文件与模糊匹配阈值是两条独立机制language语言提示auto、zh、en等is_final流式末块标志return_spk_res、sentence_timestamp、use_itn等。3.4 可选的 Silero VADSilero VAD 是 FSMN-VAD 之外的可替换 VAD 后端需要先安装可选依赖# 先安装python -m pip install funasr[silero] model AutoModel( modelparaformer-zh, vad_modelsilero-vad, devicecuda, vad_kwargs{silero_threshold: 0.5, silero_min_silence_duration_ms: 100}, ) result model.generate(inputaudio.wav)vad_kwargs直接透传给 VAD 子模型构造阈值与最短静音时长可按业务噪声水平调整。3.5 流式实时转写分块喂入流式转写使用流式检查点paraformer-zh-streaming与每会话 cache逐块喂入音频并立即打印增量文本import soundfile as sf model AutoModel(modelparaformer-zh-streaming, devicecuda) audio, sr sf.read(speech.wav, dtypefloat32) # 16 kHz mono chunk_size [0, 10, 5] # 600 ms 分块 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(inputchunk, cachecache, is_final(i n_chunks - 1), chunk_sizechunk_size, encoder_chunk_look_back4, decoder_chunk_look_back1) if res[0][text]: print(res[0][text], end, flushTrue)参数要点chunk_size[0,10,5]表示当前块 10 帧 后视 5 帧encoder_chunk_look_back4/decoder_chunk_look_back1控制编码器/解码器跨块回看is_final在最后一块置真以触发收尾输出。3.6 情感识别model AutoModel(modelemotion2vec_plus_large, devicecuda) result model.generate(inputaudio.wav, granularityutterance)3.7 规模化vLLM 拆分引擎批量场景下可用拆分引擎加速 Fun-ASR-Nanofrom funasr.auto.auto_model_vllm import AutoModelVLLM model AutoModelVLLM(modelFunAudioLLM/Fun-ASR-Nano-2512, tensor_parallel_size1) results model.generate([audio1.wav, audio2.wav], languageauto)对应实现见 funasr/auto/auto_model_vllm.py固定版本与基准数据见 vLLM 指南。README 特别提醒选择模型本身并不能证明 vLLM 已被加载应检查实际后端日志。四、CLI对 Agent 友好的命令行入口funasr命令由 funasr/cli.py 实现在 setup.py#L187-L201 中注册为console_scripts入口点。典型用法# Transcribe audio (simplest) funasr audio.wav # JSON output (for AI agents) funasr audio.wav --output-format json # SRT subtitles funasr audio.wav --output-format srt --output-dir ./subs # Speaker diarization timestamps funasr audio.wav --spk --timestamps -f json # Choose model and language funasr audio.wav --model paraformer --language zh # Batch transcribe funasr *.wav --output-format srt --output-dir ./output从 funasr/cli.py#L584-L601 可确认完整参数面参数取值 / 默认说明--model, -msensevoice默认、paraformer、paraformer-en、fun-asr-nano预设模型配置--hub, -Hms默认/hf模型下载源--language, -lzh, en, ja, ko, yue, auto语言提示--devicecuda:0、cpu默认自动推理设备--output-format, -ftext默认、json、srt、tsv输出格式--output-dir, -o目录将结果写入文件--timestamps开关输出词级时间戳--spk开关启用说话人分离--hotwords逗号分隔热词--verbose, -v开关加载/计时信息输出到 stderrCLI 的四个预设别名直接映射到底层 AutoModel 组合funasr/cli.py#L11-L16别名展开为sensevoiceiic/SenseVoiceSmallfsmn-vadmax_single_segment_time30000paraformerparaformer-zhfsmn-vadct-puncparaformer-enparaformer-enfsmn-vadfun-asr-nanoFunAudioLLM/Fun-ASR-Nano-2512fsmn-vad即funasr audio.wav --model paraformer等价于 3.3 节的生产级流水线SRT 输出内部由 CLI 的分段合并逻辑英文词间补空格、连续标点续行等生成字幕文件。五、部署本地 OpenAI 兼容服务、Docker 与 llama.cpp5.1 本地 SenseVoice CPU 服务OpenAI 兼容在一个干净目录POSIX shellPython 3.11中启动服务。注意该流程安装的是 PyPI 发布版到独立环境不是本仓库源码环境未鉴权服务应保持在 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 cpufunasr-server同样注册在 setup.py 的入口点中指向 funasr/bin/server.py。等待模型下载与服务启动后另开一个终端同目录curl 7.76curl --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 filesample.wav \ -F modelsensevoice \ -F response_formatverbose_json该请求走预加载模型输出内容取决于音频本身README 不承诺固定转写文本。OpenAI 兼容服务的完整资料Dockerfile、Kubernetes 模板、Gradio、Postman、OpenAPI、工作流示例集中在 examples/openai_api/。相关 AI 集成入口AgentClaude/Cursor 等MCP ServerLangChain / Dify / AutoGenOpenAI API语音 AgentTalk / Voice CallOpenClaw 实时插件。离线联合 ASR 匿名说话人moss-transcribe-diarize是另一套独立环境服务、Docker、Kubernetes、vLLM/SGLang、LocalAI 与 FunClip 的完整路径见 MOSS 指南它是替代服务而非 CPU 环境里的另一条命令复用 8000 端口前需先停掉 CPU 服务。5.2 Docker 流式服务docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12各部署形态ONNX Runtime、TensorRT、gRPC、WebSocket 等的文档与入口见 runtime 总览 与 部署矩阵。5.3 CPU / 边缘llama.cpp / GGUF 单二进制无 GPU、无 Python该路线可以把SenseVoice / Paraformer / Fun-ASR-Nano编译为单个自包含二进制在 CPU 与边缘设备上直接运行——README 将其类比为whisper.cpp 之于 Whisper并声明在中文上比 whisper.cpp 低约 3 倍 CER此为 README 的原始声明具体数值建议以 runtime/llama.cpp/ 内的基准与自己的音频复测为准。运行时内置 FSMN-VAD不依赖 Python# Linux / macOS在解压后的 release 目录内运行 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需安装hfCLI从解压包根目录运行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 # AMD / Intel / NVIDIA Vulkan 驱动环境下可用 windows-x64-vulkan 包 .\llama-funasr-sensevoice.exe -m .\gguf\sensevoice-small-q8.gguf --vad .\gguf\fsmn-vad.gguf -a audio.wav --backend vulkan # RTX 30 系 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 系统可用 Vulkan 驱动/ICD使用funasr-llamacpp-linux-x64-vulkan.tar.gz包并加--backend vulkan。两个 Vulkan 包当前只加速 SenseVoiceSmallWindows CUDA 包分标准版架构 86与windows-x64-cuda-blackwell架构 120 /sm_120面向 RTX 50 / Blackwell两者均捆绑所需 cuBLAS DLL 并使用静态 MSVC 运行时只需匹配的 NVIDIA 驱动。README 同时声明CI 只验证架构与包边界不证明在物理 Blackwell 硬件上的推理结果。模型转换脚本与基准详见 runtime/llama.cpp/含 convert-funasr-to-gguf.py 与 BENCHMARKS.md。六、Model Zoo仓库内模型列表包含第三方模型如 OpenMOSS 发布的 MOSS-Transcribe-DiarizeFunASR 仅提供适配器而非权重归属。模型授权与工具箱的 MIT License 相互独立各权重以对应模型卡声明为准模型任务语言参数量说明Fun-ASR-NanoASRzh/en/ja 中文方言口音800M含 GGUF 边缘权重Fun-ASR-MLT-NanoASR31 语种800M独立多语种检查点SenseVoiceSmallASR 情感 事件zh/en/ja/ko/yue234M论文见 INTRODUCTION 引用的 SenseVoice 工作含 GGUFMOSS-Transcribe-Diarize离线 ASR 时间戳 匿名说话人见官方卡见官方卡第三方 OpenMOSS部署指南Paraformer-zhASR 时间戳zh/en220M离线Paraformer-zh-streaming流式 ASRzh/en220M流式Qwen3-ASRASR52 语种多语种1.7B用法示例GLM-ASR-NanoASR17 语种多语种1.5B用法示例Whisper-large-v3 / -turboASR 翻译多语种1550M / 809M用法示例ct-punc标点恢复zh/en290M标点子模型fsmn-vadVADzh/en0.4MVAD 子模型cam说话人嵌入流水线组件—7.2M说话人子模型emotion2veclarge情感识别—300M情感子模型更完整的模型卡片见 model_zoo/readme.md 与 modelscope_models.md、huggingface_models.md。七、Benchmark 与可复现性README 对性能数据的定位非常克制历史基准报告与拆分引擎测量是各自独立的记录不是通用速度排名也不是生产能力承诺。跨场景比较时必须对齐检查点/revision、音频集、硬件、批处理、warmup、计时范围与 CER/WER 这些变量方法学细节见 RTFx 与可复现性说明。两个易错点被单独强调离线吞吐量不等于流式延迟用 迁移基准示例含 benchmark_funasr.py对自己的录音做同口径测量后再选运行时。八、版本动态、许可与引用近期版本要点来自 README Whats newMOSS-Transcribe-Diarize接入长音频 ASR、时间戳与匿名说话人标签进入 FunASR 服务、Docker、Kubernetes、vLLM/SGLang 工作流与 FunClip见 MOSS 部署指南FunASR 1.4.15提供经过测试的 NumPy 2 兼容修复流式 KWS/VAD 边界与检查点排序问题可python -m pip install -U funasr1.4.15原生 Transformers发布 5.17.0 起支持用官方-hf检查点在纯 Transformers 路径跑 Fun-ASR-Nano含 CPU 示例与 notebook见 transformers_native.md。许可本仓库 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} }遇到问题先查 troubleshooting反馈时附上确切的模型、运行时、环境与最小复现步骤。组件与输出边界sentence_info、spk_embedding、热词机制等字段的契约以 Python 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表