Shruti Assamese · Udgam Labs

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

Shruti Assamese

Assamese and English in one 29.7 MB file. On Assamese conversations that mix in English, fewer errors than IndicConformer-600M and SraVaani-1.0, models about 86 and 31 times its size. Assamese comes out in Assamese script, with its own ৰ and ৱ, and more than half of the English words stay in English letters: শনিবাৰে গুৱাহাটীত concert আছে. 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 11x faster than real time using 64 MB of memory.

The result rests on English letters. On real Assamese conversations (DiarBench, held out, 84 turns from 19 conversations), counting English words only when they are written in English letters, its word error rate is 30.2, against SraVaani-1.0's 37.9 and IndicConformer-600M's 39.8. Against the native reference on the same turns, both are well ahead (25.9 and 29.1 vs 43.2), and they are ahead on read Assamese too (FLEURS 20.2 and 21.9 vs 35.1). IndicConformer-600M is AI4Bharat's multilingual model. A 198.8 MB community int8 conversion of the per-language IndicConformer Assamese scores 42.5 on those conversations against our 30.2, and is ahead on the native reference (35.3 vs 43.2) and on FLEURS (24.3 vs 35.1). No Assamese reader has reviewed this output yet.

Shruti Assamese is the Assamese member of the Shruti family, next to Shruti Hindi, Shruti Marathi, Shruti Tamil, Shruti Bengali, Shruti Telugu, Shruti Gujarati, Shruti Odia, Shruti Kannada, Shruti Urdu and Shruti Malayalam, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on Assamese and English speech and added 700 Assamese vocabulary pieces. The data section below lists the sources, including two that name no licence.

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 (Assamese with English, AI voice)         Shruti Assamese writes (on the phone, native engine, unedited)
"শনিবাৰে গুৱাহাটীত concert আছে, ticket ..."      ->  শনিবাৰে গুৱাহাটীত concert আছে ticket অনলাইনত শেষ হৈ গৈছে ফ্ৰেণ্ডক phone কৰি চাওঁ
"এই চাহখিনি আমাৰ বাগিচাৰ first flush ..."        ->  এই জাহখিনি আমাৰ বাগিচাৰ first flash একেবাৰে কুঁহিপাতৰ এবাৰ খাই চাওক

(Neither line is word for word. The top one writes online and friend in Assamese script. The other has real errors: the spoken চাহখিনি came out as জাহখিনি, and flush as flash. In the phone's browser the same clip wrote যাহখিনি and flush, 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-assamese.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine
Input / output 16 kHz audio of any length → text; Assamese in Assamese script, English words in lowercase Latin when it keeps them in English
Languages Assamese, English, and Assamese 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 for this model; see the data section for the terms of its training data

Quick start

pip install cactus-needle
hf download udgamlabs/shruti-assamese shruti-assamese.cact config.json --local-dir .
from needle import Whistle

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

Results

Word error rate (%, lower is better), the same clips and scorer for every model; Shruti Assamese in its on-device engine on a Mac. Measured 2 November 2026. FLEURS has 200 clips, DiarBench 84 turns. Size is the file as published by its makers (whisper.cpp q8_0 for Whisper). Whisper small was not run on Assamese. Kathbath has no Assamese, so FLEURS is the only read test.

Model File size FLEURS (read) DiarBench, English in English (conversation, held out) DiarBench, native reference
Shruti Assamese 29.7 MB 35.1 30.2 43.2
Whisper tiny 43.5 MB 315.7 255.8 262.1
Whisper base 81.8 MB 191.9 328.1 337.1
SraVaani-1.0 908.8 MB 21.9 37.9 29.1
IndicConformer-600M 2,560 MB 20.2 39.8 25.9

How to read this. FLEURS is read speech we did not train on. DiarBench is real conversation from outside our training data: 84 turns from 19 conversations, 1,545 reference words, 375 of them English. That is a small set, so read its intervals. 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 Assamese script (option 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 Assamese minus the other model, in word error points (1,000 resamples of clips; "by conversation" resamples whole conversations; "script ignored" compares romanised text).

  • IndicConformer-600M, DiarBench English in English: 39.8 vs 30.2, about 24% fewer errors: -16.37 to -3.74 by clip, -15.81 to -3.30 by conversation, -15.20 to -3.18 with script ignored. Ahead of us on FLEURS (+13.13 to +16.74) and DiarBench native (+12.51 to +22.43).
  • SraVaani-1.0, DiarBench English in English: 37.9 vs 30.2, about 20% fewer errors: -13.26 to -3.11 by clip, -12.20 to -3.59 by conversation, -12.53 to -2.76 with script ignored. Ahead of us on FLEURS (+11.38 to +15.06) and DiarBench native (+10.45 to +17.89).
  • Whisper tiny and base: Shruti Assamese has fewer errors on all three columns, but Whisper's rates say little, for the reason above.
  • English inside Assamese: Shruti Assamese writes 57.3% of DiarBench's 375 English words in English letters. IndicConformer-600M writes none and SraVaani-1.0 8.5%. Whisper base writes 48.5% and Whisper tiny 34.9%, as a side effect of writing much of everything in Latin.
  • One file for two languages: Shruti Assamese also transcribes English: LibriSpeech test-clean 6.22 (Shruti Hindi: 5.95).
  • Silence: 0 words invented on 100 silent clips.

Other Assamese 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, per-language IndicConformer Assamese copies (int8 ONNX, 198.8 MB, measured here; 460.8 MB, not measured) and wav2vec2-large-xls-r-300m-assamese.

Speed and memory (offline): Samsung Galaxy F62 (2021, 6 GB RAM), native engine, 10.7x faster than real time, 64 MB peak memory (20 clips, 212.0 s of audio; slowest clip 5.0x). In that phone's Chrome, on seven lines played into the page, it took 1.0-1.5 s on the device for 6.9-8.6 s of speech.

Where it falls short

  • Read Assamese is far behind. FLEURS 35.1, against IndicConformer-600M's 20.2 and SraVaani-1.0's 21.9. It is the only read test here.
  • The lead rests on English letters. Against the native reference on the same conversations, IndicConformer-600M (25.9) and SraVaani-1.0 (29.1) are well ahead of 43.2. Character errors, native reference: DiarBench 26.69% against 8.18% and 9.27%; FLEURS 15.38% against 6.48% and 6.53%.
  • A small conversation test: 84 turns from 19 conversations. No Assamese reader has reviewed this output yet.
  • Per-language IndicConformer Assamese. We measured a community int8 conversion, not the original checkpoint. It is ahead on the native reference (35.3 vs 43.2) and on FLEURS (24.3 vs 35.1).
  • Two training sets name no licence. See the data section.
  • Sometimes the whole line comes out in English letters: 3 of 200 FLEURS clips and 3 of 84 DiarBench turns, with the engine's own language choice.
  • English words in Assamese script: about 69 of DiarBench's 375 by automatic alignment (option as অপশ্যন). 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: চাহখিনি as জাহখিনি on the phone and যাহখিনি in its browser, flush as flash, weak as week, গঁড় as গড়. Spelling variants also count as errors.
  • Browser: tested on seven lines only, played into the page on one phone's Chrome with the language set. All seven came out in Assamese script, and the six with English in them kept some English letters. 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.
  • 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 Assamese).
  • Not tested on Assamese: 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 Assamese vocabulary pieces and used Shruti Hindi's language tag for Assamese, then trained all weights with 4-bit quantisation-aware training.
  • Data: Assamese 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, Assamese CC-BY-4.0
SPRING-INX Assamese R1 and R2 (SPRING Lab, IIT Madras) None named on their pages (below)
ARTPARK-IISc Vaani, Assamese (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

SPRING-INX Assamese R1 and R2 name no licence on their pages. The Hugging Face pages of R1 and R2 state none (checked 6 November 2026), and we found no other listing for them. The SPRING-INX paper says "we are open sourcing SPRING-INX data" and names Assamese among its languages. We kept these two sets in training and don't claim a licence for them. Apache-2.0 on this model doesn't set or change their terms.

Intended use and limitations

For transcribing Assamese 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 for this model. Shruti Assamese is a modified version of Shruti Hindi (Udgam Labs) and of Cactus Whistle by Cactus Compute (both Apache-2.0); see NOTICE. That licence covers this model, not its training data: the data section above gives each source's terms, including the two that name none. Please credit the datasets if you build on it.

Citation

@misc{udgamlabs2026shrutiassamese,
  title  = {Shruti Assamese: offline speech-to-text for Assamese and English in 29.7 MB},
  author = {{Udgam Labs}},
  year   = {2026},
  url    = {https://huggingface.co/udgamlabs/shruti-assamese}
}

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-assamese

Finetuned
udgamlabs/Shruti
Finetuned
(22)
this model

Datasets used to train udgamlabs/shruti-assamese

Space using udgamlabs/shruti-assamese 1

Collection including udgamlabs/shruti-assamese

Paper for udgamlabs/shruti-assamese