Label Who Spoke When with Speaker Diarization
How to Label Who Spoke When with Speaker Diarization
1
Download the models, once
About 33 MB the first time, then cached in your browser. After that the tool works with the network off, because nothing is being sent anywhere.
2
Drop in your recording
Audio or the audio track of a video. An interview, a panel, a meeting, a podcast — anything with more than one voice in it.
3
Say how many speakers, if you know
Useful if you know it, because it is the one thing you can tell the tool that the recording does not say outright. It does not force the answer — a group still has to actually hold the floor somewhere to count as a person, which is what stops a number you half-remembered from inventing speakers. If you do not know, leave it on “Work it out” and use the sensitivity slider instead: lower splits one person into several, higher merges two people into one.
4
Listen, correct, name people, export
Read the timeline first — a speaker who appears once for two seconds in the middle of someone else’s lane is almost always a mistake, and seeing it is the point of drawing it. Click any block to hear that turn. If you asked for the transcript, click a word and shift-click another to select a run and give it to the right person; that is where boundary errors get fixed. Type real names over “Speaker 1”, then download the timeline as RTTM, SRT or CSV, or the transcript as a speaker-labelled script.
What this is
Drop in a recording with several people in it and this works out how many voices are present and when each of them is talking. You get a timeline with one lane per speaker, talk-time totals, and — if you want the words as well — the whole conversation transcribed and split into speaker-labelled paragraphs. All of it is correctable: click a block to hear that turn, rename the speakers to their real names, and select any run of words that landed on the wrong person and move it. Export as RTTM, a subtitle track, a spreadsheet, or a speaker-labelled script. The audio never leaves your device.
How it works
This is two neural networks and a clustering step, all running in your browser. pyannote’s segmentation model — the open-source standard for this task — listens in ten-second windows and marks when each voice is active, including moments where two people talk over each other. That only tells us where the speech is, though, not whose it is: the model is trained so that its speaker slots are meaningful only inside one window, so “speaker 1” at 30 seconds and “speaker 1” at 40 minutes are unrelated. Identity comes from the second network, a speaker-embedding model that turns each excerpt into a few hundred numbers describing the voice itself, so that two excerpts from the same person land close together and two from different people land apart. Those excerpts are then grouped by how similar they sound, and the groups become the speakers you see. Excerpts where two people are talking at once are deliberately left out of that comparison — a blend of two voices sits between them and would pull the grouping apart — though the overlap is still shown on the timeline.
Credits
The research this tool runs on, credited in full — with BibTeX and licence notices — on the credits page.
- Alexis Plaquet and Hervé Bredin. 2023. Powerset multi-class cross entropy loss for neural speaker diarization. In Proceedings of INTERSPEECH 2023.Read the paper
pyannote powerset segmentation
MIT - Hervé Bredin. 2023. pyannote.audio 2.1 speaker diarization pipeline: principle, benchmark, and recipe. In Proceedings of INTERSPEECH 2023.
pyannote.audio
MIT - Hongji Wang, Chengdong Liang, Shuai Wang, Zhengyang Chen, Binbin Zhang, Xu Xiang, Yanlei Deng, and Yanmin Qian. 2023. Wespeaker: A Research and Production oriented Speaker Embedding Learning Toolkit. In Proceedings of ICASSP. arXiv:2210.17016.Read the paper
WeSpeaker
Apache-2.0 - Yafeng Chen, Siqi Zheng, Hui Wang, Luyao Cheng, Qian Chen, and Jiajun Qi. 2023. An Enhanced Res2Net with Local and Global Feature Fusion for Speaker Verification. In Proceedings of INTERSPEECH 2023. arXiv:2305.12838.Read the paper
ERes2Net
Apache-2.0 - Yafeng Chen, Siqi Zheng, Hui Wang, Luyao Cheng, Tinglong Zhu, Rongjie Huang, Chong Deng, Qian Chen, Shiliang Zhang, Wen Wang, and Xihao Li. 2024. 3D-Speaker-Toolkit: An Open-Source Toolkit for Multimodal Speaker Verification and Diarization. arXiv:2403.19971.Read the paper
3D-Speaker
Apache-2.0 - Arsha Nagrani, Joon Son Chung, and Andrew Zisserman. 2017. VoxCeleb: a large-scale speaker identification dataset. In Proceedings of INTERSPEECH 2017. arXiv:1706.08612.Read the paper
VoxCeleb
CC BY 4.0 - Alec Radford, Jong Wook Kim, Tao Xu, Greg Brockman, Christine McLeavey, and Ilya Sutskever. 2022. Robust Speech Recognition via Large-Scale Weak Supervision. arXiv:2212.04356.Read the paper
Whisper
MIT - Joshua Lochner and the Hugging Face team. Transformers.js: State-of-the-art machine learning for the web.
Transformers.js
Apache-2.0 - ONNX Runtime developers. 2021. ONNX Runtime: Cross-platform accelerated machine learning.
ONNX Runtime
MIT
Supported formats
WAV, MP3, M4A, AAC, OGG and FLAC. Files are decoded by your browser, so anything it can play will work here. MP4 and MOV video work too — the audio track is read and the pictures ignored. There is no audio output: the speaker timeline is exported as an .rttm file, an .srt subtitle track, or a .csv of the turns.
Frequently asked questions
- What is speaker diarization?
+−What is speaker diarization?
It answers “who spoke when”. Given one recording containing several people, it returns a timeline of turns labelled by speaker: this stretch is person A, this stretch is person B. It does not identify who those people *are* — it has no idea of anyone’s name — it only works out that the same voice keeps coming back, and groups it. Putting names to the groups is the one step it needs you for, and takes a few seconds.- How accurate is it?
+−How accurate is it?
It depends enormously on the recording, and it is worth being blunt about the range. Clean audio with two or three people taking clear turns — an interview, a scripted podcast, a remote call recorded well — is genuinely good. Meeting-room audio picked up by one microphone in the middle of a table is usable but will need corrections. Chaotic real-world video with music, crowds and constant crosstalk is close to a coin flip, and no diarization system available today is much better on that material. The published benchmarks for the pipeline this is built on report roughly 11% error on clean web video and around 50% on in-the-wild footage, and ours is somewhat behind those numbers because it trades accuracy for running on your own machine rather than a server. Treat it as a first pass you correct, which is why the timeline is editable.- How many speakers can it handle?
+−How many speakers can it handle?
There is no fixed limit on how many people can be in the recording — accuracy just falls off as the number climbs, and telling it the count helps more the higher that number gets. There is one real limit: at most three people can be talking *simultaneously* at any given instant. That is a constraint of the segmentation model, and in practice it is rarely the thing that goes wrong.- Does it work on languages other than English?
+−Does it work on languages other than English?
Yes. Telling voices apart is about the sound of a voice rather than the words in it, so the models are far less language-dependent than transcription is. The fixture used to check this build during development is Mandarin, and it separates the speakers cleanly.- What is an RTTM file?
+−What is an RTTM file?
The standard format for speaker timelines — one line per turn, giving the start time, duration and speaker label. Every diarization scoring tool and research dataset reads it, so if you want to check these results against a reference annotation, or feed them into another pipeline, RTTM is the one to take. Choose SRT instead if the timeline is going into a video editor as a caption track, or CSV if you want to count and chart who talked how much.- Two people talk over each other — who gets those words?
+−Two people talk over each other — who gets those words?
Nobody reliably, and the tool says so rather than pretending. Transcription hears one mixed signal rather than each person separately, so when two voices collide it writes down whichever was louder and the other person’s words are simply missing — there is no second version to choose between. Those words are marked with a dotted underline in the transcript and bracketed in the exported text, so you can see exactly which passages not to trust, listen to them, and retype them if they matter. Anyone claiming to cleanly split the words of simultaneous speakers is doing something much harder than this, and usually not doing it well.- The speaker changes a word or two late. Can I fix that?
+−The speaker changes a word or two late. Can I fix that?
Yes, and it is the correction you will make most. Turn boundaries are only accurate to about half a second, which at normal speaking rate is one to three words landing on the wrong side of every change of speaker. Click the first word that is wrong, shift-click the last, and give the run to the right person — it joins the paragraph above or below and the exports follow.- Why does the talk time add up to more than the recording is long?
+−Why does the talk time add up to more than the recording is long?
Because overlapping speech is counted for everyone who is talking. If two people speak over each other for ten seconds, that is ten seconds on both of their totals. It is the honest answer — they both did talk — but it means the percentages can exceed 100 on a recording with a lot of crosstalk.- Can it transcribe the words as well?
+−Can it transcribe the words as well?
Yes — turn on “Transcribe the words too” before you run it. It finds the speakers first, then transcribes, then attaches every word to whoever said it, and you get the conversation as speaker-labelled paragraphs you can read and correct. It is off by default because it adds a one-off ~290 MB model download, and plenty of people only want to know who talked and for how long.- I asked for four speakers and only got three. Why?
+−I asked for four speakers and only got three. Why?
Because a group only becomes a speaker if it actually wins time on the timeline. Asking for four splits the voices into four groups, but if one of those groups never holds the floor anywhere, it is dropped rather than reported. That is deliberate — forcing a count should not be able to invent people who are not in the room. If you are sure there are four, try lowering the sensitivity slider on “Work it out” instead.- Is my audio uploaded anywhere?
+−Is my audio uploaded anywhere?
No. Everything runs inside your browser using the Web Audio API, so the file never leaves your device. You can prove it: load the page, turn off your Wi-Fi, and the tool still works.- Do the models really run on my machine?
+−Do the models really run on my machine?
Yes, and you can check. The two models are downloaded once — about 33 MB together — and cached by your browser. After that you can disconnect from the network entirely and the tool still labels a recording, because there is no server involved in the work. The download is the only network request it ever makes.- Does this use AI?
+−Does this use AI?
Yes, and two of them. pyannote’s segmentation model finds when each voice is active, and a speaker-embedding model — you can pick between ResNet34, the more accurate, and ERes2Net, about a third faster — decides which voice is which. Both are neural networks and both run on your own device. The clustering that turns their output into a timeline is ordinary maths, not a model.- Do I need an account?
+−Do I need an account?
No. The free tools work straight away with no sign-up, up to 15 minutes of audio per tool per day. An account is only needed if you subscribe to remove the limit.- Is it free?
+−Is it free?
Yes. Every tool on this page is free to use, with a daily limit on total audio processed. There is no watermark and no trial period.- How long a recording can I label?
+−How long a recording can I label?
Five minutes per file on the free tier, and 15 minutes of audio a day across all your runs. A longer file is not refused — the first five minutes are labelled and the rest is skipped, which the page tells you before it starts. Bear in mind that a five-minute excerpt is diarized on its own terms: if someone only speaks in the second half of a meeting, they will not appear, and the speaker numbering will not match a full-length run.
Other free audio tools
- Remove Silence From Audio
- Separate a Song Into Stems with AI
- Convert MP3 to WAV and WAV to MP3
- Bleep Out Words in an Audio File
- Split a Stereo File Into Two Mono Files
- Chain Audio Edits and Run Them in One Pass
- Merge Audio Files Into One
- Remove Background Noise From Audio with AI
- Transcribe Audio to Text with AI
- Add a Fade In and Fade Out to Audio
- Normalize Audio Volume to a LUFS Target
- Detect Sounds in Audio and Get Timestamps
- Free Text to Speech — Download as MP3 or WAV
- Free AI Voice Cloning — In Your Browser, Nothing Uploaded
- Make a Spectrogram From Audio