# Shruti Nepali

Canonical: https://udgamlabs.com/models/shruti/nepali · Updated: 2026-11-07

Models · Shruti · 29.7 MB · released 7 November 2026

Speech to text for Nepali and English, on your device, with no server.

Try it in your browser: [https://udgamlabs.com/models/shruti/nepali#try](https://udgamlabs.com/models/shruti/nepali#try)

Shruti Nepali · 29.7 MB · Nepali and English · 7 November 2026

## Nepali and English in one 29.7 MB file that runs on your device.

Shruti Nepali writes Nepali in Devanagari, and it keeps English words in English letters, as here: दिदी बफको मोमो एक plate र एउटा cold drink दिनु न. It is one small file, and we make no comparative claim for it: IndicConformer Nepali is well ahead on read Nepali (FLEURS 29.9 against 46.0). The try box here sets the language you pick, which matters for Nepali: left to choose on its own, the engine sent 20 of 200 FLEURS clips wholly to English letters; with Nepali set, none did, and FLEURS moves from 46.0 to 42.2. It runs offline on a five-year-old phone, about 10× faster than real time in 64 MB of memory with the native engine, and it invented no words on 100 silent clips.

| Model | File | FLEURS (read) | IndicVoices valid | DiarBench, English in English | DiarBench, native |
| --- | --- | --- | --- | --- | --- |
| Shruti Nepali | 29.7 MB | 46.0 | 27.1 | 34.0 | 40.5 |
| Whisper tiny | 43.5 MB | 270.5 | 488.6 | 308.4 | 310.5 |
| Whisper base | 81.8 MB | 200.4 | 371.4 | 287.2 | 288.3 |
| IndicConformer Nepali | 137.7 MB | 29.9 | 18.4 | 37.4 | 28.6 |
| Whisper small | 264.5 MB | 126.7 | 226.5 | 238.0 | 237.6 |

Word error rate %, lower is better; DiarBench 45 turns, the same scorer for every model, measured 3 November 2026. FLEURS is read speech we did not train on. DiarBench is real conversation from outside our training data. IndicVoices valid is IndicVoices’ own held-out split: its speakers are kept out of training and its sentences blocked, but it is the same source as our training data, so it flatters us. DiarBench has 45 turns from 19 conversations, 874 reference words, 118 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 Devanagari. Whisper’s rates pass 100% because it adds words and often writes the wrong script, so they say little about Whisper at its best. Other Nepali speech models exist that we have not measured; these results cover only the models listed here.

### Where it falls short

- Read Nepali is far behind. FLEURS 46.0 vs IndicConformer Nepali’s 29.9 (+13.60 to +19.38); 42.2 with the language set. Character errors 24.94% vs 10.55%.
- The automatic language choice misfires. 20 of 200 FLEURS clips came out wholly in English letters with the engine’s own choice. With Nepali set, none of the 200 did, and the set moves from 46.0 to 42.2, still behind. On the other Shruti languages where we measured it, plain English loses a little accuracy with the language set.
- The other tests favour IndicConformer Nepali too. IndicVoices valid 27.1 vs 18.4 (+6.72 to +11.13), DiarBench native 40.5 vs 28.6 (+8.07 to +16.62). DiarBench English in English shows no lead either way (34.0 vs 37.4; -8.67 to +2.66), on 45 turns and 118 English words, too few to say much.
- A code-mix rival exists that we have not measured. ailabpvtltd/indicconformer-nepali-english-codemix-asr (513.5 MB, CC BY-NC 4.0) is built for exactly this mix and reports WER 19.9 on its own set, not comparable until measured. So what we say about IndicConformer Nepali writing no English holds for the stock model.
- English words in Devanagari: about 22 of DiarBench’s 118 by automatic alignment. DiarBench also glosses some local names in Latin, so a correct native spelling can score as an error.
- In a browser it was tested on 5 lines played into this page on one phone’s Chrome, with the language set. All 5 came out in Devanagari, and 4 kept some English letters. Not yet tested with a live microphone. On the other Shruti languages where we measured it, plain English loses a little accuracy this way.
- No Nepali reader has reviewed this output yet.
- Loud noise: Shruti models sometimes repeat a phrase over and over in loud noise (measured on Shruti Hindi-family models, not on Nepali).
- Not tested on Nepali: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words.

[Try Shruti Nepali](#try) [Shruti Nepali on Hugging Face](https://huggingface.co/udgamlabs/shruti-nepali) the model file, the full results and how each model was run

## Use it in your app

Every Shruti model runs in Cactus’s open-source needle engine. Download the engine for your platform and the file for your language, and pass it a WAV file or 16 kHz audio.

```
# Command line (Mac, Linux, Windows)
# Engine: huggingface.co/Cactus-Compute/needle3, your platform
# Model:  shruti-nepali.cact, from Shruti Nepali's Hugging Face repo
./needle --model shruti-nepali.cact --audio clip.wav
# for speech that is only English: --audio-language en

# Python
pip install cactus-needle

import needle
shruti = needle.Whistle(weights="shruti-nepali.cact")
print(shruti.transcribe("clip.wav")["text"])
```

- Android, iOS and the web: call the engine’s C API. `needle_load` takes the model file, `needle_transcribe` a clip, and `needle_stream_transcribe_process` about a second of live audio at a time. The demo on this page makes the same calls, from WebAssembly in a Web Worker.
- Leave the language unset for Hindi and Hinglish: detection does as well as setting it on Hindi, Hinglish, accented Hindi and US English. Set English when the speech is only English with an Indian accent, which detection often takes for Hindi. On a subset of Svarah: 21.13% word errors with English set, 25.75% detected.
- Keywords, one per line, favour the names, places and product words your users say.
- Cactus’s Python package (cactus-needle) sends anonymous usage counts by default; set `NEEDLE_TELEMETRY=0` to turn that off. The command-line engine and the WebAssembly engine on this page make no network requests of their own.

## Credits

Every Shruti model is built on [Cactus Whistle](https://huggingface.co/Cactus-Compute/whistle) and runs in the [needle engine](https://github.com/cactus-compute/needle), both by Cactus Compute under Apache-2.0. The engine files on this page are Cactus’s WebAssembly build, unmodified, served with [its licence](https://udgamlabs.com/models/shruti/needle/LICENSE.txt) and [notice](https://udgamlabs.com/models/shruti/needle/NOTICE.txt). Shruti Nepali’s model card on Hugging Face lists its training datasets and their licences.

[Every Shruti language](https://udgamlabs.com/models/shruti#languages)

---

## 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. Today that means open models such as Gargi, a 384M-parameter language model that comes within 2 points of Qwen2.5-0.5B on three reasoning benchmarks with about 1,000× less training data. Next come products, custom models for businesses, and AI in the physical world. Udgam (उद्गम) is Sanskrit for origin.

Udgam Labs · AI research from first principles · https://udgamlabs.com
