File size: 2,888 Bytes
2d14e88
 
 
 
 
 
 
 
 
8333b42
2d14e88
 
8333b42
2d14e88
8333b42
2d14e88
8333b42
2d14e88
8333b42
2d14e88
 
 
 
8333b42
2d14e88
8333b42
2d14e88
 
 
8333b42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2d14e88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8333b42
 
2d14e88
 
 
 
 
8333b42
 
 
2d14e88
8333b42
 
2d14e88
 
 
8333b42
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
license: other
language:
- en
tags:
- gguf
- tts
- neutts
- text-to-speech
base_model: neuphonic/neutts-nano
---

# NeuTTS Nano GGUF

GGUF conversions of [Neuphonic's NeuTTS Nano](https://huggingface.co/neuphonic/neutts-nano) — a compact (~228 M params, ~117 M active) on-device TTS LM with instant voice cloning.

The stack is split so each runtime owns the part it's good at:

- **LLM-part** — text-and-reference-codes to speech token IDs, stock `llama` arch, runs in **llama.cpp**.
- **Codec-part** — speech token IDs to/from 24 kHz PCM via [NeuCodec](https://huggingface.co/neuphonic/neucodec), runs in [codec.cpp](https://github.com/mybigday/codec.cpp).

## Files

### LLM-part (llama arch, vocab 194256, RoPE θ=500000 + linear scaling x32)

`neutts-nano-<quant>.gguf`

| File              | Size    |
| ----------------- | ------- |
| `neutts-nano-f32.gguf`    | 925 MB  |
| `neutts-nano-f16.gguf`    | 467 MB  |
| `neutts-nano-bf16.gguf`   | 467 MB  |
| `neutts-nano-q8_0.gguf`   | 253 MB  |
| `neutts-nano-q6_k.gguf`   | 245 MB  |
| `neutts-nano-q5_k_m.gguf` | 217 MB  |
| `neutts-nano-q5_k_s.gguf` | 214 MB  |
| `neutts-nano-q5_1.gguf`   | 216 MB  |
| `neutts-nano-q5_0.gguf`   | 209 MB  |
| `neutts-nano-q4_k_m.gguf` | 210 MB  |
| `neutts-nano-q4_k_s.gguf` | 205 MB  |
| `neutts-nano-q4_1.gguf`   | 202 MB  |
| `neutts-nano-q4_0.gguf`   | 194 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-q2_k.gguf`   | 190 MB  |

### Codec-part (NeuCodec, `neucodec` arch, 65536 codebook, 24 kHz, 80 Hz token rate)

`codec[-<quant>].gguf`

| File                | Size    |
| ------------------- | ------- |
| `codec-f32.gguf`    | 928 MB  |
| `codec-f16.gguf`    | 465 MB  |
| `codec-q8_0.gguf`   | 326 MB  |
| `codec-q5_k_m.gguf` | 270 MB  |
| `codec-q4_k_m.gguf` | 252 MB  |

## Prompt format

The reference flow (from `neuphonic/neutts`):

```
user: Convert the text to speech:<|TEXT_PROMPT_START|>{ref_phones} {input_phones}<|TEXT_PROMPT_END|>
assistant:<|SPEECH_GENERATION_START|>{ref_codes_as_speech_tokens}
```

- `{ref_phones}` / `{input_phones}` — IPA-phonemized text (espeak-ng / phonemizer).
- `{ref_codes_as_speech_tokens}` — concatenation of `<|speech_N|>` strings for each NeuCodec token of a reference clip.
- Generation continues with more `<|speech_N|>` tokens until `<|SPEECH_GENERATION_END|>`.

Speech-token vocab range: `<|speech_0|>` = id 128262 … `<|speech_65535|>` = id 193797.
Stop token: `<|SPEECH_GENERATION_END|>` = id 128261.

## Notes

- Reference encoding (audio → speech tokens) needs the codec encode path.
- Phonemization isn't part of the GGUF — apply espeak-ng (or equivalent) on the host before tokenizing prompts; raw English text will be off-distribution.
- Source weights: `neuphonic/neutts-nano` (LLM) and `neuphonic/neucodec` (codec).