Skip to main content
Every feature below is off unless the table says otherwise, and you turn it on per request. On files send the option as a form field, on live audio as a query parameter, and with the OpenAI SDK in extra_body.

At a glance

File transcription

Send a file, get the text. Any common format; long files are cut at quiet points and joined. This is the most accurate way. See Native API or OpenAI-compatible API.

Live transcription

Send audio over a WebSocket and receive partial text while the person speaks and final text when a sentence ends. Show partial as live text and send final to your language model. The sentence ends after about 0.8 s of silence, or at once when you send flush. See Native API (/v1/stream) or OpenAI-compatible API (/v1/realtime).

Asynchronous jobs

For long recordings the request does not have to stay open: send webhook_url, get a job id at once, and receive the result on your server. You can also read it with GET. Up to 4 hours of audio. Instead of uploading, file_url lets the server download the file. See Asynchronous transcription.

Number and text formatting

On by default (normalize=true). The final text is written the way people write it: “bin iki yüz elli lira” becomes “1.250 TL”. normalize=false returns the spoken words. In Turkish three more options work with it: partial text on live audio is not formatted, only final is.

Hints

Tell the recogniser which names and places to expect (Turkish). hints takes your own phrases, comma or newline separated; phrase :3 gives one phrase its own boost. hint_context adds a built-in list: mugla, izmir, manisa, aydin, denizli. Use it for customer names, street names and product names.

Language model

mode=normal makes file recognition with model=umay use the language model where the model has one. It takes about 40-60 % more processing time and helps most on clean read speech. The default mode=fast does not use it.

Gender detection

gender_detection=true gives each speaker’s gender with a confidence percent (50-100). On live audio it arrives about 2 s after speech starts and is updated later; it never delays the text.

Diarization

diarize=true labels who said what: S1, S2, … in order of appearance (A, B, … with OpenAI model names). max_speakers sets the upper bound (default 8). Use it for conversations in one channel.

Speaker lock

speaker_lock=true makes only the first speaker’s speech text; other voices come as ignored, so they do not reach your language model. Each segment carries similarity, how close that voice is to S1. lock_threshold sets how close it must be (0-1; higher is stricter).

Voice isolation

voice_isolation=true removes other voices before recognition (Turkish, German, French, Italian, Spanish, Russian). It switches on only after another voice is heard, so a single speaker, even in loud noise, gets the same text as without it. It does not remove noise as such; for an isolated recording use Audio isolation.

Reference voiceprints

Without a reference, speaker lock, voice isolation and diarization take the first voice they hear as S1. Store a person’s voice once (with their consent), then name it with reference_voiceprint: S1 is that person from the first second, even if someone else speaks first. The recording is not kept. See Reference voiceprints.

Speaker verification

Compares a recording with a stored voiceprint and answers match, uncertain or no_match, with a signed result your backend can trust.
A helper signal, not a login. It is not protected against recorded or synthetic voices. Use it together with other checks, never as the only way into an account.
See Speaker verification.

Audio isolation

Send a recording, get it back with background voices and noise removed; the duration stays the same. For a conversation recorded in one channel send remove_voices=false, otherwise the other party is removed too. Files only. See Audio isolation.