Shruti Malayalam · Udgam Labs

UDGAM LABS · Speech-to-text model · about 56M parameters · part of the Shruti family

Shruti Malayalam

Malayalam and English in one 29.7 MB file that runs on your device. Malayalam comes out in Malayalam script, and about 4 in 10 English words stay in English letters: ഒരു cab book ചെയ്തു. It runs on a phone, a laptop or in a browser, with no server and no internet connection. On a 2021 Samsung Galaxy F62 it transcribes about 10x faster than real time using 64 MB of memory.

We make no headline comparison for this model. IndicConformer Malayalam and SraVaani-1.0 are more accurate on read Malayalam and against the native reference. On conversations, counting English words only in English letters, it has fewer word errors than IndicConformer Malayalam by clip (56.8 vs 61.7), but that lead does not hold with whole conversations resampled (-9.45 to +1.23) or with script ignored (-4.48 to +1.50). More than half of the words are wrong on conversations. Malayalam fuses words, so word scores look harsher than the text reads: on Kathbath 44.9% of words are wrong but 9.0% of characters. No Malayalam reader has reviewed this output yet.

Shruti Malayalam is the Malayalam member of the Shruti family, next to Shruti Hindi, Shruti Marathi, Shruti Tamil, Shruti Bengali, Shruti Telugu, Shruti Gujarati, Shruti Odia, Shruti Kannada and Shruti Urdu, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on openly licensed Malayalam and English speech and added 700 Malayalam 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 (Malayalam with English, AI voice)     Shruti Malayalam writes (on the phone, native engine, unedited)
"ഞാൻ airport ലേക്ക് ഒരു cab book ചെയ്തു ..."     ->  ഞാൻ എയർപോർട്ടിലേക്ക് ഒരു cab book ചെയ്തു driver location share ചെയ്തിട്ടുണ്ട് ഇപ്പോളെത്തും
"ചേട്ടാ, തേങ്ങയിടാൻ ആളെ കിട്ടുന്നില്ല ..."        ->  ചേട്ടാ തേങ്ങയുടെ തന്നെ ആളെ കിട്ടുന്നില്ല ഈ ആഴ്ച ആരെങ്കിലും ഉണ്ടെങ്കിൽ ഒന്ന് പറയണേ

(Neither line is word for word. The top one writes airport in Malayalam script, and joins ഇപ്പോൾ എത്തും. The other is a real error: the spoken തേങ്ങയിടാൻ came out as തേങ്ങയുടെ തന്നെ. In the phone's browser the top line kept airport in English letters, and the other wrote ആഴ്ച as അഴിച്ച, so the two engines' text can differ.)

Developer Udgam Labs
Base model Shruti Hindi (Udgam Labs), built on Cactus Whistle (Cactus Compute); both Apache-2.0
Parameters About 56M (55,875,913; 8 encoder + 8 decoder layers, width 512)
File shruti-malayalam.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine
Input / output 16 kHz audio of any length → text; Malayalam in Malayalam script, English words in lowercase Latin when it keeps them in English
Languages Malayalam, English, and Malayalam mixed with English. Other languages have their own Shruti models
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-malayalam shruti-malayalam.cact config.json --local-dir .
from needle import Whistle

model = Whistle("shruti-malayalam.cact")
print(model.transcribe("clip.wav"))   # Malayalam 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-malayalam.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/malayalam is a working page.

Results

Word error rate (%, lower is better), the same clips and scorer for every model; Shruti Malayalam in its on-device engine on a Mac. FLEURS, Kathbath and DiarBench have 200 clips or turns each. 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 Malayalam 29.7 MB 36.0 44.9 56.8 65.4
Whisper tiny 43.5 MB 509.4 910.2 555.0 559.6
Whisper base 81.8 MB 186.3 275.1 217.8 219.4
IndicConformer Malayalam (int8) 137.7 MB 31.6 35.0 61.7 53.2
Whisper small 264.5 MB 316.8 251.8 238.9 244.7
SraVaani-1.0 908.8 MB 22.6 30.4 55.2 45.2

How to read this. FLEURS is read speech we did not train on. Kathbath test-unknown has unseen speakers, but Kathbath's training split is in our training data and very likely in the others' too. DiarBench is real conversation from outside it: 200 turns from 34 conversations, 4,044 reference words, 1,038 of them English. The "English in English" column scores against references that write English words in English (Latin script), and English words count only if written in English letters; the native column scores against references that write those English words in Malayalam script (cinema as സിനിമ). Whisper's rates pass 100% because it adds words and often writes the wrong script, so they say little about Whisper at its best.

Paired 95% intervals below are Shruti Malayalam minus the other model, in word error points (1,000 resamples of clips; "by conversation" resamples whole conversations; "script ignored" compares romanised text).

  • IndicConformer Malayalam: ahead on FLEURS (+1.07 to +7.39), Kathbath (+6.73 to +13.06) and DiarBench native (+9.49 to +15.18; by conversation +8.82 to +16.12). On DiarBench English in English, 61.7 vs 56.8: -8.28 to -1.79 by clip, but -9.45 to +1.23 by conversation and -4.48 to +1.50 with script ignored, so that lead is weak and comes from writing English in English letters.
  • SraVaani-1.0: ahead on FLEURS (+11.12 to +15.72), Kathbath (+11.36 to +17.53) and DiarBench native (+17.56 to +23.18). On DiarBench English in English, 55.2 vs 56.8, level as written (-1.29 to +4.81) and ahead with script ignored (+0.43 to +6.27).
  • Whisper tiny, base and small: Shruti Malayalam has fewer errors on all four columns, but Whisper's rates say little, for the reason above.
  • English inside Malayalam: Shruti Malayalam writes 39.1% of DiarBench's 1,038 English words in English letters. Whisper small writes 27.1%, Whisper tiny 15.9%, Whisper base 6.6%, SraVaani-1.0 4.7% and IndicConformer Malayalam none.
  • One file for two languages: Shruti Malayalam also transcribes English: LibriSpeech test-clean 6.24 (Shruti Hindi: 5.95).
  • Silence: 0 words invented on 100 silent clips.

Other Malayalam speech models exist that we have not measured, and these results cover only the models listed here. A scan of Hugging Face on 6 November 2026 found, among others, dulu-malayalam-asr, wav2vec2-large-xlsr-malayalam and many Whisper fine-tunes.

Speed and memory (offline): Samsung Galaxy F62 (2021, 6 GB RAM), native engine, 10.1x faster than real time, 64 MB peak memory (20 clips, 255.7 s of audio; slowest clip 5.6x). In that phone's Chrome, on nine lines played into the page, it took 1.1-1.6 s on the device for 6.5-7.5 s of speech.

Where it falls short

  • Larger models are more accurate. IndicConformer Malayalam and SraVaani-1.0 are ahead on FLEURS, Kathbath and DiarBench's native reference (numbers above). On DiarBench English in English the lead over IndicConformer Malayalam is weak, and SraVaani-1.0 is level or ahead.
  • More than half of the words are wrong on conversations: 56.8% with English in English, 65.4% against the native reference. Malayalam fuses words, so word scores look harsher than the text reads, but that doesn't explain the whole gap: character errors on DiarBench native are 35.77%, against IndicConformer Malayalam's 19.03% and SraVaani-1.0's 16.03%. Expect to correct a lot.
  • Read Malayalam: Kathbath 44.9, against IndicConformer Malayalam's 35.0 and SraVaani-1.0's 30.4; characters 9.02% against 5.50% and 5.04%. FLEURS characters 11.24% against 7.29% and 5.59%.
  • English words often come out in Malayalam script: about 336 of DiarBench's 1,038 by automatic alignment (cinema as സിനിമ). At 39.1% in English letters it is the lowest of the Shruti single-language models so far. DiarBench also glosses some local names in Latin, so a correct native spelling can score as an error.
  • Real errors on our own demo lines: on the phone തേങ്ങയിടാൻ came out as തേങ്ങയുടെ തന്നെ and lakh as ലക്ഷ്യ, in the browser പൊള്ളിച്ചത് (fried) as പൊളിച്ചത് (broken) and ആഴ്ച as അഴിച്ച. Joins and spelling variants also count as errors.
  • Browser: tested on nine lines only, played into the page on one phone's Chrome with the language set. All nine came out in Malayalam script. Of the six lines with English in them, four kept some English letters and two kept none. Not tested with a live microphone. On the other Shruti languages where we measured it, plain English loses a little accuracy with the language set.
  • No reader yet: no Malayalam reader has reviewed this output.
  • 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 Malayalam).
  • Not tested on Malayalam: 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 Malayalam vocabulary pieces and used Shruti Hindi's language tag for Malayalam, then trained all weights with 4-bit quantisation-aware training.
  • Data: openly licensed Malayalam speech, with English words kept in English where the dataset marks them, plus English from Shruti Hindi's own training data. Test sentences were removed.
Source Licence
AI4Bharat IndicVoices, Malayalam CC-BY-4.0
AI4Bharat Kathbath, Malayalam CC-BY-4.0
SPRING-INX Malayalam R1 and R2 (SPRING Lab, IIT Madras) CC-BY-4.0
ARTPARK-IISc Vaani, Malayalam (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 Malayalam and English on devices where privacy, cost or connectivity rule out a cloud service: voice notes, dictation, captions, field apps. If accuracy matters more than size, use a larger model. Not for high-stakes use without human review. Accuracy drops on noisy audio, strong accents, rare names, numbers and long technical English.

Licence

Apache-2.0. Shruti Malayalam 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{udgamlabs2026shrutimalayalam,
  title  = {Shruti Malayalam: offline speech-to-text for Malayalam and English in 29.7 MB},
  author = {{Udgam Labs}},
  year   = {2026},
  url    = {https://huggingface.co/udgamlabs/shruti-malayalam}
}

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
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for udgamlabs/shruti-malayalam

Finetuned
udgamlabs/Shruti
Finetuned
(11)
this model

Datasets used to train udgamlabs/shruti-malayalam

Space using udgamlabs/shruti-malayalam 1

Collection including udgamlabs/shruti-malayalam