OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  pyannote-audio — 语音分离与说话人日志分析工具

pyannote-audio — 语音分离与说话人日志分析工具

 
  quarter ·  2026-10-26 11:00:21 · 37 次点击  · 0 条评论  

pyannote.audio social preview

pyannote 说话人日志工具包

pyannote.audio 是一个用 Python 编写的开源说话人日志(speaker diarization)工具包。它基于 PyTorch 机器学习框架,附带最先进的预训练模型与流水线,可进一步在你的自有数据上微调以获得更佳性能。

亮点

community-1 开源说话人日志

  1. 确保你的机器已安装 ffmpeg(torchcodec 音频解码库需要它)
  2. 使用 uvadd pyannote.audio(推荐)或 pip install pyannote.audio 安装
  3. 接受 pyannote/speaker-diarization-community-1 用户条款
  4. 在 hf.co/settings/tokens 创建 Huggingface 访问令牌
import torch
from pyannote.audio import Pipeline
from pyannote.audio.pipelines.utils.hook import ProgressHook

# Community-1 开源说话人日志流水线
pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-community-1", token="HUGGINGFACE_ACCESS_TOKEN"
)

# 在可用时将流水线发送至 GPU
pipeline.to(torch.device("cuda"))

# 应用预训练流水线(可选进度钩子)
with ProgressHook() as hook:
    output = pipeline("audio.wav", hook=hook)  # 本地运行

# 打印结果
for turn, speaker in output.speaker_diarization:
    print(f"start={turn.start:.1f}s stop={turn.end:.1f}s speaker_{speaker}")
# start=0.2s stop=1.5s speaker_0
# start=1.8s stop=3.9s speaker_1
# start=4.2s stop=5.7s speaker_0
# ...

precision-2 高级说话人日志

  1. 在 dashboard.pyannote.ai 创建 pyannoteAI API 密钥
  2. 享用免费额度!
from pyannote.audio import Pipeline

# Precision-2 高级说话人日志服务
pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-precision-2", token="PYANNOTEAI_API_KEY"
)

output = pipeline("audio.wav")  # 在 pyannoteAI 服务器上运行

# 打印结果
for turn, speaker in output.speaker_diarization:
    print(f"start={turn.start:.1f}s stop={turn.end:.1f}s {speaker}")
# start=0.2s stop=1.6s SPEAKER_00
# start=1.8s stop=4.0s SPEAKER_01
# start=4.2s stop=5.6s SPEAKER_00
# ...

访问 docs.pyannote.ai 了解 pyannoteAI 的其他功能(声纹识别、置信度分数等)

基准测试

基准(最后更新于 2025-09) legacy (3.1) community-1 precision-2
AISHELL-4 12.2 11.7 11.4
AliMeeting (channel 1) 24.5 20.3 15.2
AMI (IHM) 18.8 17.0 12.9
AMI (SDM) 22.7 19.9 15.6
AVA-AVD 49.7 44.6 37.1
CALLHOME (part 2) 28.5 26.7 16.6
DIHARD 3 (full) 21.4 20.2 14.7
Ego4D (dev.) 51.2 46.8 39.0
MSDWild 25.4 22.8 17.3
RAMC 22.2 20.8 10.5
REPERE (phase2) 7.9 8.9 7.4
VoxConverse (v0.3) 11.2 11.2 8.5

说话人日志错误率(%,越低越好)

与 3.1 旧版流水线相比,community-1 在说话人计数与分配方面带来了显著改进。
precision-2 高级流水线(在其自托管版本中)进一步提升了准确性和处理速度。

基准(最后更新于 2025-09) community-1 precision-2 加速
AMI (IHM),约 1 小时文件 每 1 小时音频 31 秒 每 1 小时音频 14 秒 快 2.2 倍
DIHARD 3 (full),约 5 分钟文件 每 1 小时音频 37 秒 每 1 小时音频 14 秒 快 2.6 倍

在 NVIDIA H100 80GB HBM3 上的自托管速度

遥测

通过 pyannote.audio 中的可选遥测功能,你可以选择发送匿名使用指标,帮助 pyannote 团队改进该库。

我们收集的信息

对于每次调用 Pipeline.from_pretrained({origin})(或 Model.from_pretrained({origin})),我们以以下隐私保护方式收集有关 {origin} 的信息:

  • 如果 {origin} 是托管在 Huggingface 上的官方 pyannote 或 pyannoteAI 流水线(或模型),我们将其记录为 {origin}。
  • 如果 {origin} 是托管在 Huggingface 上来自任何其他组织的流水线(或模型),我们将其记录为 huggingface。
  • 如果 {origin} 是本地文件或目录的路径,我们将其记录为 local。

我们还会记录流水线的 Python 类(例如 pyannote.audio.pipelines.SpeakerDiarization)。

对于用流水线处理的每个文件,我们收集:
* 文件时长(秒)
* 说话人日志流水线的 num_speakers、min_speakers 和 max_speakers 值

我们不收集任何可用于识别用户身份的信息。

配置遥测

遥测可通过三种方式配置:
1. 使用环境变量
2. 仅在当前 Python 会话中
3. 跨会话全局配置

为保持一致,以上所有选项都会修改环境变量的值。
如果未设置环境变量,pyannote.audio 将读取遥测配置中的默认值。
默认配置也可以在 Python 中更改。

使用环境变量

你可以通过设置 PYANNOTE_METRICS_ENABLED 环境变量来控制遥测:

# 启用指标
export PYANNOTE_METRICS_ENABLED=1

# 禁用指标
export PYANNOTE_METRICS_ENABLED=0

当前会话

要控制当前 Python 内核会话的遥测:

from pyannote.audio.telemetry import set_telemetry_metrics

# 为当前会话启用指标
set_telemetry_metrics(True)

# 为当前会话禁用指标
set_telemetry_metrics(False)

全局配置

要设置跨会话持久化的遥测偏好:

from pyannote.audio.telemetry import set_telemetry_metrics

# 全局启用指标
set_telemetry_metrics(True, save_choice_as_default=True)

# 全局禁用指标
set_telemetry_metrics(False, save_choice_as_default=True)

文档

引用

如果你使用 pyannote.audio,请使用以下引用:

@inproceedings{Plaquet23,
  author={Alexis Plaquet and Hervé Bredin},
  title={{Powerset multi-class cross entropy loss for neural speaker diarization}},
  year=2023,
  booktitle={Proc. INTERSPEECH 2023},
}
@inproceedings{Bredin23,
  author={Hervé Bredin},
  title={{pyannote.audio 2.1 speaker diarization pipeline: principle, benchmark, and recipe}},
  year=2023,
  booktitle={Proc. INTERSPEECH 2023},
}

开发

以下命令将安装 pre-commit 钩子以及开发 pyannote.audio 库所需的包。

uv sync --extra dev --extra test --extra cli
uvx pre-commit install

测试

uv run --extra test --extra cli pytest -m "not network and not notebook"

标记为 network 的测试会从 Hugging Face 下载公开模型:

uv run --extra test --extra cli pytest -m network

历史 notebook 需显式启用(pytest -m notebook),可能需要额外的模型、数据集、凭证以及针对当前 API 的更新。

使用 uvx ruff check . 和 uvx ruff format --check . 运行代码检查与格式检查。

37 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 27 ms
Developed with Cursor