You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyannote Speaker Diarization离线使用报错求助

问题描述

此前在线加载Pyannote说话人 diarization 模型的代码可正常运行:

from pyannote.audio import Pipeline

access_token = 'xxxxxxxxxxx'

model = Pipeline.from_pretrained(
         "pyannote/speaker-diarization-3.1",
         use_auth_token=access_token)

path_in = 'blabla/1-137-A-32.wav'

num_speakers = 1

model(path_in,
   num_speakers=num_speakers).labels()

尝试离线使用时,按官方教程配置本地目录与pyannote_offline_config.yaml后,直接加载yaml模型报错:"A pipeline must be instantiated with pipeline.instantiate(parameters) before it can be applied.";调用instantiate方法传入参数仍报相同错误。仅结合在线模型ID与本地yaml加载时本地可正常运行,但上传至GitLab后出现模型下载认证报错;本地无yaml仅加载在线模型也可正常运行。

解决方案

1. 确保离线模型文件完整

不要只复制单独的pipeline.yaml或配置文件,必须下载完整的模型仓库内容,包括所有权重、子组件配置。用huggingface-cli命令下载:

huggingface-cli download pyannote/speaker-diarization-3.1 --local-dir ./local-speaker-diarization --local-dir-use-symlinks False

该命令会将模型的所有文件(包括主pipeline配置、子模型权重、组件配置)下载到./local-speaker-diarization目录。

2. 正确加载本地离线模型

方式一:直接加载本地完整模型目录

不需要单独的pyannote_offline_config.yaml,直接用本地目录路径加载:

from pyannote.audio import Pipeline

# 指向本地下载的完整模型目录
model = Pipeline.from_pretrained("./local-speaker-diarization")

path_in = 'blabla/1-137-A-32.wav'
num_speakers = 1
model(path_in, num_speakers=num_speakers).labels()

这种方式下from_pretrained会自动解析目录内的配置,完成模型实例化,无需手动调用instantiate。

方式二:使用自定义yaml配置

如果必须用pyannote_offline_config.yaml,需确保yaml内所有组件的path字段都指向本地对应的子模型目录(绝对路径或相对项目根目录的路径),示例yaml结构:

version: 3.1
pipeline:
  name: pyannote.audio.pipelines.speaker_diarization.SpeakerDiarization
  params:
    clustering:
      name: pyannote.audio.pipelines.clustering.HierarchicalClustering
      params:
        embedding:
          path: ./local-speaker-diarization/embedding
    segmentation:
      path: ./local-speaker-diarization/segmentation
    # 其他组件同理,全部指向本地路径

加载时直接传入yaml路径即可:

from pyannote.audio import Pipeline

model = Pipeline.from_pretrained("./pyannote_offline_config.yaml")
model(path_in, num_speakers=num_speakers).labels()

3. 解决GitLab上的认证报错问题

GitLab环境无法自动下载在线模型,需:

  • 将完整的本地模型目录通过Git LFS上传到GitLab仓库(因为模型权重文件较大,普通Git无法处理大文件)
  • 修改代码中的模型路径,指向GitLab仓库内的模型目录(相对路径),彻底移除在线模型ID和use_auth_token参数,避免触发下载请求

4. 排查instantiate报错原因

直接加载单独yaml文件报错的核心原因是:yaml仅定义了pipeline结构,但未指定实际模型组件的本地路径,导致pipeline无法加载权重完成实例化。确保yaml内所有组件的path都正确指向本地已下载的子模型目录,from_pretrained会自动完成实例化,无需手动调用instantiate。

内容的提问来源于stack exchange,提问作者Tütü

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:57:32