Skip to content
ByteKnot Labs
  • Released v1
  • Open weights
  • Apache 2.0
  • CPU only
  • Offline

AksharSTT: speech to text for Hindi, English and Hinglish, on a CPU

One 29.5 MB file that turns speech into text on the processor you already have, with no GPU and no internet connection. It runs 96 times faster than real time on a desktop CPU, and every score is published, including where it loses.

v1 released 7 November 2026 · by the ByteKnot Labs AI Lab

One clip, start to finish

जैसे कि आप देख सकते हैं workspace में पांच tabs हैं

11 words · 5.55 s of audio

Speech to text0.105 s for 5.55 s
The bar is a Hinglish tutorial clip from the MUCS test set. The lit part is the 0.105 seconds AksharSTT took to write it down on a laptop CPU: 1.9% of the clip's length.

AksharSTT in numbers

Model file
29.5 MB
4-bit weights in a single file, small enough to ship inside an app.
Speed
96×
Faster than real time, on 12 threads of a Ryzen 9 7900X.
Clip to text
0.105 s
For 5.55 seconds of Hinglish speech, on a laptop CPU.
Memory
< 150 MB
While transcribing. No GPU and no internet connection.
Parameters
55M
An encoder-decoder transformer, 8 + 8 layers.
Word error rate
22.28%
Mean over six public test sets. Lower is better.

What is AksharSTT?

AksharSTT is a speech-to-text model from the ByteKnot Labs AI Lab. It writes down Hindi, English and the Hinglish in between, with Hindi in Devanagari, English words in Latin letters, and a time and a confidence for every word. It runs offline on an ordinary CPU: the model is a single 29.5 MB file that transcribes 96 times faster than real time on a desktop processor, in under 150 MB of memory. Version 1 came out on 7 November 2026 with open weights under Apache 2.0, and its word error rate is published for six public test sets, including the ones where it loses.

What it is built from

Built on Whistle from Cactus Compute and trained with Shruti from Udgam Labs as its teacher, on open speech from AI4Bharat, Google and OpenSLR. All three models are Apache 2.0.

What it shows for client work

We trained, compressed and measured a model end to end on one consumer GPU over two nights. Client model work runs the same way: an evaluation set first, the smallest model that measures the same, and weights the owner keeps.

Why AksharSTT

Built for how people in India speak.

  • Hinglish the way people type it

    Hindi words come out in Devanagari and English words in Latin letters, in the same sentence. Numbers are written as words and punctuation is left out, so your app formats the text its own way.

  • Runs where the audio is

    Once the file is on the machine, nothing is sent anywhere. It works on a train, in a clinic with poor signal or behind a company firewall.

  • Low latency on a plain CPU

    A 5.55-second clip becomes text in about a tenth of a second on a laptop, and a desktop processor runs it 96 times faster than real time. No GPU, no queue and no network round trip.

  • A time for every word

    Each word carries when it was said and how sure the model was, which is what captions, search inside recordings and word highlighting need.

  • Small enough to ship

    4-bit weights in one 29.5 MB file, plus a 20.4 MB lite version for apps with a tight size budget. It fits inside an app download.

  • Open down to the training records

    The weights are Apache 2.0, and the full-precision checkpoint, training code, data pipeline and the evaluation harness behind every score are public.

Size and speed

A lightweight model with low latency on an ordinary CPU.

The weights were 4-bit from the first training update, so the model learned to work at that precision instead of being squeezed afterwards. That is how about 55 million parameters fit in a 29.5 MB file, 7.5 times smaller than the 222.1 MB full-precision checkpoint.

On 12 threads of an AMD Ryzen 9 7900X it runs 96 times faster than real time in under 150 MB of memory, so an hour of audio takes about 38 seconds. On a laptop CPU, a 5.55-second clip is text in 0.105 seconds, with no GPU, no queue and no network round trip.

File size, in megabytes
  • Full-precision weights, for further training222.1 MB
  • AksharSTT v1, 4-bit: the file you ship29.5 MB
  • akshar lite v0, 2-bit with a 4-bit encoder20.4 MB

Accuracy

Every score in public, including where it loses.

Word error rate is the share of words a model gets wrong, so lower is better. AksharSTT is measured beside Shruti from Udgam Labs, the open model AksharSTT learned from, and the one it set out to beat. It is ahead on FLEURS Hindi and MUCS 2021, and Svarah is its weakest set.

Word error rate per test set, in per cent. Lower is better.
  • AksharSTT v1
  • Shruti, the teacher
Mean over six test sets
22.28%
Shruti: 21.78%, so AksharSTT is 0.50 behind.
Ahead of its teacher
2 of 6
FLEURS Hindi and MUCS 2021.
Words written on silence
0
On 100 clips of silence and background noise.
Word error rate in per cent on each test set, AksharSTT v1 and Shruti. Lower is better.
Test setClipsShrutiAksharSTT v1Difference
MonsoonUnscripted phone calls between two people75320.5421.781.24 behind
FLEURS HindiHindi sentences read aloud41820.2119.370.84 ahead
LahajaHindi from speakers with accents from across India6,15226.2926.490.20 behind
MUCS 2021Technical tutorials that switch between Hindi and English3,13635.2634.410.85 ahead
SvarahEnglish spoken with Indian accents6,65622.4524.682.23 behind
LibriSpeechEnglish audiobooks, test-clean2,6205.956.920.97 behind
Mean of the six21.7822.280.50 behind

How we measured. Word error rate is the share of words a model gets wrong, in per cent. Both models ran through one evaluation harness on the same AMD Ryzen 9 7900X, over the full test sets. Text is normalised with nfc-lower-punct2space-v1 and decoded by the needle engine (build 3.3.3, cactus-needle 3.2.8) with its default five beams, with the language set to hi for the Hindi and Hinglish sets and en for the English ones. Monsoon is scored with OIWER, which accepts any spelling its references list for a word. The harness and every number are in the akshar repository.

Versions

Every version, scored the same way.

Each version runs on the same clips, so the table shows exactly what changed between them.

  • AksharSTT v1

    Current

    7 November 2026 · 29.5 MB, 4-bit · 524 hours of audio

    22.28%

    mean word error rate

    Ahead of its teacher on FLEURS Hindi and the MUCS Hinglish tutorials. The last training step learned from human transcripts.

  • akshar v0

    6 November 2026 · 29.5 MB, 4-bit · 364 hours of audio

    23.11%

    mean word error rate

    The first version, trained only on the teacher's transcripts and on less data.

  • akshar lite v0

    6 November 2026 · 20.4 MB, 2-bit with a 4-bit encoder · 364 hours of audio

    24.03%

    mean word error rate

    About a third smaller, for apps with a tight size budget. A lite build of v1 is next.

Word error rate in per cent for every version of AksharSTT, per test set. Lower is better.
VersionMonsoonFLEURS HindiLahajaMUCS 2021SvarahLibriSpeechMean
AksharSTT v121.7819.3726.4934.4124.686.9222.28
akshar v023.5320.9227.7034.7524.816.9823.11
akshar lite v024.7921.7828.1835.0626.457.9124.03
Shruti, for reference20.5420.2126.2935.2622.455.9521.78

How it was trained

Four steps, two nights, one consumer GPU.

  1. 1

    Teach it Devanagari

    AksharSTT starts from Whistle, an open model from Cactus Compute built for English and European languages. We added 714 Devanagari word pieces and a Hindi tag from Shruti's tokenizer, each new piece starting from the bytes it replaces.

  2. 2

    Learn from a teacher

    56,000 updates on up to 364 hours of audio, with Shruti's transcripts as targets and its full predictions as a second signal. The weights were 4-bit from the first update, so the model learned to work with them.

  3. 3

    Hear more of India

    64,000 more updates on 524 hours from nine sources, adding the rest of Kathbath, Hindi lectures from NPTEL and more of IndicVoices. Phone calls improved the most.

  4. 4

    Learn from people

    2,400 final updates against the datasets' own human transcripts, converted to the same output style. The mean word error rate fell from 22.45 to 22.28.

Model card

Architecture
Whistle encoder-decoder transformer, 8 + 8 layers, width 512
Parameters
About 55 million
Precision
4-bit weights and 8-bit activations, trained that way from the first update
Model file
akshar-v1.cact, 29.5 MB, for the needle engine from Cactus Compute
Full weights
akshar-v1.safetensors, 222.1 MB, for further training
Tokenizer
Whistle's, plus 714 Devanagari pieces and a Hindi language tag
Output
Hindi in Devanagari, English words in lower-case Latin letters, numbers as words, no punctuation, and a time and confidence for each word
Speed and memory
96 times real time on 12 threads of an AMD Ryzen 9 7900X, in under 150 MB
Training compute
About 11.5 GPU hours on one NVIDIA RTX 5080, over two nights
Licence
Apache 2.0, for the weights and the code

Built with

  • Python
  • Whistle
  • needle engine
  • Hugging Face
  • Quantisation-aware training
  • Knowledge distillation
Licences and credits

Training data

524 hours of open speech, from 9 sources.

All nine sources are published under licences that allow commercial use. Every training clip that matched a test clip, by its audio or by its text, was removed first, so the scores are on speech the model never heard.

The data AksharSTT was trained on, with hours and licences
DatasetSpeechHoursLicence
KathbathAI4Bharat, HindiSentences read aloud and recorded on phones135CC BY 4.0
MUCS 2021Hindi and EnglishTechnical tutorials that switch between Hindi and English92CC BY-SA 4.0
IndicVoicesAI4Bharat, HindiRead, spontaneous and conversational speech from many districts83CC BY 4.0
Rural Women ASR v2AI4Bharat, HindiWomen in rural India speaking freely80CC BY 4.0
NPTELAI4Bharat, HindiUniversity lectures in Hindi, full of English technical terms60CC BY 4.0
NPTELAI4Bharat, EnglishUniversity lectures in Indian English53CC BY 4.0
LibriSpeechEnglishAudiobooks, from train-clean-10022CC BY 4.0
FLEURSGoogle, HindiWikipedia sentences read aloud3CC BY 4.0
Silence and noiseByteKnot Labs, NoneGenerated clips with no speech, so the model learns to stay quiet2Ours
Total1% held out for validation, so 524 hours were trained on530

Languages

Hindi first. More Indian languages next.

Version 1 understands Hindi, English and the Hinglish between them. The same recipe is coming to more Indian languages, one at a time, each with its scores in public.

Available now

  • हिन्दीHindi
  • EnglishIndian English
  • हिन्दी + EnglishHinglish

On the way

  • मराठीMarathi
  • বাংলাBengali
  • தமிழ்Tamil
  • తెలుగుTelugu
  • ગુજરાતીGujarati
  • ಕನ್ನಡKannada
  • മലയാളംMalayalam
  • ਪੰਜਾਬੀPunjabi
  • ଓଡ଼ିଆOdia

Developers

A transcript in a few lines of Python.

The model file runs on the needle engine from Cactus Compute. Download it from Hugging Face and call it from Python, or run the akshar server package and send audio to it over HTTP from any language.

transcribe.py
# pip install cactus-needle==3.2.8 huggingface_hub
import os
os.environ.setdefault("NEEDLE_TELEMETRY", "0")  # needle reports usage unless these are set
os.environ.setdefault("DO_NOT_TRACK", "1")

from huggingface_hub import hf_hub_download
from needle import Whistle

model = Whistle(hf_hub_download("byteknotlabs/AksharSTT-V1", "akshar-v1.cact"))
result = model.transcribe("speech.wav", language="hi")
print(result["text"])
Your own HTTP API
# with the akshar server package running on this machine
curl http://localhost:8765/v1/transcribe \
  -F [email protected] \
  -F model=akshar-v1 \
  -F language=hi

Good to know

Read this before you build on it.

  • Indian-accented English is its weakest set

    On Svarah it is 2.23 points behind Shruti. It has 53 hours of Indian English lectures to learn from so far, and more accented English is planned.

  • Plain text out

    No punctuation, and numbers as words: “नौ बजे” rather than “9:00”. Formatting is left to your app.

  • Set the language

    Use hi for Hindi and Hinglish and en for English. Detection exists, but every published score was measured with the language set.

  • Borrowed words can go either way

    English words that Hindi has borrowed, such as time or phone, sometimes come out in Devanagari and sometimes in Latin letters, depending on how the training data wrote them.

  • Measured on Linux so far

    The published numbers come from x86 Linux machines. The engine runs on other platforms, but measurements there are not published yet.

  • Two languages for now

    It understands Hindi and English only, so other Indian languages will not transcribe well until their own versions ship.

FAQ

AksharSTT questions

Last reviewed

What is AksharSTT?

AksharSTT is an open-weight speech-to-text model from ByteKnot Labs for Hindi, English and Hinglish. It runs offline on an ordinary CPU, the whole model is one 29.5 MB file, and it gives a time and a confidence for every word.

Does AksharSTT work offline?

Yes. Once the model file is on the machine, transcription happens there and nothing is sent anywhere. Only the browser demo on akshar.byteknotlabs.com sends your clip to a server, so you can try it without installing anything.

Can AksharSTT transcribe Hinglish?

Yes. It was trained on speech that switches between Hindi and English, and it writes it the way people type it: Hindi in Devanagari, English words in Latin letters. On the MUCS 2021 Hinglish tutorials its word error rate is 34.41%, against 35.26% for its teacher, Shruti.

How fast is AksharSTT on a CPU?

On 12 threads of an AMD Ryzen 9 7900X it runs 96 times faster than real time in under 150 MB of memory, so at that speed an hour of audio takes about 38 seconds. On a laptop CPU, a 5.55-second clip took 0.105 seconds.

How accurate is AksharSTT?

Its mean word error rate over six public test sets is 22.28%, half a point behind Shruti, the model it learned from. It is ahead on FLEURS Hindi and the MUCS Hinglish tutorials and behind on the other four, with Indian-accented English its weakest set. The harness and every number are public.

Is AksharSTT free for commercial use?

Yes. The weights and the code are released under Apache 2.0, which allows commercial use. The NOTICE file on Hugging Face credits the models and datasets it is built from.

What hardware does AksharSTT need?

A CPU. It needs no GPU and no internet connection, and it uses under 150 MB of memory while transcribing. The published measurements are from x86 Linux; the engine also runs on macOS and ARM Linux.

Can AksharSTT be trained on our own recordings?

Yes. The full-precision weights and the training code are public, so it can be trained further on your audio. We do this as a custom model project in your own cloud account, with an evaluation set built from your recordings first.

Which Indian languages are next for AksharSTT?

Marathi, Bengali, Tamil, Telugu, Gujarati, Kannada, Malayalam, Punjabi and Odia are on the way, one at a time. We do not give dates: each language ships with its scores on public test sets, as Hindi did.

Need speech to text, or another model, trained on your own data and running in your own account?

Taking on new projects

Want a model like this inside your product?

A short call, a written brief, and a straight answer on scope, price and timeline before any work starts. NDA first if you need one.