Shruti Kannada · Udgam Labs

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

Shruti Kannada

Shruti Kannada turns Kannada and English speech into text, offline, from one 29.7 MB file. Kannada comes out in Kannada script and English words stay in English, the way people actually type: ಮನೆ owner ಹತ್ತು ತಿಂಗಳ ಬಾಡಿಗೆ advance ಕೇಳ್ತಿದ್ದಾರೆ. 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 11.2x faster than real time using 64 MB of memory.

Over half of the words are wrong on our conversation test. On real Kannada conversations that mix in English, its word error rate is 56.6% with English words scored in English letters, and 69.5% against the native reference. On that test Shruti Kannada makes fewer errors than IndicConformer Kannada, almost five times its size (56.6 vs 67.1), and the three vasista22 Whisper Kannada fine-tunes, up to 33 times its size (88.7 to 91.4). On read Kannada, and on the native reference, larger models are more accurate (see below).

Shruti Kannada is the Kannada member of the Shruti family, next to Shruti Hindi, Shruti Marathi, Shruti Tamil, Shruti Bengali, Shruti Telugu, Shruti Gujarati and Shruti Odia, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on openly licensed Kannada and English speech and added 700 Kannada 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 (Kannada with English, AI voice)     Shruti Kannada writes (on the phone, native engine, unedited)
"ಮನೆ owner ಹತ್ತು ತಿಂಗಳ ಬಾಡಿಗೆ advance..."   ->  ಮನೆ owner ಹತ್ತು ತಿಂಗಳ ಬಾಡಿಗೆ advance ಕೇಳ್ತಿದ್ದಾರೆ ಬೆಂಗಳೂರಲ್ಲಿ ಇದು ಮಾಮೂಲಿ ಅಂತೆ
"ಎರಡು ಮಸಾಲೆ ದೋಸೆ, ... parcel ಬೇಡ"          ->  ಎರಡು ಮಸಾಲೆ ದೋಸೆ ಒಂದು strong filter coffee ಕೊಡಿ ಇಲ್ಲೇ ತಿಂತೀವಿ ಭಾರಿಸಲ್ಲ ಬೇಡ

(The first line is word for word. The second shows a real error: parcel written as ಭಾರಿಸಲ್ಲ. In the phone's browser the same clip wrote parcel correctly, 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-kannada.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine
Input / output 16 kHz audio of any length → text; Kannada in Kannada script, English words in lowercase Latin
Languages Kannada, English, and Kannada mixed with English. For Hindi use Shruti Hindi; for Marathi, Shruti Marathi; for Tamil, Shruti Tamil; for Bengali, Shruti Bengali; for Telugu, Shruti Telugu; for Gujarati, Shruti Gujarati; for Odia, Shruti Odia
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-kannada shruti-kannada.cact config.json --local-dir .
from needle import Whistle

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

Results

Word error rate (%, lower is better), 200 clips per set, the same clips and scorer for every model; Shruti Kannada 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 Kannada 29.7 MB 33.1 29.4 56.6 69.5
Whisper tiny 43.5 MB 305.5 371.7 574.5 584.5
Whisper base 81.8 MB 179.5 178.5 248.8 252.4
IndicConformer Kannada (int8) 137.7 MB 20.4 19.8 67.1 56.7
Whisper-tiny Kannada (vasista22) 151.1 MB 29.7 34.2 91.4 90.2
Whisper small 264.5 MB 103.0 100.8 118.9 120.5
Whisper-base Kannada (vasista22) 290.5 MB 25.6 31.0 90.9 89.2
SraVaani-1.0 908.8 MB 19.1 15.3 60.7 46.4
Whisper-small Kannada (vasista22) 967.1 MB 20.8 26.5 88.7 85.8

DiarBench is real conversation that mixes in English: 200 turns from 49 conversations, 4,209 reference words, 1,091 of them English. The "English in English" column scores against references that write English words in English (Latin script), as Shruti Kannada does; the native column scores against references that write English words in Kannada script. FLEURS and Kathbath are read Kannada. 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 Kannada minus the other model, in word error points (1,000 resamples of clips).

  • Conversations that mix in English: fewer errors than IndicConformer Kannada (56.6 vs 67.1; -13.21 to -7.82; with whole conversations resampled -16.04 to -6.06; with script ignored -9.00 to -4.40), and the vasista22 Whisper fine-tunes: tiny (91.4; -37.87 to -32.33), base (90.9; -37.29 to -31.59), small (88.7; -35.30 to -29.18).
  • SraVaani-1.0 on that test: as written, 56.6 vs 60.7 (-7.17 to -1.25), but the gap does not hold with whole conversations resampled (-11.19 to +1.64), and with script ignored the two are level (-2.87 to +2.34). The whole gap is English letters, so we do not claim a lead over it.
  • English inside Kannada: Shruti Kannada writes 53.1% of DiarBench's English words in English; IndicConformer Kannada, SraVaani-1.0 and the vasista22 fine-tunes write none (0%), and plain Whisper 5.4% to 23.0%.
  • One file for two languages: Shruti Kannada also transcribes English: LibriSpeech test-clean 6.16 (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.

Other Kannada speech models exist that we have not measured. A scan of Hugging Face on 6 November 2026 found, among others, Whisper-tiny Kannada copies of 75.5 to 97.8 MB; these results cover only the models listed here.

Speed and memory (offline): Samsung Galaxy F62 (2021, 6 GB RAM), native engine, 11.2x faster than real time, 64 MB peak memory (20 clips). In that phone's Chrome, the page reports 2.9-3.7 s on the device for 7.4-8.6 s of speech.

Where it falls short

  • Most of a real conversation can be wrong. On DiarBench 56.6% of words are wrong with English in English letters, and 69.5% against the native reference. Character errors on that test are 38.78% (IndicConformer Kannada 20.72%, SraVaani-1.0 15.48%). If you try it on everyday talk, expect to correct a lot.
  • Conversations on the native reference. When the reference writes English words in Kannada script, IndicConformer Kannada (56.7; +10.99 to +14.84) and SraVaani-1.0 (46.4; +20.99 to +25.34) are clearly ahead.
  • Read Kannada accuracy. IndicConformer Kannada (almost 5x larger) and SraVaani-1.0 (about 31x larger) are ahead on both read sets (FLEURS 20.4 and 19.1 vs 33.1; Kathbath 19.8 and 15.3 vs 29.4), and all three vasista22 fine-tunes are ahead on FLEURS (29.7, 25.6 and 20.8). The tiny one would be about 44 MB as a whisper.cpp q8_0 copy, so this model has no size claim over it.
  • English words in Kannada script: only about half of the English words come out in English letters; others are written in Kannada script (monday as ಮಂಡೆ, laptop as ಲ್ಯಾಪ್‌ಟಾಪ್‌ನ).
  • Real errors and spelling variants: real errors happen (parcel as ಭಾರಿಸಲ್ಲ, hard disk as hardness), and joins and spelling variants count as errors.
  • In a browser, set the language. In the phone's browser, with the language left to the engine, 1 of 4 English-heavy lines we played in came out as English words for the whole line. Passing kn fixed it on 6 November, and it is what our try box does. Plain English loses a little accuracy this way. The native engine detected all of them correctly. Not yet tested with a live microphone.
  • 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 Kannada).
  • Not tested on Kannada: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words. No Kannada speaker has reviewed this output yet.

How it was trained

  • Start: Shruti Hindi (itself a full fine-tune of Cactus Whistle). We added 700 Kannada vocabulary pieces and used Shruti Hindi's language tag for Kannada, then trained all weights with 4-bit quantisation-aware training.
  • Data: openly licensed Kannada 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, Kannada CC-BY-4.0
AI4Bharat Kathbath, Kannada CC-BY-4.0
SPRING-INX Kannada R1 (SPRING Lab, IIT Madras) CC-BY-4.0
ARTPARK-IISc Vaani, Kannada (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 Kannada and English speech on devices where privacy, cost or connectivity rule out a cloud service: voice notes, dictation, voice commands, captions, field apps. Clear, read-style speech works much better than everyday conversation. 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 Kannada 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{udgamlabs2026shrutikannada,
  title  = {Shruti Kannada: offline speech-to-text for Kannada and English in 29.7 MB},
  author = {{Udgam Labs}},
  year   = {2026},
  url    = {https://huggingface.co/udgamlabs/shruti-kannada}
}

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

Model tree for udgamlabs/shruti-kannada

Finetuned
udgamlabs/Shruti
Finetuned
(22)
this model

Datasets used to train udgamlabs/shruti-kannada

Space using udgamlabs/shruti-kannada 1

Collection including udgamlabs/shruti-kannada

Article mentioning udgamlabs/shruti-kannada