On-device-first Indic speech: 23 languages, streaming, offline-ready
Natural text-to-speech for two dozen Indian languages that can run directly on the device when offline use, privacy, or local responsiveness matters. On tested phones, the first generated audio chunk arrives in roughly 300–400 milliseconds, depending on language. The same engine is also available through managed and self-hosted server deployments. Mobile performance depends on the phone’s CPU; older or lower-powered phones may take longer to start playback and need more buffering.
Article snapshot
23
Indic languages
300–400 ms
First generated chunk
Offline
On-device synthesis
24 kHz
Waveform output
Startup time depends on the phone’s CPU. Older devices may need more buffering before playback.
Why on-device
Most production text-to-speech today is stuck behind a cloud API. For regional voice agents, accessibility products, and embedded edge devices, that brings three immediate bottlenecks: network latency, privacy risk, and per-character billing that explodes at scale.
We built our engine to run the entire speech pipeline directly on the device when an offline or private deployment is needed. It delivers natural, streaming speech across 23 Indic languages plus English, with the first generated audio chunk arriving in roughly 300–400 milliseconds, depending on language on tested phones. The same speech engine can also run through our managed API or inside a customer’s own infrastructure.
What we built
Building on Pocket-TTS by Kyutai, we developed an Indic speech system focused on multilingual text, natural pronunciation and streaming playback. Our work includes language-specific text processing, Indic training and voice cloning.
The datasets used for our Indic training to date are entirely open datasets. They provide the foundation for the current model’s language coverage.
From text to speech
A simple listening experience
- 01
Your text
Indian scripts, English, numbers and everyday terms.
- 02
Spoken form
Prepare the text for a natural spoken reading.
- 03
Streaming audio
Start listening while the rest is generated.
Choose a preset voice or create a voice profile from a clean recording.
1 · Indic text understanding
Our TTS system is designed to read Indian text as people write it — combining languages, numbers and everyday technical terms within the same passage:
- Multilingual speech: handles sentences that combine Indian scripts and English, such as “आज का meeting 3:30 बजे, పని త్వరగా complete చేయాలి”.
- Indian numbers and currency: reads amounts expressed in lakhs and crores, including currency values such as ₹1,23,456.75.
- Everyday and technical content: supports spoken readings of dates, units, abbreviations, phone numbers and formulas such as
E = mc².
| Case | Input | Spoken as |
|---|---|---|
| Indian-format money & units | ₹1,23,456.75 में 15 किलो | one lakh twenty-three thousand… fifteen kilo |
| Dates & 24-hour time | 15/09/2026, 09:00 | the fifteenth of September… nine o'clock |
| Ranges vs. hyphens | 10-20 units, 16-bit | ten to twenty… sixteen bit |
| Phone numbers | +91 98765 43210 | read digit by digit, not as a quantity |
| Chemistry | H2O, NaCl, 2H2 + O2 -> 2H2O | H two O, N A C L, … to … |
| Equations | a^2 + b^2 = c^2, E = mc^2 | a squared plus b squared equals c squared |
| Abbreviations & initials | Dr. Rao, M.G. Rd., Apt. 4B | doctor Rao, M G road, apartment four B |
| Code-mixing | आज का meeting 3:30 बजे है | spoken naturally, script by script |
Try the hard cases
Everyday Indian text does not arrive as clean, single-language prose. The live demo includes examples that exercise the cases people actually paste into a product: mixed scripts, Indian-format amounts, dates and times, contact details, abbreviations, chemistry and equations.
Mixed scripts
आज का meeting 3:30 बजे है, పని త్వరగా complete చేయాలి
Money and units
₹1,23,456.75 में 15 किलो
Technical text
H2O, NaCl, a^2 + b^2 = c^2
Contact details
Dr. Rao, M.G. Rd., PIN 500081
Open the live demo and select an edge-case chip to hear the result. Native scripts are best when available; the engine also accepts ordinary code-mixed text and identifies the appropriate language as it reads.
2 · Streaming speech
Speech starts playing while the rest is still being generated, so listeners can begin hearing a response before the whole passage is ready. The same streaming experience supports short replies and longer text. For longer passages, the engine carries speech forward across natural text boundaries while playback is already under way.
The 300–400 ms timing cited here measures time to the first generated audio chunk on an internal OnePlus Nord CE4 test device, which uses Qualcomm’s Snapdragon 7 Gen 3 Mobile Platform. It does not include the device-specific playback buffer: audible playback begins after that initial PCM has been buffered. Performance depends on language, CPU workload and buffering policy; older or lower-powered phones may take longer to start playback.
3 · Zero-shot on-device voice cloning
Create a voice profile from a short reference recording and use it to generate speech in supported languages, without training a separate model for that speaker. In the on-device version, the reference recording is processed locally.
What matters most is clean audio: a single speaker, free of background noise and music, ideally in a quiet room. Give it at least a few seconds; the engine uses up to about 10 seconds of that clip to build the profile, so a clean ~10-second recording is ideal. The app flags potential recording-level problems to help you choose a cleaner reference.
Voice similarity: cloning is designed to preserve the reference speaker’s vocal character. How closely the generated voice matches depends on the recording quality, the speaker and the target language. Accent, rhythm and emotional expression can vary.
1
Reference audio
Use a clean recording of one speaker.
2
Voice profile
The app prepares the profile on the device.
3
Generate speech
Use the profile with supported language text.
The benchmark below uses preset voices and measures transcription error rates and predicted speech quality. It does not measure voice-cloning similarity.
23 Indic languages, plus English
Assamese, Bengali, Bhojpuri, Bodo, Chhattisgarhi, Dogri, Gujarati, Hindi, Kannada, Konkani, Magahi, Maithili, Malayalam, Manipuri, Marathi, Nepali, Odia, Punjabi, Rajasthani, Sanskrit, Santali, Tamil, Telugu — plus English.
Pick a language and voice, or let the engine auto-detect from the text. Real Indian text is rarely monolingual — and often not even bilingual — so the engine speaks whatever mix of languages it's given. A single sentence can weave three or more languages together — Devanagari, Telugu and English in one breath — and each is spoken correctly.
How we compare
We compared Pramiteeh with Sarvam Bulbul v3 on all 1,265 prompts in the high-quality track of Sarvam’s public TTS benchmark: 115 per language across 10 Indian languages and English. Both systems received the same input text. We used our language-specific female voices and Sarvam’s Shubh voice at the tested settings.
Sarvam Saaras v3 transcribed both sets of recordings for word and character error scoring. DNSMOS P.808 separately estimated speech quality. The benchmark code, prompts and recorded results are available for inspection and reruns; model or service updates can change future results.
How we measured
Same prompts, shared scoring
1,265 identical input texts
115 per language · 10 Indian languages + English
Pramiteeh
Language-specific female voices
Sarvam Bulbul v3
Shubh voice
Score both sets of generated audio
ASR transcription → WER / CER
Sarvam Saaras v3 transcribes each clip; compare the transcript with the input text.
DNSMOS P.808 → predicted quality
A separate model estimates speech quality directly from each recording.
| Metric | Pramiteeh | Sarvam Bulbul v3 | Read |
|---|---|---|---|
| Corpus word error rate ↓ | 25.1% | 29.6% | Lower at the tested settings |
| Corpus character error rate ↓ | 17.4% | 22.8% | Ours |
| Predicted quality (DNSMOS) ↑ | 3.7 | 4.1 | Sarvam scores higher |
A comparison limitation
Our recordings were longer
Mean audio duration across the same 1,265 prompts, including pauses.
Pramiteeh’s recordings averaged 19.08 seconds versus 15.11 seconds for Sarvam, a 26.3% total-duration difference. The files include both speech and generated pauses or silence. We did not measure articulation rate and silence separately, so this result cannot say whether the additional duration comes from slower speech, longer boundaries or trailing silence.
At these settings, Pramiteeh had lower word and character error rates, while Sarvam scored higher on predicted speech quality.
By language, Pramiteeh had lower WER in 8 of 11 languages. Sarvam had lower WER in Tamil, Malayalam and English, and higher DNSMOS P.808 scores across all 11:
| Language | WER % ↓ | DNSMOS ↑ | ||
|---|---|---|---|---|
| Ours | Sarvam | Ours | Sarvam | |
| Hindi | 20.8 | 28.2 | 3.61 | 4.12 |
| Bengali | 25.6 | 28.0 | 3.64 | 4.09 |
| Telugu | 27.2 | 36.0 | 3.72 | 4.10 |
| Tamil | 29.6 | 27.9 | 3.75 | 4.11 |
| Marathi | 21.1 | 25.7 | 3.82 | 4.10 |
| Gujarati | 35.9 | 44.0 | 3.62 | 4.12 |
| Kannada | 17.1 | 30.2 | 3.54 | 4.09 |
| Malayalam | 34.4 | 30.0 | 3.53 | 4.09 |
| Odia | 27.4 | 31.1 | 3.69 | 4.07 |
| Punjabi | 24.0 | 34.3 | 3.85 | 4.11 |
| English | 14.2 | 9.8 | 3.76 | 4.13 |
Coverage: 1,265 matched clips per system, with 115 prompts in each of 10 Indian languages plus English. WER and CER aggregate edit counts across the corpus. The same ASR and text-normalization procedure were used for both systems. Full data and code: the benchmark repository.
What we’re working on next
We are moving toward custom-curated datasets to improve emotional expression, natural prosody and vocalizations such as laughter. These are development goals for future versions.
Hear it yourself
Type or paste anything — including the hard cases above — and hear it stream back live.