FunASR情感识别模型emotion2vec加载卡住:3类报错快速定位
【免费下载链接】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是开源语音工具链,其emotion2vec情感识别模型能对一段语音给出情绪标签与置信度;首次调用emotion2vec_plus_large时,最常见的卡点不在推理,而在加载环节:要么打印Download: iic/emotion2vec_plus_large failed!后初始化静默失败,要么权重文件对不上,只报一句init_param does not exist。以下排查笔记覆盖从模型定位到配置合并的完整加载链路。
⚡ 最短路径:4行代码跑通情感识别
先pip install funasr modelscope,然后用模型短名直接调用。短名emotion2vec_plus_large已注册在name_maps_from_hub.py中,会自动映射到 ModelScope 的iic/emotion2vec_plus_large,无需手动拼路径:
from funasr import AutoModel model = AutoModel(model="emotion2vec_plus_large", device="cuda") result = model.generate(input="audio.wav", granularity="utterance") print(result)granularity="utterance"表示输出整句层面的情绪标签与分数,README_zh.md中的情感识别示例即此写法。
🔍 工作机制速览:加载链路四步走
加载逻辑集中在download_model_from_hub.py,共四步:
- 模型定位:先查
name_maps_ms映射表,命中则把短名换成完整的 ModelScope 模型 id - 文件下载:调用
snapshot_download拉取模型目录(调用点);本地已有目录时默认只远程检查版本(check_latest=True),不重复下载 - 配置合并:读取模型目录的
configuration.json或config.yaml并与传入参数合并,自动回填model.pt、tokens.txt、am.mvn等文件路径 - 依赖处理:仅当
trust_remote_code=True时,安装模型目录requirements.txt中的依赖,并从本地路径动态注册模型代码
🧩 排障速查:报错现象对照表
| 报错现象 | 常见根因 | 解决方法 |
|---|---|---|
Download: iic/emotion2vec_plus_large failed! | 网络无法访问 ModelScope,或 modelscope SDK 版本过旧、snapshot_download不支持user_agent参数 | pip install -U modelscope;或改用本地路径加载跳过下载 |
init_param does not exist | 用本地模型目录加载,但目录里缺少model.pt | 补齐权重文件,或改用模型 id 让框架自动下载 |
ModuleNotFoundError(提示缺少model模块) | 模型目录含自定义model.py,但未开启动态注册 | 给AutoModel传入trust_remote_code=True |
第三类最容易误判:报错里的model不像手误,但它确实就是模型目录中代码文件的文件名(去掉.py后缀)动态推导出的模块名。根因在于动态导入只在trust_remote_code=True分支执行——开关关闭时,目录里的model.py完全不会被执行,config.yaml中声明的模型类自然找不到。修复只需补一个参数:
model = AutoModel( model="emotion2vec_plus_large", trust_remote_code=True, )开启后若模型目录带requirements.txt,其依赖会先被自动安装,因此离线机器上建议提前核对依赖齐全。
⚙️ 进阶场景
离线加载的目录要求
无网环境下可在联网机器下载完整模型包,再按本地路径加载。加载器对目录结构的检查是固定的:
| 文件 | 必需 | 作用 |
|---|---|---|
config.yaml | 是 | 模型配置,声明模型类与前端参数 |
model.pt | 是 | 权重文件,缺失即报init_param does not exist |
tokens.txt/bpe.model | 否 | 词表,存在则自动注册 |
am.mvn | 否 | 特征均值方差归一化文件 |
requirements.txt | 否 | 依赖清单,仅在trust_remote_code=True时安装 |
model = AutoModel(model="/data/models/emotion2vec_plus_large")缓存管理
下载结果缓存在 modelscope 默认目录~/.cache/modelscope/hub下,多项目共用同一份缓存;本地目录已存在时只触发一次远程版本检查。重复初始化慢、或想固定模型版本时,可通过model_revision参数指定分支,而不是每次重新拉取。
推理参数调优
| 参数 | 建议值 | 作用 |
|---|---|---|
device | "cuda:0" | GPU 推理,CPU 可用但明显更慢 |
batch_size | 8~32 | 批量推理,按显存上调 |
granularity | "utterance" | 整句情绪粒度,更细粒度可查教程文档 |
资源入口
- 情感识别调用示例:README_zh.md
- 模型短名映射表:funasr/download/name_maps_from_hub.py
- 下载与配置合并源码:funasr/download/download_model_from_hub.py
- 教程文档:docs/tutorial/README_zh.md
- 模型列表:model_zoo/
【免费下载链接】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),仅供参考