Maya 2 Native: Open TTS model for 11 Indian languages and English
Maya Research has released Maya 2 Native, a 2.5B-parameter text-to-speech model under Apache 2.0. It speaks Hindi, Tamil, Bengali and more, clones voices from a few seconds of audio and streams speech in real time.

What this is about
Maya Research has released the speech synthesis model Maya 2 Native on Hugging Face (Release 1.0, October 25, 2026). It converts text to speech (text-to-speech, TTS) and supports eleven Indian languages plus English: Assamese, Bengali, English, Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil and Telugu. Weights and inference code are freely available under the Apache 2.0 license. The model has 2.5 billion parameters (roughly, the adjustable knobs learned during training) and about 5.0 GB of BF16 weights.
The model produces 24 kHz mono audio and works in streaming mode: it delivers speech in 80-millisecond chunks while the rest is still being generated. That matters for voice assistants that need to respond quickly.
What the model can do
- 20 built-in voices with different profiles, such as young and energetic (Ahana, Charvi), calm (Vaidehi), narrative (Malini, Anirban) or natural conversational style (Ritvik, Kayal, Sreekar and others). The names refer to synthetic personas.
- Zero-shot voice cloning: From 3–10 seconds of clean reference audio plus its exact transcript, the model recreates a voice. It can speak across languages, for example using a Hindi reference to speak Tamil. The default mode
icl_spkcombines the reference audio with an ECAPA speaker embedding (a vector of numbers describing how a voice sounds). According to the Model Card, the similarity is only approximate, and there is no dedicated cloning benchmark. - Interfaces: a Python API, an OpenAI-compatible speech endpoint and WebSocket streaming. Continuous batching and CUDA graphs allow many simultaneous requests.
- Text normalization: Numbers, currencies, dates, times, URLs and email addresses are converted into spoken form. Servers enable this by default; in the Python API you need to set
normalize=True.
One quirk for developers: the model is called Maya 2 Native, but the package, class and config file are still named maya3, Maya3TTS and maya3_config.json.
Architecture
The model generates discrete audio tokens one after another and decodes them into speech with Kyutai's Mimi codec. The text-and-audio backbone is initialized from Qwen3-1.7B-Base (28 layers, hidden size 2,048). It predicts the first of 32 codebooks; a "depth decoder" with about 555M parameters fills in codebooks 1–31. Mimi runs at 12.5 frames per second. Training used a mix of licensed and synthetic speech with transcripts, plus text-only data. A final preference optimization (DPO) step was based on ASR agreement and speaker similarity. The developer does not disclose datasets or training hours.
Numbers and benchmarks
According to VoiceArena (Hindi, category "All", real-time models only, as of October 27, 2026), Maya-2-Native ranks 2nd:
| Rank | Model | Elo |
|---|---|---|
| 1 | Cartesia Sonic-3.6 | 1094 |
| 2 | Maya-2-Native | 1047 |
| 3 | Cartesia Sonic-3.5 | 1035 |
| 4 | Smallest AI Lightning 3.1 Pro | 1024 |
| 5 | Murf AI Falcon 2 | 1021 |
The confidence intervals overlap; Maya's rank range is 2–4. This applies to Hindi only.
The developer's own evaluation ("bench6k") covers 6,000 held-out texts (500 per language, 31 categories) and 20.3 hours of speech. Three ASR systems (speech recognizers) checked intelligibility via character error rate (CER, lower is better):
| Overall CER | ASR-1 | Qwen3-ASR | ASR-2 |
|---|---|---|---|
| Scorer v1 | 3.49% | 3.40% | 2.86% |
| Scorer v2 | 2.35% | 2.22% | 1.73% |
Hindi performs best (about 1.5–2.1%), while Assamese is the hardest (5.4–6.6%). For English, ASR-1 (9.69%) differs sharply from the others. The developer says this is partly because ASR-1 gets stuck in loops on spoken URLs. Voice identity (nearest of 20 centroids) is 98.6%, and the "consensus failure rate" is 0.15% (v1) and 0.03% (v2). Web addresses (CER up to 29%) and heavily mixed speech (code-mixing) remain difficult.
For streaming on an H100 NVL with 224 concurrent WebSocket streams, the developer reports 323 seconds of audio per second, a time to first audio of 111 ms (p50, sustained load) and no dropouts. A single stream reaches roughly 14 ms to first audio. These are vendor measurements on server hardware, not statements about internet or phone latency.
What you need to try it
- Operating system: Linux, Python 3.10–3.12.
- GPU: NVIDIA with a driver for CUDA 12.8. With
max_seats=1, steady-state demand is 7.7 GB, and the peak during loading is 9.2 GB plus about 0.5 GB of CUDA context. 12 GB of VRAM or more is recommended. - More concurrency: 8 seats need about 9.7 GB, 16 seats about 11.7 GB, 32 seats about 15.8 GB.
- Storage: about 5 GB for the weights, plus Mimi and the ECAPA encoder, which are downloaded on first launch.
- Mac, CPU, Colab: The source only mentions Linux with an NVIDIA GPU. A Google Colab run with a suitable NVIDIA GPU is conceivable but not documented.
Limitations and responsibility
The Model Card itself lists several limits. Assamese is the weakest, and no built-in voice has at least one hour of training data for it. Some outputs drift toward a Bengali-sounding timbre. Very short utterances (one or two words) are unstable, and URLs, symbols and long digit strings remain difficult. Emotion tags like [laughs] work on a best-effort basis. Loop and length guards can cut off repetitive text early.
On cloning specifically: only use voices with explicit permission, and disclose synthetic speech. There is no audio watermark. The bundled server has no authentication and should not be exposed to the internet unprotected.
Our take
Open TTS models often cover Indian languages beyond Hindi thinly. Maya 2 Native brings twelve languages, cloning and true streaming under a permissive license. That makes it interesting for voice agents, IVR systems, accessibility and read-aloud features. The Hindi ranking (2nd among real-time models, just behind a commercial provider) is a strong signal, but it applies only to that leaderboard, and the intervals overlap.
The caveat: most figures are vendor measurements using automated checkers. The card itself mentions no listening study on naturalness, no confidence intervals and no controlled comparison with other TTS models. The training data is not disclosed. Before using it in production, run your own listening tests with your own names, numbers and URLs.
Sources
- Hugging Face Trending huggingface.co
Try it yourself: Maya 2 Native
Explained step by step, no prior knowledge needed – on your own computer or free in your browser.
What can I do with it?
Maya 2 Native reads text aloud in twelve languages: Hindi, Bengali, Tamil, Telugu, Marathi, Gujarati, Kannada, Malayalam, Odia, Punjabi, Assamese and English. You can pick one of 20 built-in voices or recreate your own voice from a 3–10 second reference clip, even across languages. The model streams audio, so it suits voice assistants. It can convert numbers, dates and currencies into spoken form. Limits: Assamese is weaker, very short sentences are unstable, and URLs and long digit strings remain difficult. According to the developer, it ranks 2nd among real-time models on the VoiceArena Hindi leaderboard. Independent comparisons are missing.
Who is it worth it for?
Worth a look for developers and tinkerers who want to build voice agents, read-aloud features or audiobooks in Indian languages, and for anyone who wants a self-hosted, openly licensed TTS. Less suitable if you only need German (not supported) or don't have an NVIDIA GPU on Linux.
Ideas: What you can do with it
Plug the OpenAI-compatible endpoint into a bot that answers customers in Hindi or Tamil. Streaming keeps waiting times short.
Generate blog posts or news as WAV files in Marathi or Bengali, for example for visually impaired readers.
Create train station or store announcements in several Indian languages with the same voice using cross-language cloning.
Write stories and have them voiced with a warm narrator voice like Malini.
Record 10 seconds of yourself and have the model speak texts in Tamil or Telugu in your voice, for example for videos. Only use voices with permission.
What your computer needs
There is only one checkpoint (BF16, about 5 GB). To get started, a GPU with 12 GB of VRAM and max_seats=1 is enough. For multiple parallel users, memory demand rises (16 seats about 12 GB, 32 seats about 16 GB).
- An NVIDIA GPU with a driver for CUDA 12.8 is required, along with Linux and Python 3.10–3.12.
- With max_seats=1: about 7.7 GB steady state, 9.2 GB peak during loading, plus about 0.5 GB of CUDA context.
- max_seats determines the reserved memory, even if not all seats are in use.
- 2,048 KV-cache tokens are budgeted per seat. The developer's benchmark ran on an H100 NVL.
- The source lists no support for Mac or CPU-only operation.
How do I find out what my computer has?
- Windows: Press Ctrl + Shift + Esc → Task Manager → Performance tab → click GPU on the left. At the bottom you'll see Dedicated GPU memory (that's your VRAM). You'll find system memory under Memory.
- Mac: Apple menu at the top left → About This Mac. You'll see your chip (e.g. M2) and memory (e.g. 16 GB). On Apple chips, graphics and processor share this memory.
- Linux: Type
nvidia-smiin the terminal (shows your graphics card and its memory) andfree -hfor system memory.
Guide
This model runs with its developers' own program (MayaResearch/maya2-native on GitHub). The commands below come from the Model Card and the developers' instructions.
In the browser (no installation)
The developers have an online demo on Hugging Face. You can try the model right away there without installing anything. Sometimes you have to wait a moment for the demo to wake up.
Windows 10 / 11
Windows 10 / 11: not supported. According to the source, Maya 2 Native only runs on Linux with an NVIDIA graphics card. Windows is not supported. Alternative: a Linux machine or a rented Linux server with an NVIDIA GPU (e.g. Colab). The source doesn't say whether WSL2 works.
macOS
macOS: not supported. The program needs Linux and an NVIDIA graphics card with CUDA. Macs have no NVIDIA card, so it won't work. Alternative: a Linux machine or a rented Linux server with an NVIDIA GPU (e.g. Colab).
Linux
Linux: supported. Officially supported: Linux, Python 3.10–3.12, NVIDIA GPU with a CUDA 12.8 driver. H100 and RTX 4090 were tested. Other cards aren't mentioned in the source, but should work with enough memory.
- Check the prerequisites. You need Linux, Python 3.10, 3.11 or 3.12, Git and an NVIDIA GPU with at least 8 GB of memory, ideally 12 GB. The NVIDIA driver must support CUDA 12.8. The first two commands show your Python version and your card along with its driver.
python3 --version nvidia-smi - Download the program. git clone fetches the program code into a new folder called maya3. cd switches into that folder.
git clone https://github.com/MayaResearch/maya2-native maya3 && cd maya3 - Create your own environment. A venv is an isolated Python folder so nothing collides with other programs. Afterwards, (.venv) appears at the start of your prompt. You need to repeat this in every new terminal.
python -m venv .venv && . .venv/bin/activate - Install the packages. This command installs Maya and all required parts, including PyTorch for CUDA 12.8. It's large and takes a few minutes. It should finish without red error messages.
pip install -e ".[server]" --extra-index-url https://download.pytorch.org/whl/cu128 - Save the example script. This command creates the file demo.py. It loads the model, speaks a Hindi sentence in the voice Ahana and saves it as speech.wav. max_seats=1 keeps memory demand low.
cat > demo.py << 'EOF' import soundfile as sf from maya3 import Maya3TTS tts = Maya3TTS.from_pretrained("maya-research/maya2-native", max_seats=1) audio = tts.generate( "नमस्ते, आपका ऑर्डर कल पहुँच जाएगा।", lang="hi", voice="Ahana", normalize=True, ) sf.write("speech.wav", audio, 24000) tts.close() EOF - Generate your first result. On first launch, the program automatically downloads the model (about 5 GB) and two helper models (Mimi and ECAPA). That takes a while, but later runs are fast. It's done when the script ends without errors and speech.wav is in the folder.
python demo.py - Listen to it. Play the file with any audio player. You'll hear the Hindi sentence in 24 kHz quality.
ls -l speech.wav - Result. The folder contains the file speech.wav with the spoken Hindi sentence in the voice Ahana.
What to do after your first result
- In demo.py, change the text, lang (e.g. "ta", "te", "en") and voice (e.g. "Siddhant", "Vaidehi"). All 20 voices can speak all 12 languages. List them with: python examples/synthesize.py --list-voices
- Faster from the command line: python examples/synthesize.py "నమస్కారం, మీరు ఎలా ఉన్నారు?" --lang te --voice Sreekar -o out.wav
- Clone your own voice: With tts.register_voice("my_voice", ref_audio="ref.wav", ref_text="exact text of the recording", lang="hi") you use a clean recording of 3–10 seconds. Only use voices when the person has consented.
- As a server: python -m maya3.server --ckpt maya-research/maya2-native --host 127.0.0.1 --port 8080 --max-seats 1 starts an OpenAI-compatible interface. It has no password protection, so don't expose it to the open internet.
Try it
नमस्ते, आपका ऑर्डर कल पहुँच जाएगा। (Hindi, voice Ahana)Your order has shipped and will arrive tomorrow. (English, voice Siddhant)வணக்கம், எப்படி இருக்கிறீர்கள்? (Tamil, with a cloned Hindi voice)মনে রাখবেন, আপনার EMI প্রতি মাসের ৫ তারিখে কাটা হবে। (Bengali with code-mixing)A short bedtime story in Hindi as streaming output with the voice Vaidehi
Tips for better results
- For short agent replies, use a slightly longer sentence, since one- or two-word inputs are unstable.
- Always check names, URLs and important numbers by listening.
- Match the voice to the language: voices with many training languages (e.g. Ahana, Vaidehi) sound more natural in all languages.
- Start with max_seats=1 and only increase it when needed, since memory demand grows with each seat.
If something goes wrong
The package is still called maya3 (class Maya3TTS, maya3_config.json), even though the model is named Maya 2 Native.
In the Python API you must set normalize=True, otherwise numbers and dates aren't spoken out. Servers do this by default.
On first launch, the Mimi codec and ECAPA encoder are downloaded as well. For offline use, cache them first, then set HF_HUB_OFFLINE=1.
For cloning, you need clean audio of a single person and the exact transcript. Noise or incorrect text degrades the result.
The bundled server has no authentication. Don't expose it to the internet unprotected.
Use either a built-in voice or your own reference, not both. Don't write the voice name into the text.
“out of memory,” a crash, or your computer freezes
The model is too big for your VRAM (video memory). Pick a smaller variant from the table above and close other programs, especially games and browsers with lots of tabs.
It runs, but extremely slowly
Your CPU is probably doing the work instead of your graphics card. In Ollama, the PROCESSOR column of ollama ps shows how much runs on the GPU. If it says "100% CPU", update your graphics driver or pick a smaller variant that fits entirely into VRAM (video memory).
“ollama” or “python” is not found
Close the terminal window and open it again so it recognizes the newly installed program. For Python on Windows: reinstall it and check Add python.exe to PATH.
Windows: "Running scripts is disabled on this system"
Run the script with exactly the command above: powershell -ExecutionPolicy Bypass -File try_windows.ps1. This allows execution for this one time only.
Error message when loading the model (version, "trust_remote_code", unknown architecture)
Brand-new models often need the latest software version. With Ollama: update Ollama. With Python: pip install -U transformers in the activated environment. The Model Card usually lists the exact version.
Tokenstrom generates the scripts and notebook automatically. Please take a quick look before running them – they're plain, readable text. Mind the model's license: apache-2.0.
Ask the AI assistant
Questions about this article, installation or background? Our assistant knows this page and runs on our own machine, not in someone else's cloud.
The Assistant is an AI (Gemma 4) and can make mistakes – please check important details against the source. Questions are used only to generate an answer and are deleted after one hour. Please don't enter any personal data.
Comments
What do you think? Already tried it? Write it here, no sign-up needed.
Comments are public. Links aren't allowed, and we delete abusive posts. You can delete your own comment at any time in this browser. Learn more in the Privacy Policy.