| --- |
| language: |
| - en |
| pipeline_tag: text-to-speech |
| tags: |
| - emotion |
| - emotions |
| - expressive-tts |
| - emotional-tts |
| license: other |
| --- |
| |
| # NeuTTS-2E |
|
|
| [](https://youtu.be/RYKQSTqdiDc) |
|
|
| [🚀 Spaces Demo](https://huggingface.co/spaces/neuphonic/neutts-2e), [🔧 Github](https://github.com/neuphonic/neutts) |
|
|
| [Q8 GGUF version](https://huggingface.co/neuphonic/neutts-2e-q8-gguf), [Q4 GGUF version](https://huggingface.co/neuphonic/neutts-2e-q4-gguf) |
|
|
| *Created by [Neuphonic](http://neuphonic.com/) - building faster, smaller, on-device voice AI* |
|
|
| **NeuTTS-2E** is a super-fast, highly realistic, **on-device** emotional TTS speech language model. It is an early alpha release, **English-only** model, supporting **six emotions plus neutral** (`angry`, `disgusted`, `fearful`, `happy`, `sad`, `surprised` and `neutral`) across **four fixed speakers** (`emily`, `paul`, `sophie`, `steven`). With a compact backbone and an efficient LM + codec design, NeuTTS-2E delivers strong naturalness and expressive control at a fraction of the compute, making it ideal for embedded voice agents, assistants, toys, and privacy-sensitive applications. |
|
|
| > [!NOTE] |
| > This model is **English only** with fixed speakers: for other languages and instant voice cloning, see the [NeuTTS Nano Multilingual Collection](https://huggingface.co/collections/neuphonic/neutts-nano-multilingual-collection). |
|
|
| ## Key Features |
|
|
| - ⚡️ **Ultra-fast for on-device** — built for real-time or better-than-real-time generation on laptop-class CPUs |
| - 😠😁😭 **Emotional control** — six emotions plus neutral, selected with a single argument |
| - 🗣 **High realism for its size** — natural, expressive speech in a compact footprint |
| - 📦 **GGUF/GGML-friendly deployment** — easy to run locally via CPU-first tooling |
| - 🔒 **Local-first + compliance-friendly** — keep audio and text on-device |
|
|
| > [!CAUTION] |
| > Websites like neutts.com are popping up and they're not affliated with Neuphonic, our github or this repo. |
| > |
| > We are on neuphonic.com only. Please be careful out there! 🙏 |
|
|
| ## Model Details |
|
|
| NeuTTS-2E is designed for **maximum speed per parameter** while retaining strong naturalness and expressive control: |
|
|
| - **Backbone**: compact LM backbone tuned for emotional TTS token generation |
| - **Input Format**: text — no phonemizer or system dependencies required |
| - **Speakers**: four fixed speakers (`emily`, `paul`, `sophie`, `steven`) |
| - **Emotions**: `angry`, `disgusted`, `fearful`, `happy`, `sad`, `surprised` and `neutral` |
| - **Audio Codec**: [NeuCodec](https://huggingface.co/neuphonic/neucodec) - our open-source neural audio codec that achieves exceptional audio quality at low bitrates using a single codebook |
| - **Format**: quantisations available in GGUF format for efficient on-device inference |
| - **Responsibility**: Watermarked outputs |
| - **Inference Speed**: Optimised for real-time generation on CPUs |
| - **Power Consumption**: Designed for mobile and embedded devices |
|
|
| ### Parameter Count |
|
|
| - **Active params (backbone only):** **~125M** |
| - **Total params (backbone + tied embeddings/head):** **~236M** |
|
|
| ## Get Started with NeuTTS |
|
|
| 1. **Install NeuTTS** |
| ```bash |
| pip install neutts |
| ``` |
|
|
| Or for a local editable install, clone the [neutts repository](https://github.com/neuphonic/neutts) and run in the base folder: |
| ```bash |
| pip install -e . |
| ``` |
|
|
| Alternatively to install all dependencies, including `onnxruntime` and `llama-cpp-python` (equivalent to steps 2 and 3 below): |
|
|
| ```bash |
| pip install neutts[all] |
| ``` |
|
|
| or for an editable install: |
|
|
| ```bash |
| pip install -e .[all] |
| ``` |
|
|
| 2. **(Optional) Install `llama-cpp-python` to use `.gguf` models.** |
|
|
| ```bash |
| pip install "neutts[llama]" |
| ``` |
|
|
| Note that this installs `llama-cpp-python` without GPU support. To install with GPU support (e.g., CUDA, MPS) please refer to: |
| https://pypi.org/project/llama-cpp-python/ |
|
|
| 3. **(Optional) Install `onnxruntime` to use the `.onnx` decoder.** |
| ```bash |
| pip install "neutts[onnx]" |
| ``` |
|
|
| ## Examples |
|
|
| To get started with the example scripts, clone the neutts repository and navigate into the project directory: |
|
|
| ```bash |
| git clone https://github.com/neuphonic/neutts.git |
| cd neutts |
| ``` |
|
|
| ### Basic Example |
|
|
| Run the emotional example script to synthesize speech: |
|
|
| ```bash |
| python -m examples.basic_example_emotions \ |
| --input_text "I can't believe it's finally here!" \ |
| --speaker emily \ |
| --emotion happy |
| ``` |
|
|
| ### Simple One-Code Block Usage |
|
|
| ```python |
| from neutts import NeuTTS2E |
| import soundfile as sf |
| |
| tts = NeuTTS2E() |
| |
| wav = tts.infer( |
| "I can't believe it's finally here!", |
| speaker="emily", |
| emotion="happy", |
| ) |
| sf.write("test.wav", wav, 24000) |
| ``` |
|
|
| # **Responsibility** |
|
|
| Every audio file generated by NeuTTS-2E includes by default a [Perth (Perceptual Threshold) Watermark](https://github.com/resemble-ai/perth). |
|
|
| # **Disclaimer** |
|
|
| Don't use this model to do bad things… please. |
|
|