ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

FunASR 模型选择指南:从 SenseVoice-Small 到 Fun-ASR-Nano 的完整选型路线

FunASR 模型选择指南:从 SenseVoice-Small 到 Fun-ASR-Nano 的完整选型路线 FunASR 模型选择指南从 SenseVoice-Small 到 Fun-ASR-Nano 的完整选型路线【免费下载链接】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 仓库的模型选择指南日文版为骨架结合仓库源码与配套文档系统讲解在 FunASR 生态中如何按任务场景选择模型从首次体验的 SenseVoice-Small、中文生产级 Paraformer-Large到中英日多语言与方言评估的 Fun-ASR-Nano再到 OpenAI 兼容 API 的 alias 映射与 vLLM 三条加速路线。读完本文你将掌握一套可复制的选型判断流程、可立即运行的 Python/HTTP 调用示例以及部署前必须完成的基准测试清单。什么时候该读这份指南模型选择不是靠一张 demo 音频拍板而是先明确你要的是哪种输出再决定走哪条模型与部署路线。docs/model_selection_ja.md明确给出了三类典型使用时机第一次接触 FunASR不知道该从哪个模型入手从 Whisper 或云 ASR 迁移需要在本地方案上建立 baseline决定 OpenAI 兼容 API 对外暴露哪个模型 alias让应用侧无需感知模型 repository ID。无论哪种场景都建议先跑通最小的可运行示例再进入判断表做横向比较。Transformers 原生路径用 Nano 做中英日快速评估对于中文、英语、日语的文字转写官方推荐优先走Transformers 原生路径使用 Transformers 5.17.0 指南 中描述的方式配合官方FunAudioLLM/Fun-ASR-Nano-2512-hfcheckpoint。这条路径有三个关键前提版本门槛transformers5.17.0是首个原生内置 Fun-ASR-Nano 支持的发布版5.16.1及更早版本不包含该模型原生类位于transformers.models.fun_asr_nano。无需 FunASR toolkit不需要源码 checkout也不需要 checkpoint 自带的 Python 代码只用AutoProcessor与AutoModelForSpeechSeq2Seq即可。输出是纯文本原生导出不附加时间戳、说话人标签也不自带 HTTP 服务端它与 toolkit 路径、service 路径是相互独立的三套东西不要混用。docs/transformers_native.md给出了可复现的 CPU 安装示例Linux x86-64 Python 3.12独立虚拟环境torch/torchaudio必须配对因为原生特征提取器依赖torchaudio.compliance.kaldi.fbankpython3.12 -m venv .venv-funasr-native . .venv-funasr-native/bin/activate python -m pip install --index-url https://download.pytorch.org/whl/cpu \ torch2.10.0cpu torchaudio2.10.0cpu python -m pip install transformers5.17.0 numpy1.26.4 \ librosa0.11.0 soundfile0.13.1 \ huggingface-hub1.30.0 tokenizers0.23.2 python -m pip check推理代码固定了官方 revisiond93b302ee7fd505e1b3576120fc142fc6f7820e1首次使用会下载约 1.66 GB 权重CPU float32 即可运行import torch from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor torch.set_num_threads(4) model_id FunAudioLLM/Fun-ASR-Nano-2512-hf revision d93b302ee7fd505e1b3576120fc142fc6f7820e1 processor AutoProcessor.from_pretrained( model_id, revisionrevision, trust_remote_codeFalse, tokenFalse ) model AutoModelForSpeechSeq2Seq.from_pretrained( model_id, revisionrevision, trust_remote_codeFalse, tokenFalse, dtypetorch.float32, ).to(cpu).eval() inputs processor.apply_transcription_request( audiomeeting.wav, languageen, processor_kwargs{ return_tensors: pt, audio_kwargs: {sampling_rate: 16000}, text_kwargs: {padding: True}, }, ) with torch.inference_mode(): generated model.generate(**inputs, max_new_tokens128, do_sampleFalse) new_tokens generated[:, inputs.input_ids.shape[1]:] print(processor.batch_decode(new_tokens, skip_special_tokensTrue)[0])注意模型返回的是提示词 生成 token的拼接结果解码前必须去掉输入张量宽度language取值限定为zh/en/ja。批处理时传入音频列表、匹配的语言列表并保持text_kwargs{padding: True}。如果你需要匿名说话人标签与分段时间戳则这条原生路径不满足需求应转向 MOSS 部署指南。快速默认路径从 SenseVoice-Small 开始如果目标是快速得到一个可用的多语言转写基线docs/model_selection_ja.md的建议非常直接从 SenseVoice-Small 开始。它同时具备 ASR、情感标签、音频事件标签三项能力且 CPU/GPU 都能跑是评估成本最低的标准入口from funasr import AutoModel model AutoModel( modeliic/SenseVoiceSmall, vad_modelfsmn-vad, spk_modelcam, devicecuda, # 手头 smoke test 用 cpu 也可以 ) result model.generate(inputmeeting.wav)这段代码在会议录音场景下实际是三条子管线的组合语义要拆开理解fsmn-vad负责检出语音区段语音活动检测为后续识别划定边界cam产出说话人嵌入speaker embedding由管线在单条录音内部做聚类SenseVoice本身负责 ASR 转写与富标签情感/事件说话人分群并非 SenseVoice 同一遍识别输出。docs/speaker_emotion.md对此有更严格的界定说话人嵌入、匿名聚类标签、已注册人物身份、情感标签是四种不同的输出彼此不可替代。这里的spk标签如spk0只是录音内的匿名编号——它不识别已注册人物也不是跨录音稳定的身份 ID。若要在一遍推理中同时拿到转写、时间戳与匿名说话人标签应改用第三方 MOSS-Transcribe-Diarize 指南它不需要外部 VAD 或说话人模型。另外要区分两个容易混淆的 checkpointFun-ASR-Nano-2512中英日 中国方言/地域口音的评估候选Fun-ASR-MLT-Nano独立的 31 语言 checkpoint。两者是不同模型选型前务必在对应模型卡上确认语言覆盖范围不要把 Nano 的覆盖范围套用到 MLT 上。若你的线上流量以普通话为主、且需要字级时间戳或热词则切到 Paraformer 系列更合适。判断表按想做的事快速定位docs/model_selection_ja.md的核心是一张决策表按目标 → 首选 → 理由 → 下一篇文档组织完整继承如下想做的事首先尝试理由下一篇文档快速的多语言私有转写SenseVoice-SmallASR、情感标签、音频事件标签、CPU/GPU 易用性齐备的标准路线README 快速开始中文为主的生产 ASRParaformer-Large结合 VAD 与标点恢复的成熟中文 ASR 路线TutorialOpenAI API 示例中的英语路线paraformer-enalias用 OpenAI-style client 验证兼容性的轻量英语路线OpenAI API 示例LLM-based ASR、中英日 中国方言/口音评估Fun-ASR-Nano先在 Python 路径评估再按 checkpoint 与接口选择 vLLM 路线vLLM 路线离线长音频 ASR 匿名说话人标签MOSS-Transcribe-Diarize一次离线请求返回转写、时间戳、录音内匿名说话人标签不做已知人物识别无需外部 VAD/说话人模型MOSS 部署指南实时字幕 / 呼叫中心流式Runtime WebSocket 服务面向长连接、部分结果、端点检测的运行时Runtime 服务文档从 Whisper / 云 ASR 迁移先用 SenseVoice-Small 建 baseline再按需对比先在强标准路线上评估再按场景精细化更稳妥迁移指南表内每一行都对应仓库中的实际可运行路径SenseVoice 的AutoModel组合、Paraformer 的训练与推理教程docs/tutorial/README.md、OpenAI 兼容服务examples/openai_api/、MOSS 的sentence_info契约docs/moss_transcribe_diarize.md、流式运行时runtime/readme.md以及迁移评估方法docs/migration_from_whisper.md。如果这些选项还不够可在 Model Zoo 中按任务继续检索。OpenAI 兼容 API五组模型 alias 及其边界examples/openai_api下的示例服务对外暴露短 alias让应用团队不必关心模型 repository ID。docs/model_selection_ja.md定义了五组 alias且可以在 server.py 的MODEL_CONFIGS中一一对应到真实加载配置sensevoiceiic/SenseVoiceSmallCPU/GPU 多语言 HTTP 转写返回文本会剥离富标签。源码中额外配置了vad_modelfsmn-vad与vad_kwargs{max_single_segment_time: 30000}单段最长 30 秒。paraformerparaformer-zh VAD 标点模型ct-punc面向中文。paraformer-enparaformer-en VAD供 OpenAI-style 客户端做英语转写。fun-asr-nanoFunAudioLLM/Fun-ASR-Nano-2512hubhf、trust_remote_codeTruefsmn-vad用于中英日与中国方言/口音覆盖评估评估 vLLM 加速时需另行选择兼容 runtime。moss-transcribe-diarize第三方OpenMOSS-Team/MOSS-Transcribe-Diarize固定 revisione8681d68e7042738ffca8ac8212bc8fcb1131ab8离线转写 录音内匿名说话人标签。需要按其专用指南准备独立依赖与已审查的 remote code结构化 segment 请求verbose_json不需要外部 VAD/说话人模型也不识别已知人物。这三条边界必须牢记alias 只属于示例 serverserver.py通过AutoModel(**cfg)加载模型server.py它不配置 native vLLM也不会自动选择AutoModelVLLM。funasr-server是另一套实现包内附带的funasr-server拥有独立的 loader/backend 选择见funasr/bin/_server_app.py相关实现与 OpenAI API 示例 的 API Contract 说明跨服务直接套用 alias 或性能结论是不成立的。HTTP 会丢失富标签示例服务对顶层text与verbose_json中每个 segment 的text都执行了clean_text()——即用正则re.sub(r\|[^|]*\|, , text)剥离形如|zh|、|HAPPY|的标签server.py因此无论何种响应格式情感/事件标签都不会被恢复。若需要原始标签请改用 Python SDK并在展示后处理之前保存返回的text可参考保留原始标签的配方。接入客户端之前先验证服务存活与模型可用curl http://localhost:8000/v1/models python examples/openai_api/smoke_test.py --base-url http://localhost:8000 --model sensevoice其中smoke_test.pyexamples/openai_api/smoke_test.py会依次请求/health、/v1/models再以 multipart 方式向/v1/audio/transcriptions提交音频并校验响应音频文件缺失时会自动下载官方示例音频。SDK、JavaScript、工作流、Postman、OpenAPI、Docker、Kubernetes 的完整接入路径统一从 OpenAI API 示例日文版 开始。vLLMcheckpoint 与接口的三条路线当 Fun-ASR-Nano 的 Python 评估通过、需要更高吞吐时docs/model_selection_ja.md给出三条互不通用的 vLLM 路线路线checkpoint 与接口下一篇文档FunASR split-engine用AutoModelVLLM加载基础版FunAudioLLM/Fun-ASR-Nano-2512音频侧由 FunASR 处理、decoder 由 vLLM 处理Split-engine 指南英文官方 native vLLM用 vLLM 原生实现加载转换后的FunAudioLLM/Fun-ASR-Nano-2512-vllm走/v1/audio/transcriptions不是AutoModelVLLM加载官方功能验证英文历史 community native vLLMallendou/Fun-ASR-Nano-2512-vllm2026-08-13 验证时间测量仅对当时 checkpoint 与环境有效历史 community 记录围绕这三条路线docs/vllm_guide.md补充了 split-engine 的关键实现细节权重分离首次加载时 FunASR 会调用prepare_vllm_model_dir()从根目录model.pt提取llm.*张量并写出Qwen3-0.6B-vllm/model.safetensorsQwen3-0.6B/子目录只有 LLM 配置与 tokenizer不能直接拿去vllm serve。EmbedsPrompt音频经前端fbank→ 音频编码器SenseVoice→ adaptor 后是连续向量而非 token因此要与文本嵌入按序列维拼接以enable_prompt_embedsTrue整体提交 vLLM。使用约束EmbedsPrompt 模式下repetition_penalty应保持中性值1.0否则可能触发 CUDA device-side assertAutoModelVLLM.generate()只做 ASR 解码不负责 VAD 分段。split-engine 的离线批处理调用示例vllm_guide.mdfrom funasr.auto.auto_model_vllm import AutoModelVLLM model AutoModelVLLM( modelFunAudioLLM/Fun-ASR-Nano-2512, hubms, # 或 hf tensor_parallel_size2, # 多卡并行 gpu_memory_utilization0.8, ) results model.generate( [audio1.wav, audio2.wav], language中文, hotwords[张三, 北京], ) for r in results: print(f[{r[key]}] {r[text]})同时必须清楚官方验证记录的边界vllm_official_native_validation.md官方记录固定了模型 revisiona4362c943d48951f98ca2a62181cc028970270c5与既有环境vLLM 0.27.1cu129、单卡 H100 80GB、FP32/eager是功能验证而非全新安装配方、非持续负载 benchmark、也非/v1/realtime流式验证。不要把历史 community 的耗时数据套用到官方模型上。MOSS 则按自己的部署指南处理——上述 Nano checkpoint 与验证结果不构成 MOSS 运行时兼容性的证明。先基准测试再投入生产不要凭一条干净的 demo 音频决定生产模型。docs/model_selection_ja.md的收尾建议是先在一个小型代表集上验证再进入部署决策。代表集建议覆盖 20-50 个文件包含短片段、长会议、静音、噪声、说话人重叠、领域术语、目标语言每次运行记录模型名、模型 revision、FunASR 版本、设备、CPU/GPU 型号、CUDA/PyTorch 版本、runtime 路径、batch size、下载/预热时间是否计入质量评估使用你日常的 WER/CER 或人工审查流程而不是只看转写可读性性能对比latency、throughput、memory、failure、上传大小限制要一起看。docs/migration_from_whisper.md进一步细化了对比维度音频时长/语言/领域/采样率/声道/说话人数、模型与框架版本、硬件与批大小、WER/CER 明细人名、数字、标点、时间戳、领域术语、时延/吞吐/内存/每小时音频成本/失败率以及认证、上传限制、TLS、日志、监控、重试与留存策略等运维项。迁移场景还可直接复用仓库内的 migration 基准示例 生成可复现的results.jsonl与summary.md。若在部署中被卡住带着以下信息开一个 Deployment Help issue模型、设备、命令、日志、音频时长、runtime 路径。注意不要在公开 issue 中附带私有录音或凭据。一句话总结选型不是哪个模型最好而是先确定需要的输出契约纯文本 / 时间戳 / 匿名说话人 / 富标签再匹配模型与部署路径快速评估走 SenseVoice-Small中英日方言评估走 Fun-ASR-Nano中文生产走 Paraformer离线长音频匿名说话人走 MOSS实时场景走 WebSocket runtime吞吐优化再引入 vLLM 三条路线之一——最后用一份代表集基准测试来拍板。【免费下载链接】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),仅供参考
返回列表