Shruti Punjabi
Speech to text for Punjabi and English, on your device, with no server.
Try it now · in your browser · free, no login
Speak Punjabi, English or both. Shruti Punjabi 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 Punjabi, English or both.
Speak Punjabi, English or both. English words can stay in English (Latin script) and are underlined here; Punjabi is written in Gurmukhi. 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 Punjabi · 29.7 MB · Punjabi and English · 7 November 2026
Punjabi and English in one 29.7 MB file that runs on your device.
Shruti Punjabi writes Punjabi in Gurmukhi, and more than half of the English words stay in English letters: ਯਾਰੋ ਮੇਰਾ canada ਦਾ study visa ਆ ਗਿਆ ਹੈ. On real conversations (DiarBench, held out, 200 turns), counting English words only in English letters, we found it level with IndicConformer Punjabi and SraVaani-1.0: 32.6, against 34.6 and 31.9, with both intervals including 0. It writes 58.7% of the English words in English letters, where those two write none. It runs offline on a five-year-old phone, about 11× 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) | Kathbath test-unknown (read) | DiarBench, English in English | DiarBench, native |
|---|---|---|---|---|---|
| Shruti Punjabi | 29.7 MB | 29.3 | 18.6 | 32.6 | 38.3 |
| Whisper tiny | 43.5 MB | 311.5 | 337.8 | 468.7 | 467.7 |
| Whisper base | 81.8 MB | 201.6 | 207.9 | 275.9 | 275.3 |
| Dolphin base | 103.7 MB | 83.6 | 71.6 | 98.5 | 99.4 |
| IndicConformer Punjabi | 137.7 MB | 16.9 | 13.7 | 34.6 | 28.4 |
| Dolphin small | 249.7 MB | 62.2 | 51.0 | 99.2 | 99.2 |
| Whisper small | 264.5 MB | 129.4 | 123.4 | 145.1 | 144.7 |
| SraVaani-1.0 | 908.8 MB | 15.1 | 12.7 | 31.9 | 23.9 |
Word error rate %, lower is better; DiarBench 200 turns, the same scorer for every model, measured 2 November 2026. FLEURS is read speech we did not train on. Kathbath test-unknown has unseen speakers, but Kathbath’s train split is in our training data and very likely the others’. DiarBench is real conversation from outside our training data. DiarBench has 200 turns from 44 conversations, 5,881 reference words, 659 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 Gurmukhi. 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 Punjabi speech models exist that we have not measured; these results cover only the models listed here.
Where it falls short
- It leads no serious rival. Its strongest result is a level one: the interval against IndicConformer Punjabi only just includes 0 (-4.44 to +0.15), and with script ignored it is fully level (-2.69 to +1.53).
- Read Punjabi is far behind. FLEURS 29.3, against 16.9 and 15.1; Kathbath test-unknown 18.6, against 13.7 and 12.7.
- The native reference shows the gap. DiarBench native 38.3, against 28.4 and 23.9. Character errors there 28.26%, against 13.84% and 13.42%.
- Less English in this test. 659 of 5,881 reference words, so English helps less here. Local names glossed in Latin often come out in Gurmukhi and count as errors (chandigarh as ਚੰਡੀਗੜ੍ਹ).
- English words in Gurmukhi: about 168 of DiarBench’s 659 by automatic alignment (punjabi as ਪੰਜਾਬੀ). 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 9 lines played into this page on one phone’s Chrome, with the language set. All 9 came out in Gurmukhi, and 6 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 Punjabi 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 Punjabi).
- Not tested on Punjabi: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words.
Try Shruti Punjabi Shruti Punjabi 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-punjabi.cact, from Shruti Punjabi's Hugging Face repo
./needle --model shruti-punjabi.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-punjabi.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 Punjabi’s model card on Hugging Face lists its training datasets and their licences.