Conclave Docs

Diarization

Who spoke when, anonymously — diart (live) and TD, our own post-pass model.

Diarization answers who spoke when — as anonymous speaker labels (Speaker 1, Speaker 2), never names. Naming is a separate, consented step (voiceprints). This is the load-bearing boundary: Capture emits {start, end, local_speaker} and nothing else.

Two engines

EngineWhenWhereAccuracy (DER)Notes
diartLive, streamingCPU~0.190our streaming diarizer; drives the on-screen live preview
TDPost-meeting, authoritativeGPU~0.088our own trained model (WavLM-based); overwrites the live labels with the accurate pass

The live path shows a diart preview immediately; after the meeting, the authoritative TD post-pass re-diarizes for accuracy, then hands spans to VFTEE for identity.

How a meeting resolves

Live
diart + ASR
in-person mic · live preview
Finalize
Post-pass
TD
Authoritative spans
our GPU model
VFTEE
identify-spans
scoped + consented names
Merge
[speaker] text
merge by timestamp → enrich

The headline is the merged transcript

Diarization quality is judged by the merged [speaker] text transcript, not DER in isolation: Whisper (what was said) runs alongside the diarizer (who said it), and the two are merged by timestamp. A great DER with a garbled merge is still a bad transcript.

Our models & the managed fallback

TD is our own model — we trained it (WavLM-based) so the authoritative post-pass runs on a model we own end to end. diart is the firm choice for the real-time path; TD is post-pass only. While we scale our own models on TEE GPUs, a managed engine (Deepgram) currently serves as a temporary fallback so every meeting still gets an accurate diarized transcript. Ongoing diarization work is tracked as P0: diarization.

On this page