A labelled transcript needs both answers right, and because labels sit on top of the words, a wrong one can be fixed without touching the text.
A transcript of a meeting answers two questions at once: what was said, and who said it. A reader sees one job, a name beside a line. Underneath are two problems, each with its own inputs and its own ways of failing.
Speech recognition listens for words. It turns audio into text and, when done well, gives a start and end time for every word. It does not care whether the voice changed halfway through a sentence; its job is to get the sentence right.
Speaker diarization listens for voices. It knows no words. Its job is to divide the timeline into turns and say which turns belong to the same person: Speaker 1, Speaker 2. The word is borrowed from "diary", and that is a fair picture of the output: a log of who held the floor, and when.
Three neighbouring terms get mixed up with it. Diarization says who spoke when, without knowing anyone. Speaker identification says which known person a stretch of speech belongs to, choosing from a set of enrolled voices. Speaker verification answers a yes-or-no question: is this voice really person X? Vendor claims become easier to read once the three are kept apart, because "speaker labels" can mean anything from a rough guess at turn boundaries to names that follow a person from one recording to the next. To see what those labels can and cannot promise, look inside the diarizer.
Most diarization systems work in three steps, none involving language.
Each step can go wrong on its own. A quiet speaker is missed. Two similar voices are merged. One person who shifts from calm to animated is split in two.
The field scores all of this with the diarization error rate, DER: the share of speech time that was missed, falsely detected as speech, or attributed to the wrong speaker, usually with a forgiveness collar of about a quarter of a second around every boundary. The collar exists because nobody, human or machine, can place a speaker change to the millisecond. That tolerance is fine for scoring a diarizer on its own. It is not fine for a transcript, where a boundary that is a quarter of a second off lands on a word.
This is where the two problems meet, and where the quality of a labelled transcript is decided. A diarizer places its boundaries with some imprecision, often a fraction of a second either way. A recogniser places words on the same timeline. Lay the two over each other naively and a boundary lands inside a word, so half of "tomorrow" belongs to Speaker 1 and the other half to Speaker 2.
Labels can also be wrong for a while before they are right. A diarizer grows more sure of its groups the more audio it has heard, so an early label can look wrong by the standards of what comes later. On a live transcript a label can be revised after a line is shown: VocalStack's realtime API sends a transcript.amended frame that corrects the text or speaker of a committed line in place, so a reader sees the revision rather than a contradiction.
Even a perfectly placed, perfectly stable label is still only a number. A number is enough to follow a conversation; a name is what people want to read.
A label becomes a name in two ways, and they build on each other.
The first is naming within a recording. Every speaker a transcription finds gets an index, counted from 0. Anyone with access can name each speaker during or after the recording. The name is a layer over the words, so it can be set, changed or cleared without touching the text. Over the API that is PUT /v1/recordings/{id}/speakers/{idx} with a name; an empty name clears it. A line whose speaker is -1 has no label, either because labels were off or, in a live draft, because the line has not been attributed yet.
The second is recognition across recordings, the identification problem from the first section. A diarizer can only say that two voices are different, never who they are. To get from "different" to "this is Ana", the system needs a reference: a saved voice, taken from a recording of that one person. Thirty seconds of clean speech is the minimum, and a few minutes is better. The sample should also sound like the recordings it will be matched against: the same person on a laptop microphone and on a stage microphone can sound less alike to a machine than two strangers recorded the same way. Once a voice is saved, every speaker a transcription hears is compared against it, and a match carries the name into the transcript. In VocalStack this lives under Voices; file transcriptions and Dashboard live sessions match your saved voices automatically, and a realtime API session recognises only the voices you list in identifyVoices.
A saved voice is biometric data: it can recognise a person in any recording, and in VocalStack it also doubles as a clone that can read their lines aloud. The Dashboard asks you to confirm you have the person's permission before saving one, and a voice can be deleted at any time.
All of this assumes you want labels at all. Often you don't.
A single person reading a lecture does not need "Speaker 1" in front of every line. The audience already knows who has the microphone. So the speaker-labels setting has three positions, and they are the same on a realtime session, a broadcast, a transcription and a recording.
auto in the API). Lines are labelled with their speaker once more than one voice is heard; a one-speaker recording stays plain text, and a second voice that joins late is still picked up. The Dashboard's new live transcription form starts here.A file upload takes the same speakerLabels option, and the realtime API lets you change it mid-stream; the details are in the API reference. Speaker separation and naming never add to the bill (the pricing page has the rate card), so the choice is about what the reader should see, not what it costs.
Switched on, diarization is good but not magic. Two situations still beat it.
The first is overlap. When two people talk at once, one stretch of audio carries two voices. Overlap-aware diarizers exist in research and, increasingly, in products: end-to-end neural diarization (EEND), for example, treats "who is speaking" as a set of simultaneous yes-or-no questions rather than one answer. Most production systems, though, still assign one speaker per stretch, and the recogniser on top of them transcribes one voice at a time. Crosstalk in a heated panel is the hardest audio in the field, and every vendor's labels get worse there. It is also, reliably, the part everyone wants to quote afterwards.
The second is very similar voices. Siblings can produce embeddings too close to separate reliably, all the more when they trade short turns for an hour. Telephone audio makes this worse for everyone: a narrowband line is sampled at 8 kHz and carries nothing above about 3.4 kHz, yet much of what distinguishes one voice from another lies above that cut-off. Two people on the same phone line sound more alike to a diarizer than they do to you.
The most practical remedy for both is upstream of any model: give each person their own microphone. With one channel per speaker, diarization is reduced to asking which channel is loud, overlap becomes two clean tracks instead of one muddy one, and the embeddings are never asked to do the hard part. A single table microphone is cheaper and almost always what you have, which is why the rest of this article exists.
Neither limit has to reach the reader unchanged. Because labels are a layer over the words, a wrong label never costs you the text: speaker names can be set or cleared on a recording at any point, and in a live transcription the host can rewrite any word or line while it is still running, with every fix marked and undoable.
For the words side, what word error rate measures and what it misses covers the correction layers in detail; WER is to the recogniser what DER is to the diarizer, and a transcript needs both to be low.