UDGAM LABS · Speech-to-text model · 55.9M parameters · part of the Shruti family
Shruti Telugu
Shruti Telugu turns Telugu and English speech into text, offline, from one 29.7 MB file. Telugu comes out in Telugu script and English words stay in English, the way people actually type: హైదరాబాద్లో కొత్త company నుంచి offer letter వచ్చింది. It runs on a phone, a laptop or inside a web page, with no server and no internet connection. On a 2021 Samsung Galaxy F62 it transcribes 9.8x faster than real time using 64 MB of memory.
On everyday Telugu conversations that mix in English, scored with the English words written in English letters, it makes fewer errors than IndicConformer Telugu (137.7 MB), a model almost five times its size, and than the Whisper Telugu fine-tunes we tested, up to 32 times its size. On read Telugu those larger models are more accurate (see below). Shruti Telugu is the Telugu member of the Shruti family, next to Shruti Hindi, Shruti Marathi, Shruti Tamil and Shruti Bengali, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on openly licensed Telugu and English speech and added 700 Telugu vocabulary pieces.
Shruti (శ్రుతి) is Sanskrit for "that which is heard".
Try it: in your browser, on your own device · demo on Hugging Face · Code and examples: github.com/udgamlabs/shruti
Audio (Telugu with English, AI voice) Shruti Telugu writes (in the phone's browser, unedited)
"హైదరాబాద్ లో కొత్త company నుంచి..." -> హైదరాబాద్లో కొత్త company నుంచి offer letter వచ్చింది monday నుంచి join అవ్వాలి
"...ఆరు గంటల first show కి..." -> రేపు ఉదయం ఆరు గంటల first షోకి నాలుగు tickets దొరికాయి అందరూ ముందే theatre దగ్గర ఉండండి
(The first line shows one spacing difference: హైదరాబాద్ లో written as one word. The second shows a real error of a common kind: "show" written in Telugu script.)
| Developer | Udgam Labs |
| Base model | Shruti Hindi (Udgam Labs), built on Cactus Whistle (Cactus Compute); both Apache-2.0 |
| Parameters | 55.9M (55,875,913; 8 encoder + 8 decoder layers, width 512) |
| File | shruti-telugu.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine |
| Input / output | 16 kHz audio of any length → text; Telugu in Telugu script, English words in lowercase Latin |
| Languages | Telugu, English, and Telugu mixed with English. For Hindi use Shruti Hindi; for Marathi, Shruti Marathi; for Tamil, Shruti Tamil; for Bengali, Shruti Bengali |
| Runtime | Cactus needle engine (Apache-2.0), native and WebAssembly; we measured it on a Mac, an Android phone and that phone's Chrome |
| Licence | Apache-2.0 |
Quick start
pip install cactus-needle
hf download udgamlabs/shruti-telugu shruti-telugu.cact config.json --local-dir .
from needle import Whistle
model = Whistle("shruti-telugu.cact")
print(model.transcribe("clip.wav")) # Telugu or English is detected automatically
The cactus-needle Python package sends anonymous usage counts by default; set NEEDLE_TELEMETRY=0 to turn that off.
Command line: ./needle --model shruti-telugu.cact --audio clip.wav with the needle binary for your platform from
Cactus-Compute/needle3. In the browser, the wasm/ build of the same
engine runs it inside a web page; udgamlabs.com/models/shruti is a
working page.
Results
Word error rate (%, lower is better), 200 clips per set, the same clips and scorer for every model; Shruti Telugu in its on-device engine on a Mac. Measured 2 November 2026. Size is the file as published by its makers (whisper.cpp q8_0 for Whisper).
| Model | File size | FLEURS (read) | Kathbath test-unknown (read) | DiarBench, English in English (conversation, held out) | DiarBench, native reference |
|---|---|---|---|---|---|
| Shruti Telugu | 29.7 MB | 38.0 | 32.9 | 45.4 | 58.0 |
| Whisper tiny | 43.5 MB | 687.8 | 583.3 | 659.1 | 665.9 |
| Vosk Telugu (small, 0.42) | 60.5 MB | 77.1 | 80.1 | 93.8 | 92.0 |
| Whisper base | 81.8 MB | 220.1 | 363.3 | 371.3 | 375.5 |
| Dolphin base (int8) | 103.7 MB | 73.4 | 66.2 | 86.9 | 90.3 |
| IndicConformer Telugu (int8) | 137.7 MB | 24.5 | 23.0 | 52.9 | 37.3 |
| Whisper-tiny Telugu (vasista22) | 151.1 MB | 34.2 | 34.4 | 59.2 | 47.5 |
| Dolphin small (int8) | 249.7 MB | 60.9 | 52.6 | 98.0 | 98.7 |
| Whisper small | 264.5 MB | 169.7 | 154.1 | 201.1 | 205.1 |
| Whisper-base Telugu (vasista22) | 290.5 MB | 28.9 | 29.5 | 55.3 | 41.3 |
| SraVaani-1.0 | 908.8 MB | 22.0 | 20.3 | 47.8 | 33.0 |
| Whisper-small Telugu (vasista22) | 967.1 MB | 24.0 | 26.0 | 55.7 | 42.7 |
DiarBench is real conversation that mixes in English. The "English in English" column scores against references that write English words in English (Latin script), as Shruti Telugu does; the native column drops the English words from the reference. FLEURS and Kathbath are read Telugu.
- Conversations that mix in English: Shruti Telugu makes fewer errors than IndicConformer Telugu (45.4 vs 52.9; paired 95% interval of the difference -10.7 to -4.5 points), the Whisper-small Telugu fine-tune (55.7; -13.5 to -7.1), the Whisper-base Telugu fine-tune (55.3; -13.1 to -6.9) and the Whisper-tiny Telugu fine-tune (59.2; -16.9 to -10.6). The much larger SraVaani-1.0 is level with it (47.8; -5.8 to +0.5). On the native reference, most larger models are ahead.
- English inside Telugu: Shruti Telugu writes 53.7% of DiarBench's 1,016 English words in English; IndicConformer Telugu, Vosk Telugu and the Whisper Telugu fine-tunes write none (0%), SraVaani-1.0 4.6%, and the other models above 20% or fewer.
- Against Vosk Telugu (about twice its size): about half the errors on every set (FLEURS 38.0 vs 77.1, Kathbath 32.9 vs 80.1, DiarBench 45.4 vs 93.8).
- One file for two languages: IndicConformer Telugu and Vosk Telugu are Telugu-only. Shruti Telugu also transcribes English: LibriSpeech test-clean 6.22 (Shruti Hindi: 5.95).
- Silence: 0 words invented on 100 silent clips.
- Held-out sets: we did not train on FLEURS or DiarBench, or on Kathbath's unseen-speaker test set.
Speed and memory (offline): Samsung Galaxy F62 (2021, 6 GB RAM), native engine, 9.8x faster than real time, 64 MB peak memory (20 clips). In that phone's Chrome, the page reports 2.9-4.5 s on the device for 6.8-9.0 s of speech.
Where it falls short
- Read Telugu accuracy. IndicConformer Telugu (about 5x larger) makes about 36% fewer errors on FLEURS (24.5 vs 38.0) and 30% fewer on Kathbath (23.0 vs 32.9); SraVaani-1.0 (about 30x larger) and the Whisper-base and Whisper-small Telugu fine-tunes are ahead on both read sets, and the Whisper-tiny Telugu fine-tune is ahead on FLEURS (34.2).
- Conversations on the native reference. When English words are dropped from the reference, most larger models are ahead (SraVaani-1.0 33.0, IndicConformer Telugu 37.3, Shruti Telugu 58.0): Shruti Telugu keeps English words in English, which that reference leaves out.
- English words in Telugu script: only about half of the English words come out in English letters; others are written in Telugu script ("show" as షోకి, "online" as ఆన్లైన్లో).
- Joins and spelling variants count as errors and are common (తంగేడు పూలు as తంగేడుపూలు, ఆడుదాం as ఆడదాం, కొండ ఎక్కుదాం as కొండెకుదాం).
- Loud noise: Shruti models sometimes repeat a phrase over and over in loud noise (9 of 3,400 clips at 5 dB on an everyday-speech test, measured on Shruti Hindi-family models, not on Telugu).
- Names it has never heard are spelt by sound. Not tested on Telugu: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words.
How it was trained
- Start: Shruti Hindi (itself a full fine-tune of Cactus Whistle). We added 700 Telugu vocabulary pieces and used Shruti Hindi's language tag for Telugu, then trained all weights with 4-bit quantisation-aware training.
- Data: openly licensed Telugu speech, with English words kept in English where the dataset marks them, plus English from Shruti Hindi's own training data. Test speakers and test sentences were removed.
| Source | Licence |
|---|---|
| AI4Bharat IndicVoices, Telugu | CC-BY-4.0 |
| AI4Bharat Kathbath, Telugu | CC-BY-4.0 |
| ARTPARK-IISc Vaani, Telugu (transcribed part) | CC-BY-4.0 |
| English from Shruti Hindi's training data: LibriSpeech, Mozilla Common Voice 17 English, AI4Bharat NPTEL | CC-BY-4.0, CC0, CC-BY-4.0 |
Intended use and limitations
For transcribing Telugu and English speech on devices where privacy, cost or connectivity rule out a cloud service: voice notes, dictation, voice commands, captions, field apps. Not for high-stakes use (medical, legal) without human review. Accuracy drops on noisy audio, strong accents, rare names, numbers and long technical English.
Licence
Apache-2.0. Shruti Telugu is a modified version of Shruti Hindi (Udgam Labs) and of Cactus Whistle by Cactus Compute
(both Apache-2.0); see NOTICE. The training data licences are listed above; please credit the datasets if you build on
it.
Citation
@misc{udgamlabs2026shrutitelugu,
title = {Shruti Telugu: offline speech-to-text for Telugu and English in 29.7 MB},
author = {{Udgam Labs}},
year = {2026},
url = {https://huggingface.co/udgamlabs/shruti-telugu}
}
About Udgam Labs. Udgam Labs is an independent AI research lab. We work from first principles: before we build, we understand why things work, whether we are training a model, fine-tuning one or applying AI to a new problem. Udgam (उद्गम) is Sanskrit for origin. udgamlabs.com