UDGAM LABS · Speech-to-text model · 55.9M parameters · part of the Shruti family
Shruti Tamil
Shruti Tamil turns Tamil and English speech into text, offline, from one 29.7 MB file. Tamil comes out in Tamil script and English words stay in English, the way people actually type: கல்யாணத்துக்கு catering order confirm பண்ணிட்டேன். 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 10.8x faster than real time using 64 MB of memory.
Of the open speech-to-text models under 100 MB that we measured, it is the most accurate on Tamil. Shruti Tamil is the Tamil member of the Shruti family, next to Shruti Hindi and Shruti Marathi, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on openly licensed Tamil and English speech and added 700 Tamil 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 (Tamil with English, AI voice) Shruti Tamil writes (on the phone, unedited)
"கல்யாணத்துக்கு catering order confirm..." -> கல்யாணத்துக்கு catering order confirm பண்ணிட்டேன் சாம்பார் ரசம் பாயாசம் எல்லா வாழை இலையில்தான் பரிமாறணும்
"அண்ணா, டி நகர் வரைக்கும் meter..." -> அண்ணா டீ நகர் வரைக்கும் மீட்டர் போட்டு போங்க மூத்தம்பது ரூபாய்க்கு மேல ஆகாது
(The second line shows two real errors: "meter" written in Tamil script, and நூத்தம்பது (150) heard as மூத்தம்பது.)
| Developer | Udgam Labs |
| Base model | Shruti Hindi (Udgam Labs), built on Cactus Whistle (Cactus Compute); both Apache-2.0 |
| Parameters | 55.9M (8 encoder + 8 decoder layers, width 512) |
| File | shruti-tamil.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine |
| Input / output | 16 kHz audio of any length → text; Tamil in Tamil script, English words in lowercase Latin |
| Languages | Tamil, English, and Tamil mixed with English. For Hindi use Shruti Hindi; for Marathi, Shruti Marathi |
| Runtime | Cactus needle engine (Apache-2.0): macOS, Linux, Windows, Android, iOS, WebAssembly |
| Licence | Apache-2.0 |
Quick start
pip install cactus-needle
hf download udgamlabs/shruti-tamil shruti-tamil.cact config.json --local-dir .
from needle import Whistle
model = Whistle("shruti-tamil.cact")
print(model.transcribe("clip.wav")) # Tamil 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-tamil.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 Tamil in its on-device engine on a Mac. Measured 2 November 2026. Size is the file as published.
| Model | File size | FLEURS (read) | Kathbath test-unknown (read) | DiarBench (conversation, held out) |
|---|---|---|---|---|
| Shruti Tamil | 29.7 MB | 38.5 | 33.2 | 52.5 |
| Whisper tiny | 43.5 MB | 226.7 | 239.6 | 244.8 |
| Whisper base | 81.8 MB | 124.5 | 108.8 | 152.5 |
| Dolphin base (int8) | 103.7 MB | 71.9 | 65.0 | 92.4 |
| Thedal v11 (non-commercial licence) | 102.6 MB | 42.2 | 38.1 | 70.1 |
| IndicConformer Tamil (int8) | 137.7 MB | 27.8 | 25.0 | 58.7 |
| deepdml whisper-tiny-ta (fp32) | 151.1 MB | 47.9 | 45.6 | 90.3 |
| deepdml whisper-base-ta (fp32) | 290.4 MB | 38.7 | 39.1 | 81.1 |
DiarBench is real conversation that mixes in English; its references here write English words in English (Latin script), as Shruti Tamil does. With the English words dropped from the reference, IndicConformer Tamil is ahead (51.4 vs 62.2), and so is the much larger SraVaani-1.0 (908.8 MB; 44.0). FLEURS and Kathbath are read Tamil.
- Size class: every other open model under 100 MB we measured gets more Tamil words wrong than right (Whisper adds words, so its rates pass 100%). On FLEURS, Shruti Tamil is level with deepdml's whisper-base-ta fine-tune (38.5 vs 38.7), which is 290 MB as published.
- English inside Tamil: Shruti Tamil writes 51.5% of DiarBench's English words in English; every other model above writes 8% or fewer.
- English: LibriSpeech test-clean 6.37 (Shruti Hindi: 5.95), Svarah (Indian English) 23.36.
- 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, 10.8x faster than real time, 64 MB peak memory (20 clips). In that phone's Chrome, a 3-7 s audio file is transcribed in about 1.5-3.8 s.
Where it falls short
- Pure Tamil accuracy. IndicConformer Tamil (about 5x larger) makes about 28% fewer errors on FLEURS and 25% fewer on Kathbath; larger models such as SraVaani-1.0 fewer still, also on conversations scored on the native reference.
- Numbers and loanwords: nearby number words can be swapped (நூத்தம்பது, 150, came out as மூத்தம்பது) and some English loanwords come out in Tamil script ("meter" as மீட்டர்).
- Spoken vs written forms count as errors and are common (நேத்து/நேற்று, காலையில/காலையில்).
- Language detection can pick English for Tamil speech with many English words (one of our live phone takes came out garbled this way), and can label an all-English clip as Tamil (the text was still right).
- Names it has never heard are spelt by sound. Not tested: 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 Tamil vocabulary pieces and used Shruti Hindi's language tag for Tamil, then trained all weights with 4-bit quantisation-aware training.
- Data: openly licensed Tamil 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, Tamil | CC-BY-4.0 |
| AI4Bharat Kathbath, Tamil | CC-BY-4.0 |
| SPRING-INX Tamil R1 and R2 (SPRING Lab, IIT Madras) | CC-BY-4.0 |
| ARTPARK-IISc Vaani, Tamil (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 Tamil 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 Tamil 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{udgamlabs2026shrutitamil,
title = {Shruti Tamil: offline speech-to-text for Tamil and English in 29.7 MB},
author = {{Udgam Labs}},
year = {2026},
url = {https://huggingface.co/udgamlabs/shruti-tamil}
}
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
- Downloads last month
- -
