Voci is a free, open-source, self-hosted text-to-speech desktop app for Windows that reads any text out loud in a voice you clone yourself. Paste text, hit play, listen — entirely offline, on your own GPU (or CPU). No cloud APIs, no accounts, no per-character billing, no text ever leaves your machine.
Think of it as a self-hosted alternative to cloud TTS readers and "read aloud" browser extensions — private, free, multilingual, and speaking in a voice you chose.
🇪🇸 Lector de texto a voz autohospedado y gratuito con clonación de voz. 🇫🇷 Lecteur de texte à voix auto-hébergé et gratuit avec clonage vocal. 🇩🇪 Selbst gehostete, kostenlose Text-zu-Sprache-App mit Stimmenklonung. 🇵🇹 Leitor de texto em voz autônomo e gratuito com clonagem de voz. 🇮🇹 Lettore da testo a voce autoospitato e gratuito con clonazione vocale.
- Paste text, press play — a clean, distraction-free desktop app (native window, no browser tabs).
- Voice cloning — clone any voice from a short audio clip using Coqui XTTS-v2. Add multiple named voices from the built-in Settings panel (drag-and-drop a
.wav/.mp3, name it, save it) and switch between them before synthesizing. - 17 languages — English, Spanish, French, German, Italian, Portuguese, Polish, Turkish, Russian, Dutch, Czech, Arabic, Chinese, Hungarian, Korean, Japanese, and Hindi. Same cloned voice, any supported language.
- Starts speaking almost immediately — long text is chunked and synthesized progressively, so playback begins in seconds instead of waiting for an entire document to finish generating. A configurable "chunks to buffer" setting lets you trade a longer start delay for extra safety margin on slower machines.
- Cancel anytime — mid-synthesis, hit Cancel to stop generation immediately (e.g. you picked the wrong voice) and start over with different settings.
- Full playback control — play/pause, rewind & fast-forward, a scrubbable seek bar, live speed (0.5×–2×) and volume sliders that apply instantly, even mid-playback.
- Settings persist — language, speed, volume, and buffer size are remembered across restarts, not just page reloads.
- Read-along highlighting — the word currently being spoken is highlighted in real time as it plays.
- "Clean Text" button — one click strips file paths,
[bracketed]annotations, code fences, and URLs before reading, so pasted logs/docs/chat transcripts don't sound like noise. - Lives in the system tray — closing the window minimizes it; right-click the tray icon for Open / Quit.
- GPU-accelerated, CPU fallback — uses your NVIDIA GPU (CUDA) automatically if available; runs on CPU otherwise (slower).
- 100% local / self-hosted — no API keys, no internet required after first-time setup, nothing sent anywhere.
- Windows 10/11 (uses the Edge WebView2 runtime, pre-installed on Windows 11)
- Python 3.10–3.12
- ~5 GB free disk space (PyTorch + the XTTS-v2 model)
- An NVIDIA GPU with CUDA support is strongly recommended for speed; a CPU-only setup works but is noticeably slower
- Clone or download this repo.
- Run
run.bat. First launch installs dependencies and downloads the XTTS-v2 model (a few GB, one-time), then opens the app. - Add a voice. Click Settings inside the app, upload a short (10–30 second) clean
.wavor.mp3clip, give it a name, and save. You can add as many voices as you like and switch between them. - Paste some text, pick a language if it's not English, and press Synthesize.
No NVIDIA GPU? Open
run.batin a text editor and remove the--index-url https://download.pytorch.org/whl/cu124part of the PyTorch install line before running it, to install the CPU build instead.
- Longer pastes are automatically split into model-friendly chunks (never mid-word) and synthesized one after another — audio starts playing as soon as the first chunk (or however many you've configured to buffer) is ready.
- Drag the Speed or Volume sliders at any time, including while audio is playing — changes apply instantly.
- Use Rewind 10s / Fast-forward 10s, or drag the seek bar, to jump anywhere in the (already-generated) audio.
- Hit Clean Text before synthesizing if you've pasted something noisy (a stack trace, a file listing, a markdown doc with links) — it strips the parts that would sound awkward read aloud.
- If playback ever seems to catch up to generation (audio pauses waiting for the next chunk) — especially at higher speeds or on a slower GPU — raise the "chunks to buffer" value in Settings so more audio is queued up before it starts.
- Picked the wrong voice or language mid-synthesis? Hit Cancel — generation stops right away and you can re-run with different settings.
- Closing the window doesn't quit Voci — it drops into the system tray. Right-click the tray icon to reopen or fully quit.
English, Spanish, French, German, Italian, Portuguese, Polish, Turkish, Russian, Dutch, Czech, Arabic, Chinese (Mandarin), Hungarian, Korean, Japanese, Hindi.
Pick a language in Settings — Voci speaks the pasted text in that language, using whichever voice you've cloned. Write the text itself in the target language for best results.
Voci runs a small local Flask server (the same UI you'd get in a browser, just wrapped in a native window via pywebview with no address bar or tabs) backed by Coqui XTTS-v2 for synthesis:
- Each saved voice's reference clip(s) are used to compute voice-conditioning latents on first use, then cached in memory for instant reuse.
- Pasted text is split into ~200-character chunks along sentence/clause/word boundaries.
- Each chunk is synthesized in turn and streamed to the player as soon as it's ready, rather than waiting for the whole text to finish.
- Per-word highlight timing is estimated by distributing each chunk's actual generated audio duration proportionally across its words (XTTS doesn't emit word-level timestamps, so this is an approximation — close enough to track along visually).
Voice cloning is powerful — please use it responsibly:
- Only clone voices you have the right to use (your own voice, voices you have explicit consent for, or clips you're otherwise entitled to use).
- Don't use Voci to impersonate real people without their consent, or to create misleading or deceptive audio.
- The bundled model (XTTS-v2) is distributed separately by Coqui under the Coqui Public Model License (non-commercial use) — review it before any commercial use.
- Coqui TTS / XTTS-v2 — the voice cloning model
- pywebview — native desktop window
- pystray — system tray integration
Voci's source code is MIT licensed. The XTTS-v2 model it downloads at runtime has its own separate license — see Responsible use above.
If Voci is useful to you, consider starring the repo — it helps other people looking for a free, self-hosted text-to-speech app find it too.

