What each Umay feature does, when to use it and how to turn it on
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.
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.
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).
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.
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:
Option
Default
Effect
dialect_correction
on
”istiyom gari” becomes “istiyorum artık”; off keeps it as spoken
place_correction
on
”Baba Eski” becomes “Babaeski”; off keeps it as heard
abbreviations
off
On: “43 dk”, “30 GB”. Off: “43 dakika”, “30 gigabayt”
partial text on live audio is not formatted, only final is.
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.
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=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.
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=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=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.
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.
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.
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.