Captioning Two Speakers: Voice Spans, Names and Dashes
Automatic captions transcribe words, not speakers. How WebVTT marks who is talking, what SRT can do instead, and what conversion does to both.
Two people talking is where automatic captions quietly stop being useful. The words are right, the timing is right, and a viewer still cannot tell who said what, because speech recognition transcribes speech and nothing in a plain transcript says the speaker changed.
Interviews, podcast clips and any back-and-forth need that information on screen. How you put it there depends on which file format you are in, and the two formats are not equally equipped.
WebVTT has a tag for it
WebVTT marks the speaker with a voice span:
WEBVTT
00:00:01.000 --> 00:00:03.000
<v Priya>So where did you land on the pricing?
00:00:03.000 --> 00:00:06.000
<v Sam>Honestly, nowhere yet.The name goes in the tag rather than in the caption text. A player that understands voice spans can style each speaker differently, or show the name, or ignore it. The important part is that the speaker is structured data instead of characters the viewer has to read.
SRT has nothing, so the name goes in the text
SRT has no speaker markup, so the name has to become part of the caption. Two conventions are in wide use. Name the speaker with a colon:
2
00:00:03,000 --> 00:00:06,000
Sam: Honestly, nowhere yet.Or use a dash per speaker when two people share one cue and the names are already obvious from the video:
3
00:00:06,000 --> 00:00:09,000
- Fair enough.
- We can revisit it.Names are clearer when your viewers do not know the voices, which is usually the case for an interview posted to a feed. Dashes cost fewer characters, which matters on vertical video where the line limit is tight.
What happens when you convert
Converting WebVTT to SRT has to do something with those voice spans, because SRT cannot hold them. Passing them through unchanged is the worst option and it is a common one: the viewer ends up reading <v Priya>So where did you land with the markup in the caption.
Our VTT to SRT converter turns each voice span into the name prefix instead, so the speaker survives in a form SRT can display, and it tells you it did:
Converted 3 speaker voice spans into a "Name:" prefix,
because SRT has no voice markup.When one cue holds two speakers, each one starts a new line, which is how subtitles have always shown two people talking in a single cue. Italic, bold and underline are left alone, because SRT players generally handle those. WebVTT-only tags such as class spans and language spans have their markup removed and their text kept.
Getting the labels right in the first place
Automatic transcription gives you the words, not the speakers, so the labels are a pass you do by hand. Three things make that pass shorter.
Label the change, not every cue. A viewer needs the name when the speaker switches. Repeating it on every cue in a long answer just spends characters you need for the words.
Settle each name once. If the same person appears as Sam, SAM and Sam K. across a file, the captions read as careless in exactly the way a misspelled word does. The spelling checker finds a name written more than one way and replaces it across every cue without touching timing.
Check the length after labelling, not before. A name plus a colon can be ten characters, which is enough to push a line past the limit on vertical video. The validator reports the lengths and the line breaker re-breaks what is over.
Which format to keep
If the video plays on the web and the player reads WebVTT, keep WebVTT as the master and export SRT from it when a platform needs one. The voice spans survive in the master and convert cleanly on the way out.
If everything you publish takes SRT, put the names in the text from the start and skip the round trip. To build the caption track from the video, start in the caption generator, review the wording, then add the labels before you export.
Quick answers
How does WebVTT mark who is speaking?
By tagging it rather than typing it. The speaker's name lives in the markup, ahead of what they say, which leaves a player free to style each voice differently, print the name, or ignore it altogether. The name is data the player can act on instead of characters the viewer has to read past.
How do you show speakers in an SRT file?
You write it into the words, because there is nowhere else to put it. Two habits are common: prefix the line with the name and a colon, or give each speaker a dash when they share a cue. Names help an audience who cannot yet match voices to faces; dashes cost fewer characters, which matters when the frame is vertical and the limit is tight.
What happens to voice spans when I convert WebVTT to SRT?
That depends entirely on the tool. The bad outcome is a converter that copies the tag across as text, leaving your audience reading markup. A careful one turns the tag into a name the format can actually display, gives each speaker in a shared cue its own line, and tells you how many it changed so you can check.
Should I label every cue with the speaker name?
No. Label the change of speaker. A viewer needs the name when the speaker switches, and repeating it through a long answer spends characters that the words need.
Do speaker labels affect line length limits?
More than people expect. Prefixing a speaker costs roughly ten characters before a single word of dialogue, which on a vertical frame is a meaningful share of the budget. Measure after the labels go in, never before, or you will be checking a line that no longer exists.