我正在使用 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
我检查了文件,pyannote.database的loader.py中有一个RTTMLoader类。
似乎问题在于 RTTMLoader 没有在 pyannote.database 的 custom.py 中的 LOADER 入口点中被识别
LOADERS = {
ep.name: ep
for ep in pkg_resources.iter_entry_points(group="pyannote.database.loader")
}
我需要在笔记本中运行代码才能继续处理我的项目。
看看这个问题,可能会有帮助: