Instructions to use OpenVoiceOS/phoonnx-kitten-tts with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- KittenTTS
How to use OpenVoiceOS/phoonnx-kitten-tts with KittenTTS:
from kittentts import KittenTTS m = KittenTTS("OpenVoiceOS/phoonnx-kitten-tts") audio = m.generate("This high quality TTS model works without a GPU") # Save the audio import soundfile as sf sf.write('output.wav', audio, 24000) - Notebooks
- Google Colab
- Kaggle
File size: 2,341 Bytes
7d86807 | 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 | ---
license: apache-2.0
language:
- en
tags:
- tts
- text-to-speech
- onnx
- phoonnx
- styletts2
- kittentts
---
# phoonnx-kitten-tts
[phoonnx](https://github.com/TigreGotico/phoonnx) mirror of
[KittenML/KittenTTS](https://github.com/KittenML/KittenTTS) — a family of tiny,
fully offline, CPU-only English TTS models. The upstream ONNX graphs are used
unmodified; this repo adds phoonnx-canonical `config.json` files (vocab +
inference defaults) and splits each `voices.npz` into one style `.bin` file
per voice, matching phoonnx's `StyleTTS2Adapter` engine_params contract.
Upstream sources (Apache-2.0, verified on each model card):
- https://huggingface.co/KittenML/kitten-tts-nano-0.1
- https://huggingface.co/KittenML/kitten-tts-nano-0.2
- https://huggingface.co/KittenML/kitten-tts-mini-0.1
## Layout
```
nano-0.1/model.onnx, config.json, <voice>.bin (x8)
nano-0.2/model.onnx, config.json, <voice>.bin (x8)
mini-0.1/model.onnx, config.json, <voice>.bin (x8)
```
Voices (same 8 across all tiers): `expr-voice-2-m`, `expr-voice-2-f`,
`expr-voice-3-m`, `expr-voice-3-f`, `expr-voice-4-m`, `expr-voice-4-f`,
`expr-voice-5-m`, `expr-voice-5-f`.
## Engine contract
`input_ids (int64) + style (1, 256) + speed (1) -> waveform @ 24kHz`, the same
single-graph contract phoonnx's `StyleTTS2Adapter` already implements for
StyleTTS2 and Kokoro — no new adapter code was needed. Tokenization is a
per-character map over espeak-ng `en-us` IPA (with stress marks), reproduced
verbatim from `kittentts==0.1.3`'s inline vocab, not hand-copied.
## Parity / quality gates (2026-08-04, phoonnx feat/kitten-tts)
WER (parakeet-tdt-0.6b-v2, 5 sentences, `expr-voice-2-f`):
| tier | WER | mean RTF (CPU) |
|---|---|---|
| nano-0.1 | 0.08 | 0.24 |
| nano-0.2 | 0.08 | 0.23 |
| mini-0.1 | 0.04 | 0.49 |
No torch reference implementation is published upstream (KittenTTS ships ONNX
only), so there is no torch<->onnxruntime parity check to run. Upstream ships
exactly one precision per tier (no separate fp16/int8 variants), so no
variant-consistency check applies either.
No 5000-sample trailing trim is applied: `kittentts==0.1.3`'s own
`KittenTTS.generate()` returns the raw graph output with no post-processing,
and inspecting the tail of phoonnx-synthesized audio shows no noise burst
(tail RMS in the same range as the rest of the clip).
|