NeuTTS is a family of open text-to-speech (TTS) speech language models from Neuphonic that run on-device with voice cloning from a short reference clip. Each model pairs a small LLM backbone with NeuCodec, a 50 Hz neural audio codec that uses a single codebook, and ships in PyTorch and Q4/Q8 GGUF quantizations for phones, laptops, and Raspberry Pi class hardware. Outputs are watermarked, and the 2048-token context covers about 30 seconds of audio including the reference prompt.
The neutts Python package loads any backbone with any codec. Cloning takes a reference WAV and its transcript, encodes them once, and reuses the codes across generations; NeuTTS-2E instead uses four fixed speakers (emily, paul, sophie, steven) with selectable emotions. Streaming synthesis, which plays audio in chunks as it generates, requires a GGUF backbone through llama-cpp-python. Generation is sampled and prints its seed, so a take can be reproduced by rerunning with that seed. A fine-tuning script and guide are included.
| Model | Active params | Input | Languages | Cloning | Emotions |
|---|---|---|---|---|---|
| NeuTTS-Air | ~360M | Phonemes | English | Yes | No |
| NeuTTS-Nano | ~120M | Phonemes | English, French, German, Spanish (one model each) | Yes | No |
| NeuTTS-2E | ~125M | Text | English | 4 fixed speakers | 6 + neutral |
Speech-language-model throughput for the Q4_0 quantizations, excluding the codec, at 500 prefill and 250 output tokens:
| Device | NeuTTS-Air | NeuTTS-Nano |
|---|---|---|
| Galaxy A25 5G (CPU) | 20 tokens/s | 45 tokens/s |
| AMD Ryzen 9 HX 370 (CPU) | 119 tokens/s | 221 tokens/s |
| iMac M4 16 GB (CPU) | 111 tokens/s | 195 tokens/s |
| NVIDIA RTX 4090 (vLLM) | 16,194 tokens/s | 19,268 tokens/s |
Features
- Voice cloning: a new speaker from as little as 3 seconds of reference audio plus its transcript
- Emotional speech: NeuTTS-2E supports angry, disgusted, fearful, happy, neutral, sad, and surprised
- Multilingual models: separate NeuTTS-Nano backbones for English, French, German, and Spanish
- Codec options: neucodec and distill-neucodec in PyTorch with encode and decode, plus ONNX decoder-only variants including an int8 build
- Quantized inference: Q4 and Q8 GGUF backbones via llama-cpp-python, with Accelerate, OpenBLAS, or GPU builds
- Streaming: chunked generation and playback with GGUF backbones
- Reproducible takes: printed seeds for rerunning a specific generation
- Fine-tuning: an included training script and guide
- Hosted demos: Hugging Face Spaces for NeuTTS-Air, the Nano multilingual collection, and NeuTTS-2E
