Instructions to use maya-research/maya-transcribe with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use maya-research/maya-transcribe with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="maya-research/maya-transcribe")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("maya-research/maya-transcribe") model = AutoModelForMultimodalLM.from_pretrained("maya-research/maya-transcribe", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Maya Transcribe: Hindi & Hinglish Speech-to-Text
Maya Transcribe is an open-weight Hindi and Hinglish speech-to-text model for voice agents and transcription applications. It recognizes Hindi-English code-switching, runs locally with Hugging Face Transformers, and uses an architecture with streaming inference support through a compatible serving backend. The weights are released under Apache-2.0.
5.85% Hindi OI-WER on Voice of India: #3 among 11 models in the open-source filter and #10 of 32 overall, checked on November 3, 2026. The leaderboard lists this release as Maya Transcribe One. View the Hindi STT leaderboard.
In our separate four-model release evaluation, Maya Transcribe ranks #1 by reported macro-average WER: 12.47% across eight Hindi and Hindi-English test conditions. See evaluation methodology and checkpoint-selection details.
It supports two transcription formats: Devanagari, including transliterated English words, or mixed script, with English words in Latin letters. Select the format with style: native or style: mixed.
Quickstart ยท Hindi voice agents & streaming ยท Output formats ยท Benchmarks ยท FAQ ยท Credits
Model details
| Languages | Hindi and Hindi-English code-switching |
| Parameters | 782.4 million, including the audio encoder |
| Weights | BF16 ยท 1.56 GB ยท Safetensors |
| Input | 16 kHz mono audio, up to 30 seconds per clip |
| Output | Text in Devanagari or mixed DevanagariโLatin script |
| Inference | Native Transformers; checkpoint saved with 5.20.2 |
| Streaming | Architecture support via a compatible serving backend; see integration notes below |
| License | Apache-2.0 |
The checkpoint stores 782,426,112 parameter elements across 611 tensors, including the audio encoder.
Quickstart
Use Python 3.12 and a fresh environment. Download the model and install the pinned dependencies:
python -m venv .venv
source .venv/bin/activate
pip install -U huggingface_hub
hf download maya-research/maya-transcribe --local-dir maya-transcribe
cd maya-transcribe
pip install -r requirements.txt
Transcribe a local audio file:
python transcribe.py hindi_clip.wav --style native
python transcribe.py hinglish_clip.wav --style mixed --output transcript.json
The CLI loads the local checkpoint, downmixes stereo, resamples to 16 kHz, and uses greedy decoding. It selects CUDA, Apple MPS or CPU when available. Use --device cpu to select CPU explicitly.
Clips longer than 30 seconds must be split before transcription. The CLI rejects overlong input and existing output files. Its JSON output includes a token-limit flag so truncated generation can be detected.
Python
from transformers import AutoProcessor, AutoModelForMultimodalLM
model_id = "maya-research/maya-transcribe"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=False)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto", trust_remote_code=False)
inputs = processor.apply_transcription_request(
audio="hindi_clip.wav", # path, URL or a 16 kHz numpy array
prompt="style: native", # or "style: mixed" to keep English words in Latin letters
language="Hindi",
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=512, do_sample=False)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(processor.decode(generated_ids, return_format="transcription_only")[0])
For a local checkpoint, set model_id to its directory. Always include a style prompt; the model was trained with these prompts to control script choice.
Batch inference
inputs = processor.apply_transcription_request(
audio=["clip1.wav", "clip2.wav"], prompt="style: mixed", language="Hindi",
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=512, do_sample=False)
texts = processor.decode(
output_ids[:, inputs["input_ids"].shape[1]:], return_format="transcription_only",
)
Adjust batch size to fit your device. See VALIDATION.md for the tested environment and inference checks.
Output formats
| Prompt | Format | Example |
|---|---|---|
style: native |
Hindi and English words in Devanagari | เคชเฅเคฎเฅเคเค เคชเฅเคเคกเคฟเคเค เคนเฅ |
style: mixed |
Hindi in Devanagari; English words in Latin script | payment pending เคนเฅ |
The examples above illustrate formatting. Use the same convention as your reference transcripts when evaluating recognition accuracy.
Audio example
The following 7.76-second clip is synthetic speech generated by Maya 2 Native. Both excerpts are actual outputs from this checkpoint:
| Prompt | Transcript excerpt |
|---|---|
style: native |
เคชเฅเคเคคเคพเคฒเฅเคธ เคเคฎเคเฅ เคฐเฅเคก เค
เคเคงเฅเคฐเฅ เคเคธเฅเค เคฎเฅเคเคฌเค |
style: mixed |
เคชเฅเคเคคเคพเคฒเฅเคธ mg road เค
เคเคงเฅเคฐเฅ east เคฎเฅเคเคฌเค |
Full transcripts and test environment.
Evaluation
Voice of India Hindi STT leaderboard
The independent Voice of India speech-to-text leaderboard reports the following Hindi results for Maya Transcribe One, checked on November 3, 2026, with language set to Hindi and all speaker/audio filters left at their defaults:
| Metric | Result |
|---|---|
| Hindi OI-WER | 5.85% |
| Rank in the open-source filter | 3 / 11 |
| Rank across all licences | 10 / 32 |
| Hindi evaluation samples | 21,020 |
The two models above Maya in the open-source filter are Bodhan's Indic Transcribe Core and Flex. Maya scores ahead of Nemotron 3.5 Transcribe, SraVaani, Gemma E4B, OmniASR LLM 7B v2 and Qwen3-ASR on this Hindi board.
Voice of India's methodology uses spontaneous telephonic speech and orthography-invariant word error rate (OI-WER), allowing accepted spelling variants. This is a different evaluation and metric from the release WER results below. The leaderboard measures transcription accuracy, not streaming behaviour or latency; its rankings are not a streaming-specific ranking. Live positions may change.
Release evaluation
The release evaluation covers 12,923 clips and 173,680 reference words across eight Hindi test conditions. Results are normalized word error rate (WER, %); lower is better.
All four systems were scored on the same clips. The normalizer removes punctuation and case, and treats split and joined abbreviations such as เค เคชเฅ เคเคซ เค and เคเคชเฅเคเคซเค as equivalent. Maya Transcribe uses greedy decoding, with style: mixed for the code-switching set and style: native elsewhere.
Checkpoint selection: half of each test set was used to choose the checkpoint. The full-set table includes those samples. Scores on the half excluded from checkpoint selection are listed separately below.
| Test set | Clips | Maya Transcribe | indic-transcribe-core | indic-transcribe-flex | Sarvam Saaras v3 (API) |
|---|---|---|---|---|---|
| Kathbath | 1,929 | 9.36 | 10.38 | 10.74 | 9.61 |
| Kathbath noisy | 1,929 | 10.01 | 10.95 | 11.25 | 10.48 |
| FLEURS | 418 | 10.72 | 10.10 | 10.35 | 10.01 |
| Common Voice | 1,727 | 11.54 | 11.01 | 11.57 | 12.02 |
| MUCS | 3,897 | 9.67 | 9.53 | 10.32 | 9.72 |
| Lahaja (accents) | 503 | 11.50 | 10.26 | 10.49 | 13.94 |
| Code-mix (Hindi-English) | 1,488 | 16.97 | 43.03 | 17.05 | 20.69 |
| Gram Vaani (phone calls) | 1,032 | 19.94 | 18.48 | 18.82 | 22.95 |
| Reported macro-average | 12,923 | 12.47 | 15.47 | 12.57 | 13.68 |
Maya Transcribe has the lowest reported macro-average in this comparison and the lowest WER on Kathbath, Kathbath noisy and Hindi-English code-switching. It trails other systems on the remaining five conditions. The 0.10-point macro-average difference from indic-transcribe-flex should not be treated as a statistically significant lead.
| Reported macro-WER on the half not used for checkpoint selection | WER |
|---|---|
| Maya Transcribe | 12.28 |
| indic-transcribe-core | 15.24 |
| indic-transcribe-flex | 12.46 |
| Sarvam Saaras v3 API | 13.79 |
Evaluation notes:
- Macro-average gives each test condition equal weight. It is not pooled, word-weighted WER. Values are reported from the release evaluation; recomputing from rounded table entries may differ slightly.
- Code-switching references use Latin-script English. Transcribing those words in Devanagari increases WER even when the spoken word is recognized.
- Nine Gram Vaani clips returned no Sarvam transcript and were counted as fully incorrect for that system.
- Dataset versions, exact split files, comparator revisions, per-clip outputs and the scoring implementation are not included. The evaluation has not been independently reproduced from those artifacts.
Training
All model parameters were updated on Hindi and Hindi-English speech using next-token transcript loss. The released weights are an average of selected checkpoints from the final training run.
Training hours, dataset identities, detailed data provenance, deduplication, hyperparameters and checkpoint-averaging settings have not been published.
Hindi voice agents and streaming
For developers building Hindi voice AI, Hinglish assistants, live transcription or call-centre voice agents, Maya combines downloadable weights, script control and a streaming-capable model architecture.
- Hindi-English code-switching: use
style: mixedto retain English terms in Latin script for downstream language models, search and transcript review. - Self-hosted speech recognition: run the downloaded checkpoint in your own environment under Apache-2.0.
- Streaming integration: incremental audio ingestion and partial transcripts belong to the serving backend. The included
transcribe.pyhandles complete clips; it does not start a microphone or WebSocket service.
The upstream architecture has a documented streaming inference implementation. Current vLLM documentation also describes a real-time ASR path through /v1/realtime. These are backend references, not a tested deployment recipe for this native Transformers checkpoint. Check checkpoint-format compatibility, preserve the style: native or style: mixed system prompt, and validate partial transcripts, final transcripts and end-to-end latency before integration.
For comparison, Bodhan's Indic-Transcribe release article describes its current models as recorded-audio transcription and lists real-time streaming as future work, as checked on November 3, 2026. Maya's streaming-capable architecture is relevant when selecting a Hindi ASR model for a live voice-agent stack. There is no published streaming-mode accuracy or latency benchmark for this Maya checkpoint yet.
Serving
The release notes report vLLM 0.29 serving on one A100 40 GB: approximately 0.16 seconds per single-request clip and 76 clips/second at concurrency 32. Clip durations, latency clock, warm-up and percentile measurements are not documented, so these figures are not deployment capacity targets.
The included inference script uses Transformers. Native and mixed-script transcription, two-item batch inference, and seven CLI checks passed on Apple Silicon with MPS. This does not validate the vLLM/A100 serving figures. Details are in VALIDATION.md.
Limitations
- Evaluation covers Hindi and Hindi-English speech. English-only speech and other languages were not evaluated.
- Phone-call audio remains difficult: Gram Vaani WER is 19.94%.
- Split recordings longer than 30 seconds. This repository does not include diarization, word timestamps, VAD-based long-form transcription or a validated real-time streaming service.
- Names, numbers, abbreviations and code-switched words may have multiple valid written forms. Check important transcripts against the recording.
Process audio you have permission to use and protect recordings and transcripts appropriately.
Developer FAQ
Can I use Maya Transcribe for Hindi speech recognition and Hinglish transcription?
Yes. The release focuses on Hindi and Hindi-English code-switching. Set language="Hindi" and use style: native for Devanagari output or style: mixed for Hindi with English words in Latin script. English-only speech and other languages have not been evaluated for this release.
Does Maya Transcribe support streaming ASR for voice agents?
Its model architecture supports streaming inference through a compatible serving backend. This repository provides complete-clip and batch inference. See streaming integration notes for backend references and the validation needed for this checkpoint.
Is Maya Transcribe the best Hindi ASR model?
It has the lowest reported macro-WER among the four systems in our release evaluation. On the independent Voice of India Hindi leaderboard, it ranks #3 in the open-source filter and #10 overall as of November 3, 2026. These results do not establish a universal or streaming-specific #1 rank. Choose using accuracy, script format and measured latency on your own audio.
Can I use it commercially and run it without a hosted API?
Yes. The model weights are Apache-2.0 and can be downloaded for local inference. After downloading the dependencies and checkpoint, local transcription does not require a hosted Maya API. Preserve the licence and attribution when redistributing.
License
Apache-2.0. Preserve the included NOTICE when redistributing.
Credits
Developed by Maya Research through full-parameter fine-tuning of Qwen/Qwen3-ASR-0.6B-hf. We thank the Qwen team for the pretrained model and Hugging Face and the Transformers contributors for the native inference implementation. The upstream โ0.6Bโ family name refers to the decoder scale; the full checkpoint includes the audio encoder.
@misc{maya_transcribe_2026,
title = {Maya Transcribe: Hindi and Hindi-English Speech Recognition},
author = {{Maya Research}},
year = {2026},
url = {https://huggingface.co/maya-research/maya-transcribe}
}
- Downloads last month
- 41
Model tree for maya-research/maya-transcribe
Base model
Qwen/Qwen3-ASR-0.6B-hfEvaluation results
- WER on Kathbath (Hindi test)self-reported9.360
- WER on Kathbath noisy (Hindi test)self-reported10.010
- WER on FLEURS (hi_in test)self-reported10.720
- WER on Common Voice (Hindi test)self-reported11.540
- WER on MUCS (Hindi test)self-reported9.670
- WER on Lahaja (Hindi accents test)self-reported11.500
- WER on MUCS code-switching (Hindi-English test)self-reported16.970
- WER on Gram Vaani (Hindi phone-call test)self-reported19.940