A clone from a short sample is a party trick if it disappears on restart; keeping it on disk is what turns it into a voice your workflow can rely on. The swappable backbone matters too — a smaller quantized model is the difference between usable and unusable on a laptop CPU, and switching is a configuration choice rather than a different product.
A speech server that runs NeuTTS models on your own CPU or GPU. Text goes in, a WAV file comes out, and nothing leaves the machine — which also means there is no key to configure and no usage meter running.
- Speech synthesised to a WAV file in a chosen voice — `tts_synthesize`
- Five built-in voices across four languages: English (jo, dave), German (greta), French (juliette) and Spanish (mateo) — `tts_list_speakers`
- A new voice cloned from a 3-15 second WAV sample and kept across restarts — `tts_add_speaker`
- The available backbone models listed, including smaller quantized GGUF variants, with optional CUDA acceleration — `tts_list_models`
- Usage guidance from the server itself, plus two ready-made prompt templates — `tts_help`
- Three transports: stdio for Claude Desktop and Claude Code, and SSE or Streamable HTTP for n8n and other remote clients
Python 3.10+ and `espeak-ng` installed through your package manager — apt, Homebrew or Chocolatey. No API key and no account. Clone the repository, create a virtual environment, then `pip install -e .` and `pip install "mcp[cli]"`, and point your client at `mcp_server.py` using the interpreter from that environment. For remote clients start it with `--transport sse` or `--transport streamable-http` and a host and port. The Python package is `neutts` (1.1.0).
One command — claude mcp add cheema-tts -- /full/path/to/venv/bin/python /full/path/to/mcp_server.py
