Jupyter使用pyannote.audio遇.rttm文件加载器缺失ValueError问题
解决pyannote-audio在Jupyter Notebook中加载.rttm文件时的Loader缺失问题
问题背景
我用pyannote-audio搭建说话人分割流水线,已完成模型训练并加载检查点,但在Jupyter Notebook中运行代码时遇到异常:执行for file in ami.test():触发报错:
ValueError: No loader for files with '.rttm' suffix .
已确认数据库、协议定义均正确,且相同代码在Python脚本中运行无异常。尝试卸载pyannote.database并安装开发分支后问题仍存在。排查发现pyannote.database的loader.py中存在RTTMLoader类,但该类未被custom.py的LOADERS入口点识别。
解决方案
临时快速修复
- 手动注册RTTMLoader
在Notebook代码开头加入以下代码,手动将RTTMLoader注册到LOADERS映射中:
from pyannote.database.loader import RTTMLoader from pyannote.database.custom import LOADERS # 为.rttm后缀文件注册加载器 LOADERS[".rttm"] = RTTMLoader
执行这段代码后再运行ami.test()循环,即可解决加载器缺失问题。
- 验证Jupyter环境一致性
确保Jupyter使用的Python环境与运行脚本的环境一致。在Notebook中执行以下命令查看当前环境:
!which python !pip list | grep pyannote
对比脚本环境的包版本,若存在差异,切换Jupyter的内核到脚本使用的环境。
- 强制刷新模块入口点
如果手动注册无效,尝试重新加载pyannote.database的custom模块,强制刷新入口点:
import importlib from pyannote.database import custom importlib.reload(custom)
重新加载后再执行目标代码。
长期源码修改方案
若临时修复无法满足需求,可直接修改pyannote.database的源码:
- 找到pyannote.database安装目录下的
custom.py文件 - 在LOADERS字典中添加
.rttm的映射:
LOADERS = { # 保留原有其他加载器配置 ".rttm": RTTMLoader, }
- 保存文件后重启Jupyter Notebook即可生效。注意:此修改会随包更新被覆盖,更新后需重新操作。
内容的提问来源于stack exchange,提问作者Jgoieu
相关产品推荐
相关产品推荐

