Shruti Kashmiri
Speech to text for Kashmiri and English, on your device, with no server.
Try it now · in your browser · free, no login
Speak Kashmiri, English or both. Shruti Kashmiri writes it down on your device.
Shruti · checking this device
Audio never leaves your device. Shruti and its open-source engine run inside this page.
(or drop one on the transcript)
Load Shruti, then press Record and speak Kashmiri, English or both.
Speak Kashmiri, English or both. English words can stay in English (Latin script) and are underlined here; Kashmiri is written in Perso-Arabic script. While you speak, words appear once they have settled, a second or two behind you; when you stop, Shruti reads the whole recording once more for the final text.
Shruti Kashmiri · 29.7 MB · Kashmiri and English · 7 November 2026
Kashmiri in Perso-Arabic script and English in one 29.7 MB file that runs on your device.
Shruti Kashmiri writes Kashmiri in Perso-Arabic script, and English words can stay in English letters, as here: اَز چھُ واریاہ تُرُن heater چھُنہٕ چَلان. On IndicVoices valid it has fewer word errors than IndicConformer Kashmiri (43.0 against 48.7), but that set shares a source with our training data, and IndicConformer Kashmiri has fewer character errors there. The independent check, DiarBench, is 32 turns, too small to say either way. It runs offline on a five-year-old phone, about 9× faster than real time in 64 MB of memory with the native engine, and it invented no words on 100 silent clips.
| Model | File | IndicVoices valid | DiarBench |
|---|---|---|---|
| Shruti Kashmiri | 29.7 MB | 43.0 | 56.4 |
| IndicConformer Kashmiri | 137.7 MB | 48.7 | 58.2 |
Word error rate %, lower is better; DiarBench 32 turns, the same scorer for every model, measured 3 November 2026. DiarBench Kashmiri’s reference holds no English glosses, so its native and English-in-English references are the same; only one DiarBench column is shown. 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 is real conversation from outside it: 32 turns from 14 conversations, 748 reference words, 0 of them English, in 0 turns. Other Kashmiri speech models exist that we have not measured; these results cover only the models listed here.
Where it falls short
- Its one lead is on the flattering set. IndicVoices valid shares a source with our training data. DiarBench agrees in direction only (56.4 vs 58.2; -7.93 to +4.45), on 32 turns.
- Character errors are higher. 23.16% vs 15.71% on IndicVoices valid, 34.9% vs 25.01% on DiarBench. Word error alone hides this.
- High error rates. 43.0 on IndicVoices valid and 56.4 on conversation: expect to correct a lot.
- No English test on conversation. DiarBench Kashmiri’s reference holds no English words. On IndicVoices valid it writes 75.6% of glossed English words in English letters (303 words).
- Perso-Arabic only. It does not write Kashmiri in Devanagari.
- Unmeasured rivals. Kashmiri models have appeared within weeks, including Aazu34/kashmiri-asr-ctc (186.6 MB). We have not measured them.
- In a browser it was tested on 4 test clips read by an AI voice, not real speech, played into this page on one phone’s Chrome, with the language set. All 4 came out in Perso-Arabic script. 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 Kashmiri 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 Kashmiri).
- Not tested on Kashmiri: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words.
Try Shruti Kashmiri Shruti Kashmiri on Hugging Face 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-kashmiri.cact, from Shruti Kashmiri's Hugging Face repo
./needle --model shruti-kashmiri.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-kashmiri.cact")
print(shruti.transcribe("clip.wav")["text"])- Android, iOS and the web: call the engine’s C API.
needle_loadtakes the model file,needle_transcribea clip, andneedle_stream_transcribe_processabout 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=0to 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 and runs in the needle engine, both by Cactus Compute under Apache-2.0. The engine files on this page are Cactus’s WebAssembly build, unmodified, served with its licence and notice. Shruti Kashmiri’s model card on Hugging Face lists its training datasets and their licences.