Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Voci — Self-Hosted Text-to-Speech Reader with Voice Cloning

License Platform Python Self-hosted

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.

Voci idle

Features

  • 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.

Voci mid-playback with read-along highlighting

Requirements

  • 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

Quick start

  1. Clone or download this repo.
  2. Run run.bat. First launch installs dependencies and downloads the XTTS-v2 model (a few GB, one-time), then opens the app.
  3. Add a voice. Click Settings inside the app, upload a short (10–30 second) clean .wav or .mp3 clip, give it a name, and save. You can add as many voices as you like and switch between them.
  4. Paste some text, pick a language if it's not English, and press Synthesize.

No NVIDIA GPU? Open run.bat in a text editor and remove the --index-url https://download.pytorch.org/whl/cu124 part of the PyTorch install line before running it, to install the CPU build instead.

Usage tips

  • 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.

Supported languages

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.

How it works

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:

  1. Each saved voice's reference clip(s) are used to compute voice-conditioning latents on first use, then cached in memory for instant reuse.
  2. Pasted text is split into ~200-character chunks along sentence/clause/word boundaries.
  3. 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.
  4. 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).

Responsible use

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.

Credits

License

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.

About

Self-hosted, offline text-to-speech desktop app for Windows with voice cloning — paste text, hear it read aloud in a voice you choose. Runs locally on your GPU, no cloud APIs, no accounts.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages