Indian language AI
Indian language AI, measured honestly.
Twenty-three Indian languages can be transcribed and translated to English through one endpoint. Eleven of them have a published voice to answer in. That gap is the most useful thing on this page, so it is the first thing on it — along with every model id, language code and price behind the claim.
- 23
- languages transcribed and translated
- 11
- languages with a voice to reply in
- 5
- transcripts of the same Hinglish audio
What works in which language
This is two published lists printed side by side, not a marketing summary. The transcription column carries the saaras:v3 language codes from the model's own allowlist; the voice column is the set of codes bulbul:v3 accepts. Where there is a code, you can paste it straight into a request — filter the table to see where the two columns diverge.
All 23 languages
| Language | Native | Transcribe (saaras code) | Translate to English | Speak it back (bulbul code) |
|---|---|---|---|---|
| Hindi | हिन्दी | hi-IN | Yes — mode=translate | hi-IN |
| Bengali | বাংলা | bn-IN | Yes — mode=translate | bn-IN |
| Gujarati | ગુજરાતી | gu-IN | Yes — mode=translate | gu-IN |
| Kannada | ಕನ್ನಡ | kn-IN | Yes — mode=translate | kn-IN |
| Malayalam | മലയാളം | ml-IN | Yes — mode=translate | ml-IN |
| Marathi | मराठी | mr-IN | Yes — mode=translate | mr-IN |
| Odia | ଓଡ଼ିଆ | od-IN | Yes — mode=translate | od-IN |
| Punjabi | ਪੰਜਾਬੀ | pa-IN | Yes — mode=translate | pa-IN |
| Tamil | தமிழ் | ta-IN | Yes — mode=translate | ta-IN |
| Telugu | తెలుగు | te-IN | Yes — mode=translate | te-IN |
| English (India) | English | en-IN | Yes — mode=translate | en-IN |
| Urdu | اُردُو | ur-IN | Yes — mode=translate | No voice published |
| Assamese | অসমীয়া | as-IN | Yes — mode=translate | No voice published |
| Bodo | बड़ो | brx-IN | Yes — mode=translate | No voice published |
| Dogri | डोगरी | doi-IN | Yes — mode=translate | No voice published |
| Kashmiri | کٲشُر | ks-IN | Yes — mode=translate | No voice published |
| Konkani | कोंकणी | kok-IN | Yes — mode=translate | No voice published |
| Maithili | मैथिली | mai-IN | Yes — mode=translate | No voice published |
| Manipuri | ꯃꯅꯤꯄꯨꯔꯤ | mni-IN | Yes — mode=translate | No voice published |
| Nepali | नेपाली | ne-IN | Yes — mode=translate | No voice published |
| Sanskrit | संस्कृतम् | sa-IN | Yes — mode=translate | No voice published |
| Santali | ᱥᱟᱱᱛᱟᱲᱤ | sat-IN | Yes — mode=translate | No voice published |
| Sindhi | سنڌي | sd-IN | Yes — mode=translate | No voice published |
A voice agent needs both halves, so it covers the 11 rows with a code. The remaining 12 are still useful — transcribe the call, translate it, reply over WhatsApp or email. Every code in the table is from the model allowlists; leave the language field out of a transcription request and the model detects it.
Pick a language, get the three requests
Transcribe and translate work for every row. The third request only exists where a published voice takes the language code — on the other rows the honest answer is text, not audio.
curl -X POST https://api.callmissed.com/v1/audio/transcriptions \
-H "Authorization: Bearer cm_your_key" \
-F file=@call.wav \
-F model=saaras:v3 \
-F language=hi-IN-F language=hi-IN
curl -X POST https://api.callmissed.com/v1/audio/transcriptions \
-H "Authorization: Bearer cm_your_key" \
-F file=@call.wav \
-F model=saaras:v3 \
-F language=hi-IN \
-F mode=translate-F language=hi-IN -F mode=translate
curl -X POST https://api.callmissed.com/v1/audio/speech \
-H "Authorization: Bearer cm_your_key" \
-H "Content-Type: application/json" \
-d '{"model": "bulbul:v3", "voice": "shubh", "language": "hi-IN", "input": "Your text here", "response_format": "mp3"}' \
--output speech.mp3-d '{"language": "hi-IN", …}'
Nobody speaks only one language in one sentence
A customer says "bhaiya woh order cancel kar do please" and every word of it matters. The mode field on saaras models decides which of five transcripts you get back from that one recording — you do not have to choose a different model or a different product.
-F mode=transcribe
Standard transcription. The default when you send nothing.
One recording comes back as
मेरा ऑर्डर कब डिलीवर होगा?
Simulated example — your transcript depends on your audio.
-F mode=translate
Transcribe and translate the result to English.
One recording comes back as
When will my order be delivered?
Simulated example — your transcript depends on your audio.
-F mode=verbatim
Exact transcription, filler words left in.
One recording comes back as
उम्म… मेरा ऑर्डर, वो, कब डिलीवर होगा?
Simulated example — your transcript depends on your audio.
-F mode=translit
Transliteration into Latin script.
One recording comes back as
mera order kab deliver hoga?
Simulated example — your transcript depends on your audio.
-F mode=codemix
Code-mixed output — the Indic and English words each kept as they were spoken.
One recording comes back as
मेरा order कब deliver होगा?
Simulated example — your transcript depends on your audio.
See every mode with a worked request · Audio translation reference
The models that carry the claim
Eight ids, three surfaces, one API key. Each line is the claim the reference makes for that model, not a summary of it. Prices come from the same table that bills the request.
Speech to text
saaras:v3Free tier
23 languages with auto-detection, all five output modes, and 8 kHz telephony audio.
$0.3125 / hour
saaras:v4Free tier
The docs state 24 languages and all five modes on one model, but do not name the twenty-fourth.
$0.3125 / hour
India-first telephony transcription across 10 Indian languages, with code-switching.
$0.2813 / hour
Text to speech
bulbul:v3Free tier
37 voices across 11 language codes. Every voice speaks every code.
$0.3125 / 10K chars
Native-quality Hindi and Hinglish among 44 languages, with five named native Hindi speakers.
$0.5208 / 10K chars
73 voices across English, Hindi and other Indian languages, tuned for telephony.
$0.2813 / 10K chars
LLM
sarvam-105bFree tier
A 105B mixture-of-experts model for reasoning in Indic languages, with a 128K context.
$0.3646 in · $0.3646 out / 1M tokens
sarvam-105b-conversationsFree tier
The same family tuned for spoken dialogue, which is what a voice agent turns on.
$0.3646 in · $0.3646 out / 1M tokens
Six things to know before you build
Indic language support has edges, and every one of these is written down in the reference. Reading them now is cheaper than finding them in production.
01
Twelve of these languages can be heard, not spoken.
Transcription and translation cover all twenty-three. The text-to-speech catalogue names voices for eleven. Until that changes, an Urdu or Santali caller can be understood and answered in text, but not answered out loud.
02
One model does not do both halves.
Speech recognition, synthesis and reasoning are three different models chosen per request. A voice agent names one of each, and the languages it truly handles are the ones where both the transcriber and the voice support them.
03
Two code conventions, not one.
bulbul:v3 takes region codes such as hi-IN and ta-IN. sonic-3.6 takes base codes such as hi and en. Sending the wrong shape is the most common first-request mistake.
04
ink-2 covers Hindi but no other Indic language, and fails quietly.
It accepts en, fr, hi, ja and es. Send Tamil or Bengali audio and it does not raise an error — it just transcribes badly. Use saaras:v3 or saaras:v4 for the other Indian languages, and ink-whisper where you need broad non-Indic coverage.
05
No expressive markup on the Indic voices.
bulbul:v3 and gnani-timbre-v2.0 do not support SSML or pause markup. An ellipsis written for a dramatic pause gets read out as dots. Shape delivery with temperature and with the humanize field instead.
06
A live call keeps the language it started with.
Session configuration is fixed once a voice session begins, so the language cannot be switched mid-call. Route to a second agent instead of trying to change it in place.
Indian language AI questions
Which Indian languages does the speech to text API support?
saaras:v3 covers 23 languages: Hindi, Bengali, Gujarati, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu, Urdu, Assamese, Bodo, Dogri, Kashmiri, Konkani, Maithili, Manipuri, Nepali, Sanskrit, Santali, Sindhi and English. It detects the language itself if you leave the language field out, and it handles 8 kHz telephony audio. saaras:v4 is documented as covering 24.
Can the AI speak back in every language it understands?
No, and it is worth knowing before you design around it. Text to speech names voices for 11 language codes on bulbul:v3 — hi-IN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, od-IN, pa-IN, ta-IN, te-IN and en-IN. The other 12 are transcription and translation only today.
How is Hinglish and code-switching handled?
With the mode field on saaras models. codemix returns the Indic and English words each in the script they were spoken in, translit returns the whole utterance in Latin script, translate returns English, and verbatim keeps the filler words. One field, five different transcripts of the same audio.
What does Indian language AI cost?
Speech to text on saaras:v3 is $0.3125 / hour, billed on true audio duration. Text to speech on bulbul:v3 is $0.3125 / 10K chars. sarvam-105b is $0.3646 in · $0.3646 out / 1M tokens. All three are on the free tier.
Can a phone call run in an Indian language end to end?
Yes, where the language has both a transcriber and a voice. A voice agent names an STT model, an LLM and a TTS model plus a BCP-47 language such as hi-IN, and the default voice is shubh. The language is fixed for the duration of that session.
Do I need a different API for each language?
No. It is the same endpoint and the same cm_ API key throughout — the language is a field in the request body, not a different product. Switching from Hindi to Tamil is a one-word change.





