About ez-tts
ez-tts is a local text-to-speech skill based on Kyutai Pocket TTS for offline speech generation after the initial model download. It supports multiple languages, preset voices, and cloning from audio samples.
Key features
- 01Local text-to-speech generation
- 02Offline use after initial model download
- 03Supports six languages
- 04Includes preset voices
- 05Clones voices from audio samples
Use cases
- 01Generate speech audio offline
- 02Choose a voice for text in another language
- 03Synthesize speech with a preset voice
- 04Clone a voice from a clear speech sample
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ araa47/ ez-voice --skill ez-ttsAfter installing, type/ez-ttsin Claude Code to confirm it loaded.
Bundled filesscripts/tts.py
Details
From the project READMEez-tts - Local Text-to-Speech
Local text-to-speech using Kyutai's Pocket TTS. Fully offline after initial model download. ~10x realtime on CPU, no GPU needed.
Supports english, french, german, portuguese, italian, spanish (pocket-tts 2.x).
Usage
# Basic English (outputs to /tmp/tts_output.wav)
uv run scripts/tts.py "Hello, this is a test"
# Specify preset voice
uv run scripts/tts.py "Hello world" --voice marius
# Other languages (default voice picked per language)
uv run scripts/tts.py "Hola mundo" --language spanish
uv run scripts/tts.py "Bonjour le monde" --language french
uv run scripts/tts.py "Ciao mondo" --language italian --voice giovanni
# Custom output file
uv run scripts/tts.py "Hello world" --out ~/my_audio.wav
# Output as OGG (for voice messages, requires ffmpeg)
uv run scripts/tts.py "Hello world" --ogg
# Voice cloning from a local sample (requires HF_TOKEN + HF access to kyutai/pocket-tts)
uv run scripts/tts.py "Hello world" --voice /path/to/sample.ogg
Languages
| Language | Notes | Default voice |
|---|---|---|
english (default) | Same as english_2026-04 | alba |
english_2026-01 / english_2026-04 | English model variants | alba |
spanish / spanish_24l | _24l = higher quality, slower | lola |
german / german_24l | juergen | |
italian / italian_24l | giovanni | |
portuguese / portuguese_24l | rafael | |
french_24l | French is 24-layer only (french alias works) | estelle |
Preset Voices
English: alba, marius, javert, jean, fantine, cosette, eponine, azelma, anna, vera, charles, paul, george, mary, jane, michael, eve, bill_boerst, peter_yearsley, stuart_bell, caro_davy
Other languages: giovanni (it), lola (es), juergen (de), rafael (pt), estelle (fr)
Custom cloned voices can be placed in the skill's voices/ directory and used by name (e.g., --voice myvoice if voices/myvoice.ogg exists).
Voice Cloning
Clone any voice from a clear speech sample:
uv run scripts/tts.py "Hello world" --voice ~/voices/my_voice.ogg
Requirements:
- Accept the terms on https://huggingface.co/kyutai/pocket-tts
HF_TOKENenvironment variable set- Audio sample should be clear speech (WAV/OGG/MP3/FLAC)
Preset catalog voices work without cloning weights; file-path cloning needs the full model.
Options
--voice/-v— Voice name or path to audio for cloning (default depends on--language)--language/-l— Model language (default:english)--out/-o— Output file path (default:/tmp/tts_output.wav)--ogg— Convert output to OGG (requires ffmpeg)--quiet/-q— Suppress progress messages
Environment Variables
| Variable | Purpose |
|---|---|
HF_TOKEN | Hugging Face token for model download / voice cloning |