pyannote-audio README

The project's README from github.com/pyannote/pyannote-audio. As one markdown file: README.md.

pyannote speaker diarization toolkit

pyannote.audio is an open-source toolkit written in Python for speaker diarization. Based on PyTorch machine learning framework, it comes with state-of-the-art pretrained models and pipelines, that can be further finetuned to your own data for even better performance.

Highlights

community-1 open-source speaker diarization

  1. Make sure ffmpeg is installed on your machine (needed by torchcodec audio decoding library)
  2. Install with uvadd pyannote.audio (recommended) or pip install pyannote.audio
  3. Accept pyannote/speaker-diarization-community-1 user conditions
  4. Create Huggingface access token at hf.co/settings/tokens
import torch
from pyannote.audio import Pipeline
from pyannote.audio.pipelines.utils.hook import ProgressHook

# Community-1 open-source speaker diarization pipeline
pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-community-1",
    token="HUGGINGFACE_ACCESS_TOKEN")

# send pipeline to GPU (when available)
pipeline.to(torch.device("cuda"))

# apply pretrained pipeline (with optional progress hook)
with ProgressHook() as hook:
    output = pipeline("audio.wav", hook=hook)  # runs locally

# print the result
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 premium speaker diarization

  1. Create pyannoteAI API key at dashboard.pyannote.ai
  2. Enjoy free credits!
from pyannote.audio import Pipeline

# Precision-2 premium speaker diarization service
pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-precision-2", token="PYANNOTEAI_API_KEY")

output = pipeline("audio.wav")  # runs on pyannoteAI servers

# print the result
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
# ...

Visit docs.pyannote.ai to learn about other pyannoteAI features (voiceprinting, confidence scores, ...)

Benchmark

Benchmark (last updated in 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

Diarization error rate (in %, the lower, the better)

Compared to the 3.1 legacy pipeline, community-1 brings significant improvement in terms of speaker counting and assignment. precision-2 premium pipeline further improves accuracy as well as processing speed (in its self-hosted version).

Benchmark (last updated in 2025-09) community-1 precision-2 Speed up
AMI (IHM), ~1h files 31s per hour of audio 14s per hour of audio 2.2x faster
DIHARD 3 (full), ~5min files 37s per hour of audio 14s per hour of audio 2.6x faster

Self-hosted speed on a NVIDIA H100 80GB HBM3

Telemetry

With the optional telemetry feature in pyannote.audio, you can choose to send anonymous usage metrics to help the pyannote team improve the library.

What we track

For each call to Pipeline.from_pretrained({origin}) (or Model.from_pretrained({origin})), we track information about {origin} in the following privacy-preserving way:

We also track the pipeline Python class (e.g. pyannote.audio.pipelines.SpeakerDiarization).

For each file processed with a pipeline, we track

We do not track any information that could identify who the user is.

Configuring telemetry

Telemetry can be configured in three ways:

  1. Using an environment variable
  2. Within the current Python session only
  3. Globally across sessions

All of these options will modify the value of the environment variable for consistency. If the environment variable is not set, pyannote.audio will read the default value in the telemetry config. The default config can also be changed from Python.

Using environment variable

You can control telemetry by setting the PYANNOTE_METRICS_ENABLED environment variable:

# enable metrics
export PYANNOTE_METRICS_ENABLED=1

# disable metrics
export PYANNOTE_METRICS_ENABLED=0

For current session

To control telemetry for your current Python kernel session:

from pyannote.audio.telemetry import set_telemetry_metrics

# enable metrics for current session
set_telemetry_metrics(True)

# disable metrics for current session
set_telemetry_metrics(False)

Global configuration

To set telemetry preferences that persist across sessions:

from pyannote.audio.telemetry import set_telemetry_metrics

# enable metrics globally
set_telemetry_metrics(True, save_choice_as_default=True)

# disable metrics globally
set_telemetry_metrics(False, save_choice_as_default=True)

Documentation

Citations

If you use pyannote.audio please use the following citations:

@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},
}

Development

The commands below will setup pre-commit hooks and packages needed for developing the pyannote.audio library.

pip install -e .[dev,testing]
pre-commit install

Test

pytest

pyannote-audio (pyannote/pyannote-audio)

Searching Database…

这是干什么的?一个开源的 Python 工具包,用于说话人分离——也就是判断一段录音里谁在什么时候说话。它基于 PyTorch 构建,自带目前最先进的预训练模型和处理流程。
它是一整个大模型,还是可以在我自己的代码里组合的积木?它是一个由神经网络积木组成的 Python 库:语音活动检测、说话人切换检测、重叠语音检测,以及说话人特征向量。现成的预训练流程和模型会从 Hugging Face 下载。
要开始使用,我需要安装什么?先安装 ffmpeg——torchcodec 解码音频需要它——然后运行 pip install pyannote.audio 或 uv add pyannote.audio。
预训练流程能用之前,我需要先有 Hugging Face 账号吗?需要——在拉取预训练流程之前,要先同意 pyannote/speaker-diarization-community-1 的用户协议,并在 hf.co/settings/tokens 创建一个 Hugging Face 访问令牌。
文档是最新的吗,教程会不会误导我?自带的教程是针对旧版本 pyannote.audio 写的,已标注需要更新,所以有些内容可能和当前 API 对不上。
它支持实时流式音频吗?流式语音活动检测有社区贡献的版本,但社区贡献的核心团队明确不负责维护,所以只能算尽力而为,不要指望稳定支持。
我可以往里面添加自己的模型或自定义任务吗?可以——教程里专门讲了如何添加新模型和新任务,用它自己的架构来扩展这个工具包本身就是官方支持的使用方式。
What are similar projects?speechbrain, silero-vad, transformers, Speech, jeff, TTS, FunASR, airllm
Creator
pyannote
Size
259.9 MB
Stars
10.7K
Age
10y
Commits · 90 Days