NeuTTS Nano โ GGUF
Neuphonic's NeuTTS Nano: compact English TTS with builtin voices and voice cloning.
Two files make one model, as with llama.cpp's multimodal projectors: the model file is the text-to-speech LM backbone, run by llama.cpp; the codec file holds the audio side (decoder / vocoder, speaker encoders and the adaptor between the two), run by codec.cpp. The runtimes below wire the two graphs together, on CPU or GPU (CUDA, Vulkan, Metal), fully offline.
Files
Every run needs one model file + one codec file from this repo.
--backbone |
--model (codec) |
Total | |
|---|---|---|---|
| Recommended | neutts-nano-q8_0.gguf |
codec-q8_0.gguf |
634 MB |
| Smallest | neutts-nano-q4_k_m.gguf |
codec-q4_k_m.gguf |
513 MB |
| Best quality | neutts-nano-f16.gguf |
codec-f16.gguf |
993 MB |
Other files
| File | Size |
|---|---|
codec-f32.gguf |
1.0 GB |
codec-q5_k_m.gguf |
323 MB |
neutts-nano-bf16.gguf |
467 MB |
neutts-nano-f32.gguf |
924 MB |
neutts-nano-q2_k.gguf |
190 MB |
neutts-nano-q3_k_l.gguf |
200 MB |
neutts-nano-q3_k_m.gguf |
196 MB |
neutts-nano-q3_k_s.gguf |
190 MB |
neutts-nano-q4_0.gguf |
194 MB |
neutts-nano-q4_1.gguf |
202 MB |
neutts-nano-q4_k_s.gguf |
205 MB |
neutts-nano-q5_0.gguf |
209 MB |
neutts-nano-q5_1.gguf |
216 MB |
neutts-nano-q5_k_m.gguf |
217 MB |
neutts-nano-q5_k_s.gguf |
214 MB |
neutts-nano-q6_k.gguf |
245 MB |
Command line (codec.cpp)
With codec.cpp's tts-cli (build it; it bundles llama.cpp), then:
hf download BricksDisplay/NeuTTS-Nano-GGUF neutts-nano-q8_0.gguf codec-q8_0.gguf --local-dir NeuTTS-Nano
./build/tts-cli synthesize --backbone NeuTTS-Nano/neutts-nano-q8_0.gguf --model NeuTTS-Nano/codec-q8_0.gguf \
--voice dave \
--text "รฐษ bหษหtส kษnหuห slหษชd ษnรฐษ smหuหรฐ plหรฆลks." --output out.wav
Clone a voice (the transcript is given in phonemes too):
./build/tts-cli synthesize ... --ref-audio my_voice.wav --ref-text "<phonemes of the clip>" \
--save-speaker my_voice.gguf --text "<phonemes>" --output out.wav
All tts-cli options (voices, voice cloning, sampling, GPU) are described in the codec.cpp README.
Python
The codec_cpp package runs the same pipeline (it builds codec.cpp with its
bundled llama.cpp, so it needs CMake and a C++ compiler):
pip install "codec-cpp @ git+https://github.com/mybigday/codec.cpp" huggingface_hub soundfile
import codec_cpp, soundfile
from huggingface_hub import hf_hub_download
tts = codec_cpp.TTS(hf_hub_download("BricksDisplay/NeuTTS-Nano-GGUF", "neutts-nano-q8_0.gguf"),
hf_hub_download("BricksDisplay/NeuTTS-Nano-GGUF", "codec-q8_0.gguf"))
audio, sr = tts.synthesize("รฐษ bหษหtส kษnหuห slหษชd ษnรฐษ smหuหรฐ plหรฆลks.", voice="dave")
soundfile.write("out.wav", audio, sr)
tts.voices() lists the builtin voices; ref_audio= clones a voice where the
model supports it; tts.stream(text) yields audio as it is generated. More in
the Python docs.
React Native (llama.rn)
llama.rn loads the same two files on iOS and Android:
const ctx = await initLlama({ model: 'neutts-nano-q8_0.gguf', embedding: true })
await ctx.initVocoder({ path: 'codec-q8_0.gguf' })
const { prompt, grammar, embedding, flow } = await ctx.getFormattedAudioCompletion({
prompt: 'Hello world',
phonemizer: (text, lang) => toIPA(text, lang), // espeak-style IPA, see Input text
})
const result = await ctx.completion({ prompt, grammar, embedding })
const pcm = flow === 'continuous_embd'
? await ctx.decodeAudioEmbeddings(result.embeddings, result.embedding_dim)
: await ctx.decodeAudioTokens(result.audio_tokens)
Voice cloning, saved voices and per-model notes: llama.rn TTS docs.
Input text
The model reads IPA phonemes, not plain text. Convert your text with
espeak-ng (stress marks and punctuation kept), e.g. with Python's phonemizer:
from phonemizer.backend import EspeakBackend
g2p = EspeakBackend("en-us", preserve_punctuation=True, with_stress=True)
print(g2p.phonemize(["The birch canoe slid on the smooth planks."])[0])
Or build codec.cpp with -DCODEC_TTS_ESPEAK=ON and pass English text directly.
Sampling
The model files carry the recommended sampling as llama.cpp's
general.sampling.* metadata, the settings of the original inference code;
tts-cli, tts-server, llama.rn and any llama.cpp host apply them unless
you set your own.
| Setting | Value | tts-cli flag |
|---|---|---|
| temperature | 1.0 | --temp 1.0 |
| top-k | 50 | --top-k 50 |
| top-p | 1.0 (off) | --top-p 1.0 |
| min-p | 0 (off) | --min-p 0.0 |
Sampling is limited to the speech tokens and the end token, and the end token
is held back for the first 25 frames (--min-len).
Voices
Builtin: jo (default), dave, emily, paul, sophie, steven (English),
plus mateo (Spanish), greta (German), juliette (French) for Neuphonic's
other-language models. Voice cloning: --ref-audio with --ref-text.
License
Same terms as the original model: its LICENCE.
- Downloads last month
- 2,085
2-bit
3-bit
4-bit
5-bit
6-bit
8-bit
16-bit
32-bit
Model tree for BricksDisplay/NeuTTS-Nano-GGUF
Base model
neuphonic/neutts-nano