Skip to content

Voices

Voices

A voice is written engine:voice, and the default is kokoro:af_heart. It is chosen by --voice first, then series.json, then MANIMVOX_VOICE. If a voice is missing, not installed or lacks its key, the render stops with a one-line reason; manimvox never switches voice silently.

Engine Voice example Install Runs Licence
Kokoro (default) kokoro:af_heart kokoro offline, 354 MB model Apache-2.0 weights, MIT runtime
Piper piper:en_US-libritts_r-medium piper offline, ~80 MB per voice GPL-3.0 package; each voice's licence is saved beside it as <voice>.MODEL_CARD (CC BY 4.0 for the default)
macOS say say:Samantha built in, macOS only offline macOS licence: personal, non-commercial voice output
edge-tts edge:en-US-AriaNeural edge online, no key; text goes to Microsoft LGPL-3.0 package; Microsoft service terms
OpenAI openai:alloy, openai:tts-1-hd/onyx cloud + OPENAI_API_KEY online, paid OpenAI terms; disclose that the voice is AI-generated
ElevenLabs elevenlabs:<voice id> cloud + ELEVENLABS_API_KEY online, paid or free tier ElevenLabs terms; the free tier requires attribution
Sarvam AI sarvam:shubh, sarvam:anushka@hi-IN cloud + SARVAM_API_KEY online, paid; 11 Indian languages Sarvam AI terms
Gnani.ai gnani:Kaveri, gnani:Shivani@ta-IN cloud + GNANI_API_KEY online, paid; 10 Indian languages and Hinglish Gnani.ai terms
XTTS-v2 xtts:clone=voice.wav xtts offline, ~1.9 GB + PyTorch non-commercial (Coqui Public Model License)
F5-TTS f5:clone=voice.wav with voice.txt f5 offline, ~1.3 GB + PyTorch non-commercial weights (CC-BY-NC)

Notes on particular engines: - Voice cloning: the engines clone from a 6–30 second recording of the speaker. F5-TTS also needs a transcript of that recording: voice.txt, beside voice.wav, holding exactly what is said in it. - Paths: clone= recordings and local Piper .onnx voices are resolved from the project root. - Indian languages: Sarvam AI and Gnani.ai voices are written [model/]voice[@language]. With no model, the one that has the voice is used. With no language, Sarvam uses en-IN and Gnani detects it. For example, sarvam:bulbul:v4-flash/simran_en_customer or gnani:timbre-v3.0/Avinash@hi-IN. manimvox voices sarvam and manimvox voices gnani list the voices and languages. Sarvam takes speed 0.5 to 2.0 (0.3 to 3.0 on bulbul:v2), and Gnani takes 0.85 to 1.15. - Even loudness: every voice is levelled to the same loudness (loudness in series.json, −16 LUFS by default), so switching voices doesn't change the volume. - Online engines receive only the narration text. manimvox voices edge and manimvox voices elevenlabs go online to list their voices. - Downloads happen only after you confirm (or pass --yes). Kokoro and Piper files are verified by hash.

Licences were summarised on 2026-10-16 and have not been legally reviewed. Verify them upstream before any commercial use.