Mean DER, 7 evaluation sets
Speaker count withheld from both systems. Lower is better.
Precision-3
14.8%
Nova-3
53.2%
72%
relative reduction in diarization error rate
Diarization became the workload
The product used to need a readable transcript. Now it needs speaker turns that downstream logic can trust, so the diarizer gets evaluated on its own terms rather than as a transcription setting.
Speaker accuracy sets the ceiling
Diarization runs before summarisation, sentiment and analytics. A speaker confusion at second 40 propagates into everything built from that transcript, and no downstream model recovers it.
Known speakers need names, not indices
Anonymous labels are scoped to one recording. Tracking returning agents or recurring participants needs enrollment and voiceprints so the same person carries the same identity across sessions.
DER is the aggregate duration of missed detection, false alarm and speaker confusion, divided by total speech. Full results: pyannote.ai/benchmark.
Speaker intelligence is step two: audio input, speaker intelligence, transcription, business logic, text-to-speech, audio output. Inside that step, the model runs VAD to filter silence and noise, segmentation to detect speaker changes, embedding to build a neural voiceprint per segment, and clustering with attribution. The output is speaker turns, speech detection, and a speaker count that the rest of the pipeline can rely on.
01
02
03
04
05
06
Combining diarization and transcription through STT orchestration improves tcpWER, which penalises transcription and speaker attribution errors. The gains concentrate where traditional pipelines fail: overlapping speech, noisy channels, and more than a handful of participants.
Because pyannote runs alongside any STT provider, including Deepgram, adopting it is not a transcription migration.
Diarization runs as a parameter on the transcription request, not a separate endpoint. It assigns a numeric speaker label to each word and is compatible with all Nova batch models (Nova-1, Nova-2, Nova-3), enhanced, and base. Whisper is not supported.
Model version is controlled by the `diarize_model` parameter, which both enables diarization and selects the version: `latest, v2` (batch only), or `v1` (batch and streaming). The older `diarize=true` boolean is deprecated. Streaming accepts `v1` or `latest` only — `v2` returns a validation error.
Batch output carries `speaker` and `speaker_confidence` per word; streaming returns `speaker` only. Labels are numeric and scoped to the request, with no documented enrollment or cross-session identity layer.
DER on your own audio: Vendor benchmarks describe public datasets; your audio predicts your result.
Overlap handling: Whether cross-talk is modelled or inferred from a word timeline.
Speaker count behaviour: Estimated, hinted, or capped, and what happens above your expected count.
Timestamp precision: Word-aligned ASR boundaries are coarser than boundaries from a segmentation model.
Streaming latency: Time to a stable label, not time to first token.
Deployment: Cloud, on-premises, edge, air-gapped, and where audio and voiceprints are stored.
Pricing unit: Per minute, hour, or concurrent stream, and whether diarization and identification are add-ons.
Build one test set that matches production: your accents, your noise floor, your real overlap rate, and the participant count you see on a bad day. Ten hours of representative audio beats a hundred hours of clean audio.
Run every provider on that same set with the same scoring tooling and the same handling of collar and overlap, and write the methodology down before you see results. Further reading: the benchmark and how to evaluate speaker diarization performance.