In this categoryLocal AI · 59
- How to Run Indra OCR Locally: a 1M-Parameter CPU Model That Hits 49 Pages a Second
- How to Run AuroraIMG-6M Locally: AuroraAI-Research's 6.82M-Parameter Text-to-Image Model
- How to Run Maya-1 Locally: a 3.3B-Parameter Text-to-Speech Model with Voice Design
- How to Run Sopro V2 Turbo Locally: a 120M-Parameter Voice Cloning TTS Model
- How to Run Kova TTS 1 Locally: a 1.25B-Parameter Voice Cloning Model for Narration
- How to Run Whistle Locally: Cactus's 16.9MB On-Device Speech Recognition Model
- How to Run Antalia-2 Mini Locally: a 7.6M-Parameter Turkish TTS Model
- How to Run Supra2-IMG Locally: SupraLabs' 104M-Parameter Text-to-Image Model
- How to Run VisionHOPE Locally: PSRben's Self-Modifying Vision Backbone
- Fish Audio S1-Mini: What It Is and How to Actually Try It
- How to Run SupraTTS-0.1-Beta Locally: A Tiny Glow-TTS Voice Model
- How to Run Nemotron 3 Diarization Locally: Streaming Speaker Tagging in 99M Parameters
- How to Run Freya-TTS Locally: A 183M-Parameter Turkish Text-to-Speech Model
- How to Run Audio8 ASR Infinite Locally: Streaming Speech Recognition That Never Stops
- How to Run TeleOCR Locally: One Model for Scanned and Photographed Documents
- How to Run Xing4.0-29B-A4B Locally: A 256K-Context MoE Model for Agent Tasks
- How to Run IndicF5 Locally: Voice Cloning for 11 Indian Languages
- How to Run Fish Audio S2 Pro Locally: Multilingual TTS with Inline Emotion Control
- How to Run ZDTaichu5.0-9B Locally: A 9.79B Vision-Language Model Built for Spatial Reasoning
- How to Run Qwen3-TTS-12Hz-1.7B-VoiceDesign Locally: Voice Design From a Text Description
- How to Run YuE2-3B Locally: Open Source Music Generation That Beats Suno v5 on Benchmarks
- MiniCPM5-2B: Install and Run OpenBMB's 2B Model That Outscores 4B Rivals
- BERT Base Uncased: Specs, How to Run It, and Why It's Still Trending in 2026
- How to Run tencent/AuK Locally: Zero-Shot TTS, Voice Cloning and Speech Editing
- Stable Diffusion 3.5 Medium: What's Different From SDXL and Flux
- Qwen-Image-2512: The Text-to-Image Model That Renders Real Text
- How to Run Irodori-TTS Anime Locally: Japanese Voice Cloning and Voice Design
- How to Run Breeze TTS 2 Locally: Voice Clone, Voice Design and Voice Direction
- How to Run Kokoro-82M Locally: the Fastest Open-Weight TTS Model
- How to Install Ollama on macOSStart
- How to Install Ollama on Windows
- How to Run Llama 3 Locally with Ollama
- How to Pick the Right Local AI Model for Your Hardware
- Best GGUF Models to Run by VRAM Tier (8GB, 12GB, 16GB, 24GB, 48GB)
- Run LLMs in Your Browser With WebGPU: No Install, No Server (WebLLM)
- How to Use Ollama as a Drop-In OpenAI API
- GGUF vs MLX vs NVFP4: Local AI Quantization Formats Explained
- Best GPU for Running AI Locally in 2026Start
- How Much RAM Do You Need for Local AI?
- Mac vs PC for Local AI: Which Should You Choose?
- How to Build a Local AI Workstation on Any Budget
- How to Set Up Local AI on 8GB of VRAM
- How to Set Up Local AI on 12GB of VRAM
- Best Local LLM for 16 GB VRAM: Setup, Quantization and Real Speed
- How to Set Up Local AI on 24GB of VRAM
- Best Local LLM on Mac M4 16 GB: Setup, MLX vs GGUF and Real Speed
- Best Local LLM on Mac M4 Pro 48GB: Setup, Quantization and Real Speed
How to Run Maya-1 Locally: a 3.3B-Parameter Text-to-Speech Model with Voice Design
Maya-1 is an open-weight, 3.3 billion parameter text-to-speech model from Maya Research. Instead of picking from a fixed list of speakers, you describe the voice you want in plain English, add inline tags like <laugh> or <whisper> for delivery, and the model generates SNAC audio tokens that decode to 24 kHz speech. It is licensed under Apache 2.0 and needs 16 GB or more of VRAM to run at BF16.
Maya-1 is an open-weight, 3.3 billion parameter text-to-speech model from Maya Research. Instead of picking from a fixed list of speakers, you describe the voice you want in plain English, add inline tags like <laugh> or <whisper> for delivery, and the model generates SNAC audio tokens that decode to 24 kHz speech. It is licensed under Apache 2.0 and needs 16 GB or more of VRAM to run at BF16.
Written by Priya Raghunathan, local-AI hardware reviewer. I check parameter counts, licenses and hardware requirements against the primary source before recommending an install path.
A new top-20 entrant on Hugging Face's trending list
Maya-1 entered the top 20 of Hugging Face's trending text-to-speech list. At time of writing it has 911 likes and 6,939 downloads on the maya-research/maya1 model page, released October 18, 2025, under the Apache 2.0 license. The model's audio decoder, SNAC, is a separate MIT-licensed project with 777 stars on GitHub. The top linked Space is maya-research/maya1 (116 likes), a browser demo of the model.
Specs at a glance
| Field | Value |
|---|---|
| Publisher | Maya Research |
| Pipeline | Text-to-speech |
| Parameters | 3.30B (3,300,928,512 safetensors total, BF16) |
| Architecture | LlamaForCausalLM, decoder-only |
| Audio representation | SNAC discrete audio codes, decoded with hubertsiuzdak/snac_24khz |
| Audio output | 24 kHz, mono |
| Voice control | Natural-language voice description plus 20 inline emotion/style tags |
| Voice cloning | Not supported; voice design from a text description only |
| VRAM | 16 GB or more on a CUDA GPU with BF16 support (RTX 4090, A100, H100) |
| Streaming latency | Under 100 ms reported, via a vLLM reference setup with prefix caching |
| License | Apache 2.0 |
| Release date | October 18, 2025 |
| GitHub stars (SNAC decoder) | 777 |
What it actually does
Most open text-to-speech models give you a short list of built-in speakers, or ask for a reference clip to clone. Maya-1 takes a third path: you write a sentence describing the voice, something like a 30 year old American man with a warm baritone and a conversational pace, and the model generates a matching voice from that description alone. The model card contrasts this directly with reference-audio cloning tools like Coqui XTTS-v2. Delivery is controlled the same way text is: drop a tag like <laugh_harder>, <whisper> or <cry> into the sentence and the model works it into the speech at that point.
Under the hood, Maya-1 is a Llama-architecture causal language model that treats audio the same way it would treat the next word in a sentence. It predicts a stream of discrete tokens, then a separate decoder, SNAC, turns those tokens into a 24 kHz waveform. That split is why the GitHub stars in the table above point to a different repository than the model itself: SNAC is Maya Research's chosen codec, not something they built, and it carries its own MIT license.
Install it
Maya-1 runs through the standard Hugging Face transformers stack plus the SNAC decoder package. There is no separate CLI or custom repo to clone for basic inference.
Generate speech in Python
Maya-1's own model card ships this reference script. It builds a formatted prompt from a voice description and your text, generates SNAC tokens with transformers, then decodes them to a wav file. The constants below are fixed token IDs from Maya-1's vocabulary, copy them exactly.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from snac import SNAC
import soundfile as sf
CODE_START_TOKEN_ID = 128257
CODE_END_TOKEN_ID = 128258
CODE_TOKEN_OFFSET = 128266
SNAC_MIN_ID = 128266
SNAC_MAX_ID = 156937
SOH_ID, EOH_ID, SOA_ID, TEXT_EOT_ID = 128259, 128260, 128261, 128009
def build_prompt(tokenizer, description: str, text: str) -> str:
soh = tokenizer.decode([SOH_ID])
eoh = tokenizer.decode([EOH_ID])
soa = tokenizer.decode([SOA_ID])
sos = tokenizer.decode([CODE_START_TOKEN_ID])
eot = tokenizer.decode([TEXT_EOT_ID])
formatted = f'<description="{description}"> {text}'
return soh + tokenizer.bos_token + formatted + eot + eoh + soa + sos
def unpack_snac_from_7(snac_tokens: list) -> list:
frames = len(snac_tokens) // 7
snac_tokens = snac_tokens[: frames * 7]
l1, l2, l3 = [], [], []
for i in range(frames):
slots = snac_tokens[i * 7 : (i + 1) * 7]
l1.append((slots[0] - CODE_TOKEN_OFFSET) % 4096)
l2.extend([(slots[1] - CODE_TOKEN_OFFSET) % 4096, (slots[4] - CODE_TOKEN_OFFSET) % 4096])
l3.extend([(slots[2] - CODE_TOKEN_OFFSET) % 4096, (slots[3] - CODE_TOKEN_OFFSET) % 4096,
(slots[5] - CODE_TOKEN_OFFSET) % 4096, (slots[6] - CODE_TOKEN_OFFSET) % 4096])
return [l1, l2, l3]
model = AutoModelForCausalLM.from_pretrained(
"maya-research/maya1", torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained("maya-research/maya1", trust_remote_code=True)
snac_model = SNAC.from_pretrained("hubertsiuzdak/snac_24khz").eval().to("cuda")
description = "Realistic male voice in the 30s age with american accent. Normal pitch, warm timbre, conversational pacing."
text = "Hello! This is Maya1 <laugh_harder> the best open source voice AI model with emotions."
prompt = build_prompt(tokenizer, description, text)
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False).to("cuda")
with torch.inference_mode():
outputs = model.generate(
**inputs,
max_new_tokens=2048,
min_new_tokens=28,
temperature=0.4,
top_p=0.9,
repetition_penalty=1.1,
do_sample=True,
eos_token_id=CODE_END_TOKEN_ID,
pad_token_id=tokenizer.pad_token_id,
)
generated = outputs[0, inputs["input_ids"].shape[1]:].tolist()
eos = generated.index(CODE_END_TOKEN_ID) if CODE_END_TOKEN_ID in generated else len(generated)
snac_tokens = [t for t in generated[:eos] if SNAC_MIN_ID <= t <= SNAC_MAX_ID]
levels = unpack_snac_from_7(snac_tokens)
codes = [torch.tensor(level, dtype=torch.long, device="cuda").unsqueeze(0) for level in levels]
with torch.inference_mode():
z_q = snac_model.quantizer.from_codes(codes)
audio = snac_model.decoder(z_q)[0, 0].cpu().numpy()
sf.write("output.wav", audio[2048:], 24000)Swap the description and text strings for your own voice and line, run the script, and output.wav comes out at 24 kHz mono. The 2048-sample trim at the end drops the decoder's warmup samples, keep it.
Getting to real-time streaming
The script above waits for the full generation to finish before you hear anything, fine for testing, too slow for a live conversation. Maya Research's own release claims streaming latency under 100 milliseconds, but that number comes from a separate vLLM-based reference setup that uses automatic prefix caching and decodes audio in overlapping four-frame windows, not the plain transformers script above. The repository ships that vLLM streaming script alongside the standard weights; reach for it once the simple script above is generating audio you're happy with.
Known limitations
Maya-1 cannot clone a voice from reference audio, it only designs one from a text description, so there is no path to reproducing a specific real person's voice from a sample clip. Pronunciation of names, numbers and abbreviations needs spot-checking, as does intelligibility across languages and accents other than the model's primary American-English training focus. At 3.3 billion parameters it needs a 16 GB or larger GPU for the documented BF16 path; there is no official CPU or Apple Silicon path described in the release. And because synthetic voice is the whole point of the model, Maya Research's own terms ask you to disclose synthetic audio where appropriate and rule out deceptive impersonation, fraud, fabricated evidence or unauthorized representations of a real person.
Maya-1 vs Kova TTS 1
Both are open-weight, multi-billion-parameter-adjacent speech models built on a Llama backbone, but they solve different problems. Kova TTS 1 clones a specific voice from a reference clip and its transcript, ships under a research and non-commercial license, and targets long-form narration with word-level timestamps. Maya-1 designs a voice from a written description instead of cloning one, is more than twice the size at 3.3 billion parameters, needs a 16 GB or larger GPU where Kova runs down to CPU, and ships under the fully permissive Apache 2.0 license. Reach for Kova TTS 1 when you need to reproduce one particular voice; reach for Maya-1 when you want a wide range of describable voices and emotional delivery without a license negotiation.
FAQ
What is Maya-1?
Maya-1 is an open-weight, 3.3 billion parameter text-to-speech model from Maya Research. It generates a voice from a natural-language description rather than cloning or picking from a speaker list, and supports 20 inline emotion and delivery tags.
Can Maya-1 clone my voice from a recording?
No. Maya-1 only designs voices from text descriptions. For reference-audio voice cloning, a model like Kova TTS 1 is built for that instead.
How much VRAM do I need?
Maya Research recommends 16 GB or more on a CUDA-capable GPU with BF16 support, such as an RTX 4090, A100 or H100. The release does not document a CPU or Apple Silicon path.
Is Maya-1 free to use commercially?
Yes, the model weights are released under Apache 2.0. Check the separately licensed SNAC decoder's terms too, since it's a dependency rather than part of Maya-1 itself, though it is also released under a permissive license, MIT.
Where to go from here
- Need to clone a specific voice instead of designing one? Run Kova TTS 1 locally covers a reference-audio cloning model built for narration.
- Want fixed stock voices with no GPU required? Run Kokoro-82M locally covers a CPU-friendly TTS model with 54 voices across 8 languages.
- Browse other speech and audio models: the local AI model directory lets you compare specs side by side.
Local models run better with more VRAM. CompareRTX GPUs on Amazonbefore you upgrade.(affiliate link. We may earn a commission at no extra cost. Disclosure)
Watch related tutorials
9:42
10:30
11:05
9:50
13:30
16:45Weekly local AI drops
New models, what runs on your hardware, and the guides to set them up. One email a week, unsubscribe any time.