---
title: "Voices and languages"
description: "The ten languages synthesis supports, how voice ids work across them, and how to find the voice you want."
---

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

# Voices and languages

Every synthesis request names a language, and optionally a voice. The two are
independent: **a voice is an identity, not a recording**, so the same voice id
resolves to that voice speaking whichever language you asked for. The same
voice id with `"lang": "hi"` and with `"lang": "ta"` gives the same speaker in
different languages. You never send a language-specific voice name, just the
voice id plus your target language.

> **What this makes possible**
>
> A multilingual product can keep one voice constant across every language it
> serves. The same brand voice reads Hindi, Tamil, and Bengali without you
> maintaining a per-language mapping table, and adding a language means
> changing `lang` and nothing else.

## Languages

| Language | Code |
| --- | --- |
| Bengali | `bn` |
| English | `en` |
| Gujarati | `gu` |
| Hindi | `hi` |
| Kannada | `kn` |
| Malayalam | `ml` |
| Marathi | `mr` |
| Odia | `or` |
| Tamil | `ta` |
| Telugu | `te` |

> **Note**
>
> These are bare language codes, so `hi` rather than `hi-IN`. Transcription
> models use a different naming scheme entirely, so do not reuse a value across
> the two APIs.

## Voices

**Every named voice is available in all ten languages.** The id is the same in
each, so you send the id plus your target language and get the same speaker
reading whichever language you asked for.

`voice` is optional. Omit it and the request uses `default_female` for the
language you asked for.

| Voice | Languages | Notes |
| --- | --- | --- |
| `achu` | All ten |  |
| `ammu` | All ten |  |
| `anirban` | All ten |  |
| `ann` | All ten |  |
| `arasi` | All ten |  |
| `ayesha` | All ten |  |
| `basava` | All ten |  |
| `basheer` | All ten |  |
| `bhavana` | All ten |  |
| `bijay` | All ten |  |
| `bimla` | All ten |  |
| `champa` | All ten |  |
| `chhotu` | All ten |  |
| `elango` | All ten |  |
| `faizal` | All ten |  |
| `falguni` | All ten |  |
| `flavia` | All ten |  |
| `gurdeep` | All ten |  |
| `harleen` | All ten |  |
| `imran` | All ten |  |
| `ipsita` | All ten |  |
| `jayita` | All ten |  |
| `jessy` | All ten |  |
| `kannan` | All ten |  |
| `kayal` | All ten |  |
| `kishan` | All ten |  |
| `mahadevi` | All ten |  |
| `malar` | All ten |  |
| `maria` | All ten |  |
| `merin` | All ten |  |
| `mukta` | All ten |  |
| `murugan` | All ten |  |
| `nasrin` | All ten |  |
| `nayeema` | All ten |  |
| `netra` | All ten |  |
| `nila` | All ten |  |
| `ponni` | All ten |  |
| `porkavi` | All ten |  |
| `rukhiya` | All ten |  |
| `rukhsana` | All ten |  |
| `savio` | All ten |  |
| `selvi` | All ten |  |
| `shabnam` | All ten |  |
| `sharon` | All ten |  |
| `shikha` | All ten |  |
| `shivanna` | All ten |  |
| `srinu` | All ten |  |
| `sulaiman` | All ten |  |
| `tanaji` | All ten |  |
| `temjen` | All ten |  |
| `vanaja` | All ten |  |
| `vetri` | All ten |  |
| `xavier` | All ten |  |
| `yasmin` | All ten |  |
| `zoya` | All ten |  |

Each voice carries its own speaking-rate default, so two voices reading the
same text at the same `speed` setting will not run for exactly the same
duration. Omit `speed` to use the voice's own.

> **Check the library before you ship a voice**
>
> The list above is what the service carried when this page was written.
> Voices are loaded from a deployment's own reference set and can be added
> without a release, so the platform's **Voice Library** is the current view,
> and the one scoped to your account. Sending a `voice` the language does not
> have returns a `400` that names every voice it does have.

## Using a voice

```json
{
  "text": "आपके खाते में पाँच हज़ार रुपये हैं।",
  "lang": "hi",
  "voice": "default_female",
  "output_format": "24000:pcm16"
}
```

```json
{
  "type": "hello",
  "lang": "hi",
  "voice": "default_female",
  "output_format": "24000:pcm16",
  "auth_token": "bd_xxxxxxxxxxxx.xxxxxxxx…"
}
```

An unrecognised voice id is rejected as a `400`. Treat voice ids as constants
in your code rather than as user input.

## Related

- [Non-streaming synthesis](/text-to-speech/non-streaming) — One call, complete audio.
- [Streaming synthesis](/text-to-speech/streaming) — Audio as the text arrives.

Source: https://docs.navana.ai/text-to-speech/voices/index.mdx
