Features
Speaker Diarization
Detect distinct speakers in a recording and label every word and utterance with who said it.
Speaker diarization detects the distinct voices in a recording and attributes every word to one of them. Turn it on with a single flag, speaker_labels: true, on the create request. Speakers are labeled A, B, C, and so on in order of first appearance.
Quickstart
curl -s -X POST https://api.realtimevoicekit.com/v2/transcripts \
-H "Authorization: Bearer rtvk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://example.com/panel-discussion.mp3",
"speaker_labels": true
}'Then poll GET /v2/transcripts/{id} as in the quickstart until the status is completed.
Reading the response
With diarization on, the completed transcript carries two speaker views: utterances, an ordered list of speaker turns, and a speaker label on each entry in words. Timestamps are milliseconds.
{
"utterances": [
{
"speaker": "A",
"text": "Welcome back to the show. Today we are talking pricing.",
"start": 130,
"end": 4620,
"confidence": 0.98
},
{
"speaker": "B",
"text": "Great to be here. Let us dive right in.",
"start": 4980,
"end": 7410,
"confidence": 0.97
}
]
}A simple way to render a conversation:
for turn in transcript["utterances"]:
print(turn["speaker"] + ": " + turn["text"])Best practices
- Diarization works best when speakers talk in turns; heavy crosstalk lowers attribution accuracy.
- Clean, close-mic recordings separate voices better than distant or noisy ones.
- Give each speaker at least a few seconds of speech; very short interjections are harder to attribute.
- Labels are per transcript: speaker A in one file is not the same person as speaker A in another. Map labels to real names in your own application layer.