1. Provide the audio
Choose one:
Any audio format ffmpeg can read works. The first audio stream is used; channels are mixed down.
- Uploaded files are kept for 24 hours after upload, so you can use the same
file_idfor more than one transcript in that time, and are deleted within the following 24 hours (24 to 48 hours after upload). Deleting a transcript deletes its uploaded file right away. - An
audio_urlmust be public or presigned, without credentials in the URL. Up to 5 redirects are followed (each must stay on a public address), and the download must finish within 15 minutes.
2. Create the transcript
metadata (up to 16 KB) is echoed back on the transcript and in webhooks. language_code is optional: en (the default) or a regional English code: en-US, en-GB (or en-UK), en-AU, en-CA, en-IN, en-IE, en-NZ, en-ZA, en-SG, en-PH, en-HK, en-NG or en-KE. For best results, use the one that matches the speakers’ locale or accent. The transcript reports language_code: en. Multilingual support is planned.
timing_mode sets the timestamp style for words and utterances: phrase (the default) or region.
Key terms
keyterms lists words and short phrases that may be spoken in the audio, such as people’s names, company and product names, and jargon. The model is more likely to recognize them.
- Up to 60 key terms, each at most 6 words and 50 characters.
- The text stays verbatim and lowercase with numbers spelled out, so a key term appears as it is spoken: “GPT-4” as “gpt four”.
- List only terms that may come up. A key term can occasionally be written where a similar-sounding word was said.
- The transcript echoes the list as
keyterms.
Large meetings
For recordings with many active speakers, typically more than 7 to 9, such as large team meetings, panels, town halls and hearings, setlarge_meeting to true:
- It improves speaker attribution when many people take part. Processing may take a little longer.
- Leave it off (the default) for typical meetings and conversations: the default is tuned for them.
- The transcript echoes
large_meeting: true.
3. Get the result
Wait for a webhook or pollGET /v1/transcripts/{id}, adding ?wait=120 so each request returns as soon as the transcript finishes.
To do it all in one request, send the audio to POST /v1/transcribe: it uploads, creates the transcript and answers with the finished result (or 202 if it takes longer than wait, up to 120 s).
The result
- Times are seconds from the start of the audio.
- Speakers are numbered in order of first speech and are consistent within one transcript only.
- Overlapping speech produces overlapping utterances.
- Audio with no speech completes with empty
text,utterancesandwords.
GET /v1/transcripts/{id}/subtitles?format=srt.
Speaker names
With AirCaps Speaker ID-v1 enabled on your account, a transcript can put names on its speakers. Enroll the people you expect to hear, then addspeaker_identification to the create request:
"speaker_identification": true uses both defaults.
The completed transcript then has:
speakerlabels stayspeaker_0,speaker_1, … in every field; names are added next to them. Subtitles show the names.- A speaker without a match has
speaker_id: nulland still lists its closestmatches, so you can apply your own rule. - Two speakers can get the same name, for example when one person was split into two speakers.
- A speaker with too little speech to compare isn’t compared (
matchesis empty). speaker_identification.statusispendinguntil the transcript completes. If speaker identification is unavailable, the transcript still completes, without names, withstatus: "failed"and anerror; create it again to retry. Speakers deleted before the transcript runs are skipped.- No extra usage: the transcript counts its audio duration, as always.
Choosing a threshold
A speaker gets a name when their best match among your enrolled speakers has a similarity score of at leastthreshold (0 to 1). The default, 0.6, works best for most recordings. Adjust it to what works best for your audio:
- Raise it when a wrong name is costly, or when many people who aren’t enrolled may speak.
- Lower it (for example to 0.5) when everyone who may speak is enrolled and you’d rather name more speakers.
- Good enrollments matter as much as the threshold: follow Enrollment audio: what works best and limit
speaker_idsto the people who could be present.
Without access to AirCaps Speaker ID-v1, requests with
speaker_identification return 403 model_access_denied. The named speaker_ids must exist and have at least one enrollment (404 speaker_not_found, 400 speaker_not_enrolled), and without speaker_ids your account needs at least one enrolled speaker (400 no_enrolled_speakers). Voice data rules apply: see Privacy and consent.Delete
DELETE /v1/transcripts/{id} cancels a running job or deletes a finished transcript and its stored result. Transcripts are otherwise deleted after 30 days.
