Turn podcasts, interviews, and meetings into anonymous speaker-labeled segments. The API can preserve overlapping timestamps when simultaneous speech is detected.
Example: Speaker Diarization + Optional Word Timestamps
B
09:51.152 → 09:58.352
This is essentially diarization.
A
10:03.392 → 10:05.552
The system isn't just listening to words…
B
10:15.024 → 10:16.964
Even in a chaotic multi person meeting.
{"speaker_id":"A"}
Sentence-level excerpts shown here use both Parse Speakers and Parse Words. Diarization alone adds speaker_id to each transcript segment.
Turn One Mixed Recording into Speaker-Attributed Segments
The example above uses verbatim lines and word-level timestamps from a completed transcription job in which two text-to-speech hosts reviewed Speech is Cheap's own changelog.
Enable It with One Flag
Set can_parse_speakers to true when you create a transcription job.
Represent Detected Overlap
When simultaneous speech is detected, different speakers can have crossing timestamps instead of being cut at an invented midpoint.
Use Standard or Split-Channel Mode
Group mixed audio by voice, or assign one speaker per channel for recordings that already separate the participants.
Receive Structured Speaker Segments
Each speech segment includes an anonymous speaker_id together with its start, end, confidence, language, and text.
API Example
Enable Speaker Diarization in One Request
Use the asynchronous Jobs v2 API for a public media URL, direct upload, webhook delivery, or streamed output.
{
"id": "019cecbf-fa71-7440-b948-f0653fb4d058-sic",
"status": "COMPLETED",
"output": {
"segments": [
{
"id": 98,
"start": 591.152,
"end": 598.352,
"speaker_id": "B",
"language": "en (99.90%)",
"confidence": 0.992,
"processing_duration_in_s": 0.029,
"text": "This is essentially diarization. It analyzes the audio and figures out exactly who said what, isolating the text by speaker."
},
{
"id": 99,
"start": 598.352,
"end": 602.432,
"speaker_id": "A",
"language": "en (99.60%)",
"confidence": 0.951,
"processing_duration_in_s": 0.024,
"text": "And you know, diarisation is incredibly taxing from a computational standpoint."
}
]
}
}
This is an excerpt from a real completed job with 198 speaker-labeled segments. Speaker parsing also works with word timestamps, audio labels, webhooks, and chronological SSE output.
The pipeline combines speech detection, speaker embeddings, spectral clustering, and overlap analysis to group recurring voices across long recordings.
Find Speech First
Speech regions are isolated before speaker analysis so silence and other non-speech audio do not distort the result.
Compare Voice Characteristics
Speaker embeddings measure voice characteristics across the recording instead of relying on sentence breaks.
Reconnect Returning Speakers
The clustering stage is designed to keep the same anonymous label when a voice returns later in the recording.
Preserve Likely Overlap
Likely simultaneous turns receive additional analysis so detected overlap can remain visible in the timestamps.
Multiple Speaker Modes
Match the API to How Your Recording Was Captured
Diarize two speakers or more in mixed conversations, or use split-channel parsing when your source already isolates each participant.
Mixed Audio
Voice-Based Diarization
Use can_parse_speakers when multiple people appear in the same mixed recording. Segments are assigned anonymous speaker labels based on the speaker's voice.
"can_parse_speakers":true
Multi-Channel Audio
Split-Channel Parsing
Use is_split_channel when each speaker has a dedicated channel, as in many call-center or multi-track recordings. The API assigns one speaker to every available channel, including supported recordings with more than two channels.
"is_split_channel":true
Built for Recurring Multi-Speaker Transcription
Turn conversations into structured records your application can search, display, summarize, or pass to downstream systems.
Customer and sales calls
Keep agent and customer turns separate in call recordings, especially when each side is captured on its own channel.
Podcasts and interviews
Create readable transcripts that preserve host, guest, and interviewer turns across long-form recordings.
Meetings and discussions
Represent a multi-person conversation as chronological, speaker-labeled segments for later processing.
Research and media archives
Add speaker structure to recorded interviews, panels, oral histories, and other searchable audio collections.
Transparent Add-On Pricing
Pay for Speaker Parsing Only When You Use It
The Parse Speakers add-on is billed in addition to the core transcription rate.
Pay as You Go
$0.002per audio minute
$0.12 per hour for the speaker diarization add-on.
Core transcription: $0.002 per minute
Speaker parsing: an additional $0.002 per minute
No subscription commitment
Best for Volume
Subscriber
$0.001per audio minute
$0.06 per hour for the speaker diarization add-on.
$20 per month includes 21,600 transcription minutes
Speaker parsing: an additional $0.001 per minute
Core overage: $0.000926 per minute
Optional add-ons are billed separately. You are charged only for successfully completed transcriptions.
Design your integration around the output the API actually returns.
Labels, not identities
The API returns anonymous labels such as A and B. The documented output does not return a participant's name or a known-speaker identity match.
Non-speech may have no speaker
When speaker parsing is combined with the Label Audio add-on, a music, silence, or other non-speech segment may return an empty speaker_id.
Split-channel assumes one speaker per channel
Use split-channel parsing only when the recording layout matches that assumption. Otherwise, use voice-based diarization on the mixed audio.
Use Jobs v2
Speaker parsing is exposed by the asynchronous Jobs v2 API. The current Edge v2 request parameters do not include can_parse_speakers.
Speaker Diarization API Questions
Implementation details developers usually need before integrating.
What is speaker diarization?
Speaker diarization separates a conversation into speech segments and assigns an anonymous speaker_id, such as A or B, to each segment. It answers “who spoke when” without identifying a person by name.
How do I enable speaker diarization?
Create a Jobs v2 transcription request with can_parse_speakers set to true. The completed JSON output will include speaker_id on each speech segment.
How does the API represent overlapping speech?
Different speakers are allowed to have overlapping timestamps. When the diarizer finds simultaneous turns, one segment may end after the next segment begins instead of forcing both voices to meet at an artificial midpoint.
Does diarization identify speakers by name?
No. The API returns anonymous labels such as A and B. Your application may associate those labels with names when it has separate, reliable information about the participants.
What is split-channel speaker parsing?
For multi-channel recordings where one speaker is isolated on each channel, set is_split_channel to true. The API assigns one speaker to every available channel, including supported recordings with more than two channels.
Can I combine diarization with word timestamps and audio labels?
Yes. Jobs v2 accepts can_parse_speakers, can_parse_words, and can_label_audio in the same request. When speaker parsing and audio labels are combined, a non-speech segment may have an empty speaker_id.
How much does the speaker diarization add-on cost?
The Parse Speakers add-on costs $0.002 per audio minute for pay-as-you-go customers and $0.001 per audio minute for subscribers. Core transcription is billed separately.
What inputs can I diarize?
Jobs v2 accepts a publicly accessible file URL or a direct file upload. Inputs must be between six seconds and 24 hours long; direct uploads may be up to 2 GiB. See the supported file types.
Add Speaker Labels to Your Next Transcript
Choose a plan, get your API key, and set can_parse_speakers to true.