我正在使用
pyannote-audio
开发扬声器二值化管道。
我已经训练了模型并加载了检查点,在 Jupyter 笔记本中运行 python 脚本。
但是,我在 Jupyter 单元中运行代码时遇到问题:
from pyannote.database import registry
from pyannote.database import loader
from pyannote.audio import Inference
from pyannote.audio.pipelines import SpeakerDiarization as SpeakerDiarizationPipeline
metric = DiarizationErrorRate()
registry.load_database("pyannote/full_database.yml")
ami = registry.get_protocol('PROJECT.SpeakerDiarization.complete')
pipeline = SpeakerDiarizationPipeline(segmentation= segmentation_model, embedding=embedding_model)
for file in ami.test():
# apply finetuned pipeline
print("Expected output")
print(file["annotation"])
expected_output = file["annotation"].get_timeline()
file["finetuned pipeline"] = pipeline(file)
print("Calculating final output........ ")
print(file["finetuned pipeline"] )
diar , centroid = pipeline.apply(file, return_embeddings=True)
当我尝试在单元格中运行时发生错误,
for file in ami.test():
我明白了
99 if path.suffix not in LOADERS:
100 msg = f"No loader for files with '{path.suffix}' suffix"
--> 101 raise ValueError(msg)
102
103 Loader = LOADERS[path.suffix].load()
ValueError: No loader for files with '.rttm' suffix .
数据库、协议等的定义都是正确的。
代码中没有错误,因为当我从 Python 脚本运行它时,运行时没有错误。
我尝试卸载
pyannote.database
软件包并克隆 pyannote.database
开发树,但仍然遇到相同的错误。
!pip install git+https://github.com/pyannote/pyannote-database.git@develop
我检查了文件。
RTTMLoader
的loader.py
中有一个pyannote.database
类。
似乎问题在于
RTTMLoader
没有在 LOADERS
的 custom.py
中的 pyannote.database
的入口点被识别:
LOADERS = {
ep.name: ep
for ep in pkg_resources.iter_entry_points(group="pyannote.database.loader")
}
我需要在笔记本中运行代码才能继续处理我的项目。
我在 Google Colab 中遇到了同样的错误。 重新启动会话解决了该问题。