Skip to main content
Navana is a text-to-speech provider built for Indian languages. It has two models and ten languages, and every voice speaks all ten, so the same voice can carry an agent across languages. Speech streams over a WebSocket held open for the call.

Quick config


Supported models

Both models cover the same languages and voices.

Supported languages

language is required. Region-qualified codes such as hi-IN are reduced to the primary subtag. Navana’s own code for Odia is or; Bolna sends od to Navana as or, so either works.

Voices

The default voice is default_female (display name Default Female). Navana also has 55 named voices, addressed by a lowercase voice_id with the capitalized name as voice, for example voice_id: "ayesha" with voice: "Ayesha": achu, ammu, anirban, ann, arasi, ayesha, basava, basheer, bhavana, bijay, bimla, champa, chhotu, elango, faizal, falguni, flavia, gurdeep, harleen, imran, ipsita, jayita, jessy, kannan, kayal, kishan, mahadevi, malar, maria, merin, mukta, murugan, nasrin, nayeema, netra, nila, ponni, porkavi, rukhiya, rukhsana, savio, selvi, shabnam, sharon, shikha, shivanna, srinu, sulaiman, tanaji, temjen, vanaja, vetri, xavier, yasmin, zoya. Every voice speaks every supported language, so voice and language are chosen independently: the same voice_id with language: "ta" is the same speaker reading Tamil. Each voice has its own speaking rate, and Navana takes no speed setting.

Key settings


How streaming works

A call opens one WebSocket to Navana, set up with the call’s language, voice and audio format. Navana renders each text frame it receives as its own utterance and has no flush, so Bolna holds the model’s reply until a sentence ends and sends each complete sentence as a frame. First audio arrives once the first sentence has been sent, while the rest of the reply is still streaming in. Navana has no cancel either. On interruption, if Navana still owes audio for the interrupted reply, Bolna closes that connection and opens a fresh one for the next turn, so no stale audio plays. If all of the reply’s audio has already arrived, the connection is kept. An invalid key, an unknown voice or exhausted Navana credits end the call with that reason. Temporary errors, such as a busy server or an idle timeout, reconnect instead.

Audio output

Bolna asks Navana for linear PCM at the call’s sample rate (8, 16 or 24 kHz), so no resampling is needed:
  • Telephony - Bolna mu-law encodes the 8 kHz audio itself
  • Web - played at the sample rate Navana rendered
Welcome messages, handoff and prewarm clips are generated with a one-shot HTTP call rather than the WebSocket.

FAQ

Start with navana-tts. Switch to navana-tts-fast if first-audio latency matters more than the last bit of quality.
Yes. Every Navana voice speaks all ten languages, so a multilingual agent can keep the same voice and change only language.
Yes, language is required. Region-qualified codes like hi-IN are reduced to hi for you.
Yes. Navana renders at the call’s sample rate, and Bolna mu-law encodes the audio for telephony.

  • Languages Tab - configure synthesizer in the dashboard
  • Maya - alternative Indian-language synthesizer
  • Sarvam - Indian-language synthesizer with per-language voices
  • Multilingual support - configuring language switching
  • Latency - how synthesis affects response time