Shruti Sanskrit
Speech to text for spoken Sanskrit and English, on your device, with no server.
Try it now · in your browser · free, no login
Speak Sanskrit, English or both. Shruti Sanskrit 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 Sanskrit, English or both.
Speak Sanskrit, English or both. English words can stay in English (Latin script) and are underlined here; Sanskrit is written in Devanagari. 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 Sanskrit · 29.7 MB · spoken Sanskrit and English · 7 November 2026
Spoken Sanskrit and English in one 29.7 MB file that runs on your device.
Shruti Sanskrit writes spoken Sanskrit in Devanagari and keeps English words in English: अधुना अन्तिमम् over प्रचलति. It runs offline on a five-year-old phone, about 12× faster than real time in 64 MB of memory with the native engine, and it invented no words on 100 silent clips. It is one small file; it is not the most accurate Sanskrit model we measured, and we make no comparative claim for it. It was tested on everyday speech, not on chant.
| Model | File | IndicVoices valid | DiarBench, English in English | DiarBench, native |
|---|---|---|---|---|
| Shruti Sanskrit | 29.7 MB | 30.9 | 32.3 | 38.1 |
| Whisper tiny | 43.5 MB | 617.4 | 522.9 | 528.1 |
| Whisper base | 81.8 MB | 440.6 | 367.7 | 374.7 |
| IndicConformer Sanskrit | 137.7 MB | 24.4 | 36.6 | 33.4 |
| Su-śrotā (int8 ONNX) | 187.5 MB | 38.7 | 43.8 | 41.8 |
| Whisper small | 264.5 MB | 443.3 | 367.4 | 369.4 |
Word error rate %, lower is better; IndicVoices valid 200 clips, DiarBench 55 turns, the same scorer for every model, measured 3 November 2026 (Su-śrotā 6 November). IndicVoices valid keeps its speakers out of training but is the same source as our training data, so it flatters us. DiarBench is real conversation; its English-in-English references write English words in English, and its native references write them in Devanagari. Whisper adds words and often writes the wrong script, so its rates pass 100%. Other Sanskrit speech models exist that we have not measured; these results cover only the models listed here.
Where it falls short
- It is not the most accurate. IndicConformer Sanskrit is ahead on IndicVoices valid (24.4 against 30.9; paired interval +4.29 to +9.01) and on conversation against the native reference (33.4 against 38.1; +0.98 to +8.46 with whole conversations resampled, -0.18 to +9.65 by clip). Its character errors are about half of ours (6.10% against 11.75%, and 8.65% against 15.90%).
- With English written in English letters the conversation test shows no lead over IndicConformer Sanskrit either way (32.3 against 36.6; -11.44 to +2.77). Su-śrotā has more word errors, but it writes words joined more often, and on characters it is level or ahead (11.62% against 11.75%; 12.13% against 15.90%). We claim no lead over either.
- About a third of the words are wrong on both tests. Word error overstates this for spoken Sanskrit because of sandhi spacing, but expect to correct a lot.
- The test is thin: no independent read set, IndicVoices valid shares a source with our training data, and DiarBench is 55 turns with only 68 English words. No Sanskrit reader has reviewed this output yet.
- Chant, verse and recitation were not tested. Nothing here says anything about Vedic recitation or pronunciation.
- About 16 of DiarBench’s 68 English words come out in Devanagari (egypt as इजिप्ट्), and real errors happen (कन्दुकः as कण्डुकः). Joined words and spelling variants count as errors.
- In a browser it was tested on five lines played into this page on one phone’s Chrome, with the language set; all five came out in Devanagari. 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 punctuation, and numbers come out as words. Noise, music, far-field and speaker-played audio were not tested. In loud noise, Shruti models sometimes repeat a phrase over and over (measured on Hindi-family models, not on Sanskrit).
Try Shruti Sanskrit Shruti Sanskrit 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-sanskrit.cact, from Shruti Sanskrit's Hugging Face repo
./needle --model shruti-sanskrit.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-sanskrit.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 Sanskrit’s model card on Hugging Face lists its training datasets and their licences.