FunASR ModelScope 预训练模型库(Model Zoo)完全指南:模型目录、许可边界与 AutoModel 实战
【免费下载链接】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
本文基于 model_zoo/modelscope_models.md 的模型目录编写。该目录是 FunASR 在 ModelScope 平台发布的预训练模型清单,覆盖语音识别(Paraformer、UniASR、Conformer)、多说话人识别(MFCCA)、语音端点检测(FSMN-VAD)、标点恢复(CT-Transformer)、说话人验证/日志(Xvector、SOND)、时间戳预测(TP-Aligner)与逆文本正则化(ITN)等全链路能力。读完本文,你将掌握每个模型的适用边界(语言、参数量、离线/实时)、模型许可的核对方法,以及如何通过
AutoModel与hub="ms"一键加载这些 ModelScope 权重并组合成完整 ASR 流水线。
一、目录定位:ModelScope 是 FunASR 默认权重仓库
FunASR 工具包(采用 MIT 软件许可)将"模型"与"代码"解耦:模型选择、checkpoint 格式与运行时分别决策。ModelScope 是AutoModel的默认下载源(hub参数默认为"ms"),本目录model_zoo/modelscope_models.md即是该平台发布权重的索引清单;与之并列的 model_zoo/huggingface_models.md 则收录 Hugging Face 上的对应权重。两个清单互为补充,且都强调同一个原则:目录中的模型不等于被所有服务端或导出后端自动支持,选型时必须以具体 checkpoint 的模型卡为准。
正式使用前,建议按以下顺序建立认知闭环:
- 模型选型:先读 docs/model_selection.md,按业务诉求(多语言、普通话转写、流式、长音频、说话人分离)定位模型族;
- SDK 契约:再读 docs/python_api.md 与 docs/tutorial/README.md,掌握
AutoModel的构造参数、generate()返回结构与可选组件(VAD/标点/说话人)的配置方式; - 部署边界:最后对照 docs/deployment_matrix.md 选择 Python API、OpenAI 兼容服务、运行时 WebSocket、ONNX/C++ 等落地路径。
二、模型许可协议:目录 ≠ 统一授权
这是使用 Model Zoo 前必须厘清的边界,原文强调三点:
- FunASR 工具包本身采用 MIT 软件许可,但模型权重是单独的许可标的,使用或再分发前必须检查具体 checkpoint 的模型卡、许可文件及 revision;
- FunASR 模型许可协议仅适用于发布条款明确采用该协议的模型,不能想当然套用于目录中的全部条目;
- 第三方模型保留原作者归属与各自的模型许可,典型例子是 OpenMOSS 发布的 MOSS-Transcribe-Diarize(Apache-2.0),其集成指南见 docs/moss_transcribe_diarize.md。
从仓库实现看,这一边界同样反映在加载逻辑中:AutoModel通过 funasr/download/download_model_from_hub.py 下载模型时,会读取模型目录中的configuration.json或config.yaml完成配置合并,而trust_remote_code默认False——即默认不执行模型自带的远程代码,也不自动安装模型目录下requirements.txt中的依赖,需要用户显式开启并先审查文件内容。这与"模型许可需逐个核对"的哲学一致:仓库只负责加载,授权与代码审查责任在用户侧。
三、模型选型速查:先定任务,再定模型族
参考 docs/model_selection.md 的决策表,ModelScope 目录内的模型可按任务快速对齐:
| 业务需求 | 首选模型族 | 关键边界 |
|---|---|---|
| 多语言 + 情感/事件标签(可 CPU 跑) | SenseVoice-Small | 标签是模型输出,不代表说话人身份 |
| 普通话生产级转写 | Paraformer-Large | 离线与流式 checkpoint 推理契约不同 |
| 长音频 + 说话人分离(一次请求出结果) | MOSS-Transcribe-Diarize | 第三方 OpenMOSS 模型,无需外接 VAD |
| 实时字幕 / 客服流式 | Paraformer-online / UniASR 在线版 | 面向长连接流式会话 |
| 普通话转写 + 字级时间戳 / 热词 | Paraformer(含 SeACo/上下文热词版) | 热词为上下文偏置,非强制改写 |
| 英文字幕 / OpenAI API 兼容路由 | Paraformer-en | 与paraformer-zh别名目标不同 |
| 多说话人会议转写 | MFCCA | 输入 ≤20s、通道 ≤8 |
| 检测/后处理组件 | FSMN-VAD、CT-Transformer、Xvector、SOND、TP-Aligner、ITN | 各组件职责单一,不越界替代 |
下文各节按原目录顺序逐一展开每个模型族的完整清单与使用要点。
四、语音识别模型
4.1 Paraformer 家族:FunASR 的旗舰非自回归 ASR
Paraformer 是 FunASR 的核心非自回归(NAT)识别器,目录内按"规模 × 语言 × 能力扩展"组合出完整矩阵:
| 模型(ModelScope ID / 名称) | 语言 | 训练数据 | 词表 | 参数量 | 离线/实时 | 备注 |
|---|---|---|---|---|---|---|
Paraformer-large(iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch) | 中英 | 阿里巴巴语音数据 60000h | 8404 | 220M | 离线 | 输入 wav 时长 ≤ 20s |
Paraformer-large 长音频版(iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch) | 中英 | 60000h | 8404 | 220M | 离线 | 内置 VAD+标点,可处理任意长度输入 |
Paraformer-large-en 长音频版(damo/speech_paraformer-large-vad-punc_asr_nat-en-16k-common-vocab10020) | 英文 | 50000h | 10020 | 220M | 离线 | 任意长度英文输入 |
Paraformer-large-Spk(damo/speech_paraformer-large-vad-punc-spk_asr_nat-zh-cn) | 中英 | 60000h | 8404 | 220M | 离线 | 在长音频版基础上增加说话人识别 |
Paraformer-large 热词版(damo/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404) | 中英 | 60000h | 8404 | 220M | 离线 | 基于激励增强的热词定制,提升热词召回率与准确率;输入 ≤ 20s |
Paraformer(damo/speech_paraformer_asr_nat-zh-cn-16k-common-vocab8358-tensorflow1) | 中英 | 50000h | 8358 | 68M | 离线 | 输入 ≤ 20s |
Paraformer 实时版(damo/speech_paraformer_asr_nat-zh-cn-16k-common-vocab8404-online) | 中英 | 50000h | 8404 | 68M | 实时 | 支持流式输入 |
Paraformer-large 实时版(iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online) | 中英 | 60000h | 8404 | 220M | 实时 | 支持流式输入 |
Paraformer-tiny(damo/speech_paraformer-tiny-commandword_asr_nat-zh-cn-16k-vocab544-pytorch) | 中文 | 200h | 544 | 5.2M | 离线 | 轻量级,支持普通话命令词识别 |
Paraformer-aishell(damo/speech_paraformer_asr_nat-aishell1-pytorch) | 中文 | AISHELL 178h | 4234 | 43M | 离线 | 学术基准模型 |
ParaformerBert-aishell(damo/speech_paraformerbert_asr_nat-zh-cn-16k-aishell1-vocab4234-pytorch) | 中文 | AISHELL 178h | 4234 | 43M | 离线 | 学术基准模型 |
Paraformer-aishell2(damo/speech_paraformer_asr_nat-zh-cn-16k-aishell2-vocab5212-pytorch) | 中文 | AISHELL-2 1000h | 5212 | 64M | 离线 | 学术基准模型 |
ParaformerBert-aishell2(damo/speech_paraformerbert_asr_nat-zh-cn-16k-aishell2-vocab5212-pytorch) | 中文 | AISHELL-2 1000h | 5212 | 64M | 离线 | 学术基准模型 |
使用要点:
- 时长边界:普通离线版限制输入 wav ≤ 20s;需要任意长度时,应选择内置 VAD + 标点的"长音频版"(
-vad-punc-命名即表明其流水线属性); - 说话人信息:
Paraformer-large-Spk是在长音频功能之上叠加说话人识别,但注意其与 docs/speaker_emotion.md 中描述的说话人标签语义一致——输出为录音内的匿名簇标签,并非真实身份识别; - 热词:热词版基于上下文偏置(contextual biasing)实现,可在
generate(hotword="...")中传入空格分隔的热词字符串(详见下文源码级说明),它提升的是召回与准确率,不保证强制命中; - 学术版:aishell/aishell2 系列用于学术复现与基准对比,对应训练配方见 examples/aishell/paraformer 与 examples/industrial_data_pretraining/paraformer。
4.2 UniASR:流式/离线一体化 2-pass 模型
UniASR 采用 2-pass(two-pass)架构,一个模型同时覆盖流式(在线)与离线识别,目录内覆盖 18 种语言/方言:
| 模型 | 语言 | 训练数据 | 词表 | 参数量 | 离线/实时 | 备注 |
|---|---|---|---|---|---|---|
UniASR(damo/speech_UniASR_asr_2pass-zh-cn-16k-common-vocab8358-tensorflow1-online) | 中英 | 60000h | 8358 | 100M | 实时 | 流式离线一体化 |
UniASR-large(damo/speech_UniASR-large_asr_2pass-zh-cn-16k-common-vocab8358-tensorflow1-offline) | 中英 | 60000h | 8358 | 220M | 离线 | 流式离线一体化 |
UniASR English(damo/speech_UniASR_asr_2pass-en-16k-common-vocab1080-tensorflow1-online) | 英文 | 10000h | 1080 | 95M | 实时 | — |
UniASR Russian(damo/speech_UniASR_asr_2pass-ru-16k-common-vocab1664-tensorflow1-online) | 俄语 | 5000h | 1664 | 95M | 实时 | — |
UniASR Japanese(damo/speech_UniASR_asr_2pass-ja-16k-common-vocab93-tensorflow1-online) | 日语 | 5000h | 5977 | 95M | 实时 | — |
UniASR Korean(damo/speech_UniASR_asr_2pass-ko-16k-common-vocab6400-tensorflow1-online) | 韩语 | 2000h | 6400 | 95M | 实时 | — |
UniASR Cantonese (CHS)(damo/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online) | 粤语 | 5000h | 1468 | 95M | 实时 | — |
UniASR Indonesian(damo/speech_UniASR_asr_2pass-id-16k-common-vocab1067-tensorflow1-online) | 印尼语 | 1000h | 1067 | 95M | 实时 | — |
UniASR Vietnamese(damo/speech_UniASR_asr_2pass-vi-16k-common-vocab1001-pytorch-online) | 越南语 | 1000h | 1001 | 95M | 实时 | — |
UniASR Spanish(damo/speech_UniASR_asr_2pass-es-16k-common-vocab3445-tensorflow1-online) | 西班牙语 | 1000h | 3445 | 95M | 实时 | — |
UniASR Portuguese(damo/speech_UniASR_asr_2pass-pt-16k-common-vocab1617-tensorflow1-online) | 葡萄牙语 | 1000h | 1617 | 95M | 实时 | — |
UniASR French(damo/speech_UniASR_asr_2pass-fr-16k-common-vocab3472-tensorflow1-online) | 法语 | 1000h | 3472 | 95M | 实时 | — |
UniASR German(damo/speech_UniASR_asr_2pass-de-16k-common-vocab3690-tensorflow1-online) | 德语 | 1000h | 3690 | 95M | 实时 | — |
UniASR Persian(damo/speech_UniASR_asr_2pass-fa-16k-common-vocab1257-pytorch-online) | 波斯语 | 1000h | 1257 | 95M | 实时 | — |
UniASR Burmese(damo/speech_UniASR_asr_2pass-my-16k-common-vocab696-pytorch) | 缅甸语 | 1000h | 696 | 95M | 实时 | — |
UniASR Hebrew(damo/speech_UniASR_asr_2pass-he-16k-common-vocab1085-pytorch) | 希伯来语 | 1000h | 1085 | 95M | 实时 | — |
UniASR Urdu(damo/speech_UniASR_asr_2pass-ur-16k-common-vocab877-pytorch) | 乌尔都语 | 1000h | 877 | 95M | 实时 | — |
UniASR Turkish(damo/speech_UniASR_asr_2pass-tr-16k-common-vocab1582-pytorch) | 土耳其语 | 1000h | 1582 | 95M | 实时 | — |
使用要点:UniASR 家族统一以 16k 采样率模型为主,适合多语言国际化产品;实时版面向流式会话场景,与运行时 WebSocket 服务(见 runtime/readme.md)配合可实现边说话边出结果。注意目录中部分条目标注为"流式在线一体化"、部分为"流式离线一体化",两者推理契约不同,选型后需对照具体 checkpoint 文档确认输入输出格式。
4.3 Conformer:经典编码器基线
| 模型 | 语言 | 训练数据 | 词表 | 参数量 | 离线/实时 | 备注 |
|---|---|---|---|---|---|---|
Conformer(damo/speech_conformer_asr_nat-zh-cn-16k-aishell1-vocab4234-pytorch) | 中文 | AISHELL 178h | 4234 | 44M | 离线 | 输入 ≤ 20s |
Conformer(damo/speech_conformer_asr_nat-zh-cn-16k-aishell2-vocab5212-pytorch) | 中文 | AISHELL-2 1000h | 5212 | 44M | 离线 | 输入 ≤ 20s |
Conformer(damo/speech_conformer_asr-en-16k-vocab4199-pytorch) | 英文 | 10000h | 4199 | 220M | 离线 | 输入 ≤ 20s |
Conformer 作为经典编码器架构,对应实现位于 funasr/models/conformer 与 funasr/models/e_branchformer 等目录,训练配方可参考 examples/aishell/conformer。
五、多说话人语音识别:MFCCA
| 模型 | 语言 | 训练数据 | 词表 | 参数量 | 离线/实时 | 备注 |
|---|---|---|---|---|---|---|
MFCCA(NPU-ASLP/speech_mfcca_asr-zh-cn-16k-alimeeting-vocab4950) | 中文 | AliMeeting、AISHELL-4、Simudata 共 917h | 4950 | 45M | 离线 | 输入 ≤ 20s,通道 ≤ 8 通道 |
MFCCA 面向会议等多人对话场景,一次输入多通道音频完成多人语音内容识别。注意其两个硬性边界:单段 ≤ 20s、通道数 ≤ 8。该模型由 NPU-ASLP 发布,属第三方贡献条目,实现见 funasr/models/mfcca。
六、语音端点检测:FSMN-VAD
| 模型 | 训练数据 | 参数量 | 采样率 |
|---|---|---|---|
FSMN-VAD(iic/speech_fsmn_vad_zh-cn-16k-common-pytorch) | 阿里巴巴语音数据 5000h | 0.4M | 16000 |
FSMN-VAD(damo/speech_fsmn_vad_zh-cn-8k-common) | 阿里巴巴语音数据 5000h | 0.4M | 8000 |
FSMN-VAD 是极轻量(0.4M 参数)的端点检测组件,只负责"定位语音段",不转写、不识人。它既是长音频 ASR 流水线的切分器,也是流式场景的静音检测器。在AutoModel中作为vad_model="fsmn-vad"挂载,输出为[start_ms, end_ms]的语音区间列表。对应实现与流式缓冲逻辑见 funasr/models/fsmn_vad_streaming 与 examples/industrial_data_pretraining/fsmn_vad_streaming。
七、标点恢复:CT-Transformer
| 模型 | 语言 | 训练数据 | 参数量 | 词表 | 离线/实时 | 备注 |
|---|---|---|---|---|---|---|
CT-Transformer-Large(iic/punc_ct-transformer_cn-en-common-vocab471067-large) | 中英 | 阿里巴巴文本数据 100M | 1.1G | 471067 | 离线 | 大规模离线标点模型 |
CT-Transformer(damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch) | 中英 | 阿里巴巴文本数据 70M | 291M | 272727 | 离线 | 离线标点模型 |
CT-Transformer-Realtime(damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727) | 中英 | 阿里巴巴文本数据 70M | 288M | 272727 | 实时 | VAD 点实时标点 |
CT-Transformer 系列为 ASR 输出添加标点,支撑"读起来像人话"的转写结果。注意其边界:它不产生声学时间戳——时间戳需由 TP-Aligner(见下文)或支持时间戳的 ASR 模型提供。在流水线中以punc_model="ct-punc"挂载(别名指向 Large 版,见 funasr/download/name_maps_from_hub.py),实现见 funasr/models/ct_transformer 与 examples/industrial_data_pretraining/ct_transformer。
八、语言模型:Transformer LM
| 模型 | 训练数据 | 参数量 | 词表 |
|---|---|---|---|
Transformer(damo/speech_transformer_lm_zh-cn-common-vocab8404-pytorch) | 阿里巴巴语音数据 | 57M | 8404 |
该语言模型与 Paraformer 系列共享 8404 词表,可用于解码重打分(rescoring)等场景,实现见 funasr/models/language_model。
九、说话人验证:Xvector
| 模型 | 训练数据 | 参数量 | 说话人数 | 备注 |
|---|---|---|---|---|
Xvector(damo/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch) | CNCeleb 1200h | 17.5M | 3465 | 中文说话人验证 |
Xvector(damo/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch) | CallHome 60h | 61M | 6135 | 英文说话人验证 |
Xvector 输出说话人嵌入(embedding),可用于声纹比对/验证。FunASR 流水线中更常用的说话人嵌入组件是cam++(对应iic/speech_campplus_sv_zh-cn_16k-common,见别名映射),其聚类逻辑与"匿名说话人标签 ≠ 已知身份识别"的边界在 docs/speaker_emotion.md 中有完整说明。实现见 funasr/models/xvector 与 funasr/models/campplus。
十、说话人日志(Diarization):SOND
| 模型 | 训练数据 | 参数量 | 备注 |
|---|---|---|---|
SOND(damo/speech_diarization_sond-zh-cn-alimeeting-16k-n16k4-pytorch) | AliMeeting 120h | 40.5M | 中文,说话人日志 |
SOND(damo/speech_diarization_sond-en-us-callhome-8k-n16k4-pytorch) | CallHome 60h | 12M | 英文,说话人日志 |
SOND 是端到端说话人日志模型("profiles and records"),直接对多说话人录音输出分段与说话人归属,区别于"ASR + 嵌入聚类"的组合式方案。实现见 funasr/models/sond。
十一、第三方统一转写与说话人分离:MOSS-Transcribe-Diarize
| 模型 | 发布方 | 参数量 | 备注 |
|---|---|---|---|
| MOSS-Transcribe-Diarize | OpenMOSS | 以官方模型卡为准 | 第三方 Apache-2.0 模型;单次离线请求返回转写、时间戳与说话人标签;FunASR 集成无需外接 VAD 服务 |
这是目录中唯一由第三方(OpenMOSS)发布、非 FunASR 团队训练的模型,其许可为 Apache-2.0,保留原作者归属。它的独特价值在于一体化:一次离线请求同时产出文本、时间戳和(录音内的)匿名说话人标签,无需像传统方案那样手动串联 VAD + ASR + 说话人聚类。但必须清醒认识其边界:它不是实时流式模型,也不是已知人物身份识别模型,标签仅限单条录音内部。部署时请严格遵循专门的 docs/moss_transcribe_diarize.md(适配器、原生上游服务、显存需求与响应边界),不要照搬其他模型的流水线。
十二、时间戳预测:TP-Aligner
| 模型 | 语言 | 训练数据 | 参数量 | 备注 |
|---|---|---|---|---|
TP-Aligner(damo/speech_timestamp_prediction-v1-16k-offline) | 中文 | 阿里巴巴语音数据 50000h | 37.8M | 时间戳预测,中等规模 |
TP-Aligner 用于为文本-音频对预测时间对齐。它需要对应的文本输入,是对齐任务而非 ASR;且时间戳支持并非对所有识别器通用,使用时必须匹配文档规定的输入/模型路径。对应别名fa-zh见 funasr/download/name_maps_from_hub.py,实现见 funasr/models/monotonic_aligner 与 examples/industrial_data_pretraining/monotonic_aligner。
十三、逆文本正则化(ITN):ASR 文本后处理
ITN 将语音识别输出的口语化文本("二〇二六年")还原为书面数字形式("2026年"),是 ASR 后处理的关键环节。目录覆盖 12 种语言:
| 模型 | 语言 | 参数量 | 备注 |
|---|---|---|---|
English(damo/speech_inverse_text_processing_fun-text-processing-itn-en) | EN | 1.54M | ITN |
Russian(damo/speech_inverse_text_processing_fun-text-processing-itn-ru) | RU | 17.79M | ITN |
Japanese(damo/speech_inverse_text_processing_fun-text-processing-itn-ja) | JA | 6.8M | ITN |
Korean(damo/speech_inverse_text_processing_fun-text-processing-itn-ko) | KO | 1.28M | ITN |
Indonesian(damo/speech_inverse_text_processing_fun-text-processing-itn-id) | ID | 2.06M | ITN |
Vietnamese(damo/speech_inverse_text_processing_fun-text-processing-itn-vi) | VI | 0.92M | ITN |
Tagalog(damo/speech_inverse_text_processing_fun-text-processing-itn-tl) | TL | 0.65M | ITN |
Spanish(damo/speech_inverse_text_processing_fun-text-processing-itn-es) | ES | 1.32M | ITN |
Portuguese(damo/speech_inverse_text_processing_fun-text-processing-itn-pt) | PT | 1.28M | ITN |
French(damo/speech_inverse_text_processing_fun-text-processing-itn-fr) | FR | 4.39M | ITN |
German(damo/speech_inverse_text_processing_fun-text-processing-itn-de) | GE | 3.95M | ITN |
这些权重与 fun_text_processing 目录下的规则引擎配套使用,完整流程(正则化 → 逆正则化 → 评估)见 fun_text_processing/inverse_text_normalization/inverse_normalize.py 与 fun_text_processing/text_normalization/normalize.py。
十四、源码级原理:ModelScope 权重是如何被加载的
要真正用好上述目录,需要理解AutoModel与 ModelScope 的对接机制,这涉及两条关键代码路径。
14.1 别名映射:短名 → 完整模型 ID
funasr/download/name_maps_from_hub.py 定义了name_maps_ms,把易记别名映射到 ModelScope 完整 ID。与本文目录直接相关的映射包括:
name_maps_ms = { "paraformer": "iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch", "paraformer-zh": "iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch", "paraformer-en": "iic/speech_paraformer-large-vad-punc_asr_nat-en-16k-common-vocab10020", "paraformer-zh-streaming": "iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online", "fsmn-vad": "iic/speech_fsmn_vad_zh-cn-16k-common-pytorch", "ct-punc": "iic/punc_ct-transformer_cn-en-common-vocab471067-large", "ct-punc-c": "iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch", "fa-zh": "iic/speech_timestamp_prediction-v1-16k-offline", "cam++": "iic/speech_campplus_sv_zh-cn_16k-common", # ... }两个值得注意的事实:
- 别名不是不可变版本号:例如
paraformer-zh在当前 checkout 中解析到的是 SeACo Paraformer(speech_seaco_paraformer_large_...),而非目录表格中的标准 Paraformer-large——这正是 model_zoo/readme.md 反复强调"别名只是便利,不是模型 revision 固定锚点"的原因; - 同样名称在不同 hub(
name_maps_hf)下解析到不同仓库(如funasr/paraformer-zh),跨 hub 迁移时必须重新核对。
14.2 下载与配置合并
funasr/download/download_model_from_hub.py 的download_model(**kwargs)按hub分流:"ms"/"modelscope"走download_from_ms,"hf"/"huggingface"走download_from_hf,"openai"走 Whisper 包装分支。ModelScope 分支的关键逻辑:
- 先查
name_maps_ms做别名解析; model_revision默认"master",通过modelscope.hub.snapshot_download拉取快照(get_or_download_model_dir),并携带user_agent标记调用方为 funasr;- 读取模型目录内的
configuration.json(存在时按file_path_metas把init_param、config、tokenizer_conf.bpemodel、frontend_conf.cmvn_file等相对路径补全为绝对路径)或config.yaml(存在时合并配置并自动定位model.pt、tokens.txt/tokens.json、am.mvn、jieba_usr_dict等资产); - 仅当
trust_remote_code=True时才安装模型自带requirements.txt并动态导入remote_code指定的模型实现——默认关闭。
这也解释了 ModelScope 模型目录的典型结构(以 SenseVoice 为例的配置骨架见 docs/tutorial/Tables.md):config.yaml(模型结构)+model.pt(权重)+am.mvn(前端 CMVN)+ tokenizer 资源,加上可选的configuration.json做路径解析。
14.3 AutoModel 构造参数速览
从 docs/python_api.md 与 funasr/auto/auto_model.py 可归纳与本目录相关的核心参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
model | 必填 | hub 别名、完整模型 ID 或本地模型目录 |
hub | "ms" | "ms"/"modelscope"或"hf"/"huggingface" |
model_revision | "master" | ModelScope 转发该 revision |
device | "cuda" | 如"cuda:0"或"cpu";不可用的加速后端回退 CPU |
ncpu | 4 | CPU 线程数(进程级 PyTorch 线程) |
vad_model/punc_model/spk_model | None | 可选组件,随vad_kwargs/punc_kwargs/spk_kwargs配置 |
disable_update | False | 仅跳过 SDK 版本自检,不跳过模型下载 |
trust_remote_code | False | 是否信任模型自带代码/依赖,开启前须审查 |
十五、实战:用 AutoModel 加载 ModelScope 权重
15.1 单模型快速转写
from funasr import AutoModel model = AutoModel( model="paraformer-zh", # 别名,解析到 SeACo Paraformer(hub="ms" 默认) hub="ms", device="cpu", # 或 "cuda:0" ncpu=4, disable_update=True, ) results = model.generate(input="meeting.wav") print(results[0]["text"])也可直接用目录中的完整 ID(如model="iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch")绕过别名解析,获取更确定的行为。首次运行需联网下载权重,下载耗时、预热与推理应分开计时(见 model_zoo/readme.md 的测量建议)。
15.2 组合完整流水线:VAD + ASR + 标点 + 说话人
目录中"长音频版"模型本质上是预打包的流水线;若需自行组合,用AutoModel挂载各组件即可,组件别名均来自上文映射表:
pipeline = AutoModel( model="paraformer-zh", vad_model="fsmn-vad", punc_model="ct-punc", spk_model="cam++", # 说话人嵌入,聚类为录音内匿名标签 vad_kwargs={"max_single_segment_time": 30000}, # 毫秒 device="cpu", disable_update=True, ) results = pipeline.generate( input="meeting.wav", batch_size_s=60, # VAD 分段批处理时长预算(秒) sentence_timestamp=True, ) for item in results: print(item.get("text", "")) for sentence in item.get("sentence_info", []): print(sentence.get("start"), sentence.get("end"), sentence.get("spk"), sentence.get("text", ""))要点(依据 docs/tutorial/README.md):
max_single_segment_time单位是毫秒,两个批控参数单位是秒;spk标签须从sentence_info内读取,不要从外层结果直接取;- 说话人簇标签是录音内的匿名标识,不是跨录音的稳定身份;
- 流式场景应使用 Paraformer 流式版并维护独立的
cache={}会话、在末帧传is_final=True,详见 examples/industrial_data_pretraining/paraformer_streaming/demo.py。
15.3 热词与文本后处理
# 模型级上下文偏置(SeACo/上下文 Paraformer 支持) biased = model.generate(input="meeting.wav", hotword="魔搭 达摩院") # 输出文本的显式改写(非模型热词) corrected = model.generate( input="meeting.wav", postprocess_hotwords={"科大迅飞": "科大讯飞"}, return_postprocess_hotword_matches=True, )注意hotword(单数、空格分隔字符串)与hotwords(复数、Fun-ASR-Nano 等使用)及language提示不是可互换的通用 SDK 选项,必须匹配所选 checkpoint 的契约;后处理实现见 funasr/utils/postprocess_hotwords.py。
十六、从 ModelScope 走向生产:训练、注册与部署
目录中的预训练权重只是起点,后续路径可按需选择:
- 微调/训练:使用 docs/training.md 与 examples/industrial_data_pretraining/paraformer/finetune.sh 等配方,训练数据格式参考 data/list/train.jsonl;
- 注册自定义模型:基于注册机制(
@tables.register)将新模型接入AutoModel,完整教程见 docs/tutorial/Tables.md 与 docs/model_registration.md; - 导出与部署:ONNX 导出参考 examples/industrial_data_pretraining/paraformer/export.py 与 runtime/python/onnxruntime/README.md,GGUF 路线见 runtime/llama.cpp/README.md(注意 ONNX 导出 ≠ GGUF 转换);
- 服务化:对照 docs/deployment_matrix.md 选择 OpenAI 兼容 API(examples/openai_api)、运行时 WebSocket(runtime/readme.md)或 MCP 服务(examples/mcp_server);
- 质量与性能验证:采用 docs/benchmark/rtf_reproducibility.md 的规范,用代表性音频集分别测量 WER/CER 与 RTF/时延,记录模型名、revision、FunASR 版本、设备与运行时路径,切勿用单一干净样例下结论。
十七、结语:把目录当作契约而非承诺
ModelScope 模型目录的价值在于快速定位与一键加载:Paraformer 覆盖中英离线/实时全谱系,UniASR 提供 18 语言 2-pass 一体化方案,FSMN-VAD、CT-Transformer、Xvector/SOND、TP-Aligner 与 ITN 构成完整的 ASR 前后处理链路,MOSS-Transcribe-Diarize 则代表第三方一体化转写-分离的新范式。但目录同时是"契约而非承诺":每个 checkpoint 的许可、revision、时长/通道边界、离线/实时契约与别名解析结果都必须在使用前逐一核实。将 model_zoo/modelscope_models.md、model_zoo/readme.md 与 funasr/download/name_maps_from_hub.py、funasr/download/download_model_from_hub.py 对照阅读,即可在最短时间内建立从"选模型"到"跑通推理"再到"生产部署"的完整心智模型。
【免费下载链接】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),仅供参考