Speaker diarization and speaker identification for transcripts
Speaker diarization labels who said what in a recording. Add diarize: true to a request and get Speaker 1, Speaker 2 labels on every segment. Use it for interview transcription or uploaded meeting recordings.
- Speaker 1, Speaker 2 labels on every segment
- Labels in JSON, text, SRT and VTT
- Works for YouTube links and uploaded files
How it works
- One option
- diarize defaults to false. Set it to true on POST /v1/transcriptions, or pass diarize to the MCP transcribe tool.
- AI transcription only
- Speaker labels need speech-to-text. With source set to auto, diarize: true skips YouTube captions and goes straight to it.
- Labels in every format
- transcript.speakers, each segment's speaker field, a Speaker 1: prefix in text and SRT, and a voice tag in VTT.
- Word-level speakers
- Add include=words to a JSON read to get per-word timings, each with its speaker.
- Clear errors
- source: captions together with diarize: true is rejected with 422 invalid_request instead of silently ignoring one.
Request
Use the speaker diarization API
Set diarize to true in the request body. To transcribe audio with speakers from a file, send the same option as a form field.
{
"platform": "youtube",
"url": "https://youtu.be/dQw4w9WgXcQ",
"source": "stt",
"diarize": true
}JSON
Speakers on every segment
transcript.speakers lists the labels and each segment names its speaker. transcript_source is speech_to_text because captions carry no speaker information.
{
"status": "completed",
"transcript_source": "speech_to_text",
"transcript": {
"speakers": ["Speaker 1", "Speaker 2"],
"segments": [
{ "start": 0, "end": 3.4, "speaker": "Speaker 1", "language": "en", "text": "Good morning." },
{ "start": 3.4, "end": 7.9, "speaker": "Speaker 2", "language": "en", "text": "Thanks for having me." }
]
}
}SRT and VTT
Speaker labels in SRT and WebVTT files
format=srt prefixes the cue text with Speaker 1:. format=vtt uses a voice tag. format=text gives one labeled line per segment.
WEBVTT
00:00:00.000 --> 00:00:03.400
<v Speaker 1>Good morning.
00:00:03.400 --> 00:00:07.900
<v Speaker 2>Thanks for having me.Start with 60 free minutes
60 free minutes after you verify your email. No card required.
Frequently asked questions
Something missing? Ask support
How are speakers named?
As Speaker 1, Speaker 2 and so on. transcript1 does not know real names, so map the labels to people in your own code.
Do YouTube captions have speaker labels?
No. Captions do not say who is speaking. With source set to auto, diarize: true uses AI transcription instead of captions. Combining source: captions with diarize: true is rejected.
Does speaker diarization cost extra?
No. A transcription costs one credit per media minute, rounded up, with or without diarize.