> ## Documentation Index
> Fetch the complete documentation index at: https://developers.mihu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Features

> 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`.

## At a glance

| Feature | What it does | Use it when | Option |
| - | - | - | - |
| [File transcription](#file-transcription) | Audio file to text | Recordings, most accurate | `model=umay` |
| [Live transcription](#live-transcription) | Text while the person speaks | Voice agents, calls | `model=umay-stream` |
| [Asynchronous jobs](#asynchronous-jobs) | Result arrives on your webhook | Long recordings | `webhook_url` |
| [Number and text formatting](#number-and-text-formatting) | Spoken words to written form | Almost always (on by default) | `normalize` |
| [Hints](#hints) | Favours names and places you give | Customer names, local places | `hints`, `hint_context` |
| [Language model](#language-model) | Extra language knowledge on files | Clean read speech | `mode=normal` |
| [Gender detection](#gender-detection) | Gender of each speaker with confidence | Routing, analytics, addressing | `gender_detection` |
| [Diarization](#diarization) | Who said what | Two or more speakers | `diarize` |
| [Speaker lock](#speaker-lock) | Only one person becomes text | Someone talks nearby | `speaker_lock` |
| [Voice isolation](#voice-isolation) | Removes other voices before recognition | Background voices | `voice_isolation` |
| [Reference voiceprints](#reference-voiceprints) | Follows a known person from the first second | Someone else may speak first | `reference_voiceprint` |
| [Speaker verification](#speaker-verification) | Is this the stored person? | A helper check in a call | `POST /v1/voiceprints/verify` |
| [Audio isolation](#audio-isolation) | Returns the recording without other voices and noise | Archives, listening, sharing | `POST /v1/audio/isolation` |

## 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](https://developers.mihu.ai/stt/native-api.md) or [OpenAI-compatible API](https://developers.mihu.ai/stt/openai.md).

## 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](https://developers.mihu.ai/stt/native-api.md) (`/v1/stream`) or [OpenAI-compatible API](https://developers.mihu.ai/stt/openai.md) (`/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](https://developers.mihu.ai/stt/async.md).

## 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:

| 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.

## 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.

```bash theme={null}
-F hints="Ali Yılmaz, Şirinyer, Karşıyaka :3" -F hint_context=izmir
```

## 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](#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](https://developers.mihu.ai/stt/voiceprints.md).

## Speaker verification

Compares a recording with a stored voiceprint and answers `match`, `uncertain` or `no_match`, with a signed result your backend can trust.

> [!WARNING]
>
> 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](https://developers.mihu.ai/stt/verification.md).

## 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](https://developers.mihu.ai/stt/isolation.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.