Install Neu TTS on Windows with Conda

Introduction

State-of-the-art Voice AI has been locked behind web APIs for too long. NeuTTS is a collection of open source, on-device, TTS speech language models with instant voice cloning. Built off of LLM backbones, NeuTTS brings natural-sounding speech, real-time performance, built-in security and speaker cloning to your local device - unlocking a new category of embedded voice agents, assistants, toys, and compliance-safe apps.

GitHub: https://github.com/neuphonic/neutts
Hugging Face: https://hf.co/neuphonic/neutts-air
Demo: https://hf.co/neuphonic/spaces

Key Features

  • 🗣Best-in-class realism for their size - produce natural, ultra-realistic voices that sound human, at the sweet spot between speed, size, and quality for real-world applications
  • 📱Optimised for on-device deployment - quantisations provided in GGUF format, ready to run on phones, laptops, or even Raspberry Pis
  • 👫Instant voice cloning - create your own speaker with as little as 3 seconds of audio
  • 🚄Simple LM + codec architecture - making development and deployment simple

Prerequisites

System requirements:

  • Operating System: Windows 10/11 (64-bit), macOS, or Linux (Debian/Ubuntu).
  • Python: version >= 3.10 required
  • Disk Space: 4GB+ recommended (for dependencies and model cache). At least 400 MB for Miniconda; 3 GB+ for full Anaconda.
  • The GPU is optional. It runs smoothly on a laptop CPU.
  • Internet: For downloading dependencies and models from Hugging Face Hub.
Environment Run this Command
CPU only pip3 install torch torchvision
CUDA 11.8 pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu118
CUDA 12.1 pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu121
CUDA 12.6 pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu126
CUDA 12.8 pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu128
CUDA 13.0 pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu130

PyTorch

Note: CUDA version check by command

nvidia-smi

PyTorch

Video tutorial

Coming soon!

Step 1. Install Miniconda Package

Download Miniconda: https://www.anaconda.com/download/success?reg=skipped

Direct link: https://anaconda.com/api/installers/Miniconda3-latest-Windows-x86_64.exe

How to Install Miniconda on Windows

Step 2. Create Conda Environment

Create a conda environment:

name: neutts
channels:
  - conda-forge
  - defaults
dependencies:
  # Python version (requires >= 3.10)
  - python=3.10
  - pyaudio            # for streaming playback examples

  - pip
  - pip:
      # PyTorch CUDA is optional. It runs smoothly on a laptop CPU.
      # - --extra-index-url https://download.pytorch.org/whl/cu126
      - torch
      - torchaudio

      # For fix ModuleNotFoundError: No module named 'torchao.dtypes.nf4tensor'
      - torchao==0.13.0

      # Install NeuTTS
      - neutts

      # Download the model from Hugging Face
      - huggingface_hub

Activate conda environment:

conda env create -f environment.yml
conda activate neutts

Clone and install NeuTTS from source (run after activating the environment)

git clone https://github.com/neuphonic/neutts.git
cd neutts

The reference audio https://github.com/neuphonic/neutts/tree/main/samples

Step 3. Access to model

Request Access on the Hugging Face Website. Because this model has restricted access, you must manually accept its terms first:

  1. Log in to your Hugging Face account in your browser.
  2. Go directly to the model page of NeuTTS Nano and NeuCodec:
  3. Fill out any required information and click the Accept Conditions or Request Access button.
  4. Generate a token with Read permissions by going to your Hugging Face Settings > Access Tokens.
  5. Open your terminal and run: huggingface-cli login
  6. Paste your token when prompted and hit Enter.

Step 4. Run the Inference

Now, run the basic example script to synthesize speech:

python -m examples.basic_example --input_text "My name is Sophie. I'm 25 and I just moved to London." --ref_audio samples/sophie.wav --ref_text samples/sophie.txt

The result will be the audio file output.wav

One-Code Block Usage

from neutts import NeuTTS
import soundfile as sf

tts = NeuTTS(
   backbone_repo="neuphonic/neutts-nano", # or 'neuphonic/neutts-nano-q4-gguf' with llama-cpp-python installed
   backbone_device="cpu",
   codec_repo="neuphonic/neucodec",
   codec_device="cpu"
)
input_text = "My name is Andy. I'm 25 and I just moved to London. The underground is pretty confusing, but it gets me around in no time at all."

ref_text = "samples/jo.txt"
ref_audio_path = "samples/jo.wav"

ref_text = open(ref_text, "r").read().strip()
ref_codes = tts.encode_reference(ref_audio_path)

wav = tts.infer(input_text, ref_codes, ref_text)
sf.write("test.wav", wav, 24000)