kittensynth
KittenTTS synthesis layer built on kitteng2p + OnnxVoice.
This MVP follows the same repository/package shape as PiperSynth/PiperG2P:
pyproject.toml
kittensynth/
tests/
docs/
There is no src/ layer and no hard-coded package version.
Architecture
prepared speakable English
|
v
kitteng2p
- eSpeak
- Kitten phoneme tokenization
- Kitten v0.8 token IDs
|
v
kittensynth
- voice alias/style row
- speed-prior policy
|
v
onnxvoice
- catalogs/install/cache/integrity
- ORT providers/sessions
- Kitten graph ABI
|
v
float32 waveform
kittensynth has no direct eSpeak or phonemizer dependency. That is now entirely owned by
kitteng2p.
Required OnnxVoice contract
A future/updated OnnxVoice release must register:
system = kitten
and expose:
runtime.infer(token_ids, style=style, speed=effective_speed)
The installation contains at least:
role=model
role=voices
with 24 kHz metadata and Kitten voice aliases/speed priors.
Managed model
from kittensynth import KittenVoice
with KittenVoice.from_pretrained("nano-0.8-int8") as model:
result = model.synthesize_prepared(
"Hello from KittenSynth.",
voice="Jasper",
)
result.save_wav("hello.wav")
Local model
from kittensynth import KittenVoice
with KittenVoice.from_local(
model_path="kitten_tts_nano_v0_8.onnx",
voices_path="voices.npz",
config_path="config.json",
) as model:
result = model.synthesize_prepared("Local synthesis.", voice="Bella")
result.save_wav("local.wav")
Prepared-text boundary
Like PiperG2P/PiperSynth, this MVP expects prepared speakable text. Written-form semantic expansion (numbers, currencies, dates, URLs, abbreviations) stays outside the engine.
That keeps these packages independent:
semantic preparation -> kitteng2p -> kittensynth -> onnxvoice
Voice selection
The current v0.8 aliases are:
Bella -> expr-voice-2-f
Jasper -> expr-voice-2-m
Luna -> expr-voice-3-f
Bruno -> expr-voice-3-m
Rosie -> expr-voice-4-f
Hugo -> expr-voice-4-m
Kiki -> expr-voice-5-f
Leo -> expr-voice-5-m
The style row is selected exactly as upstream v0.8:
min(len(text), style_rows - 1)
Dynamic versioning
Both kitteng2p and kittensynth use the same Git-tag-driven setuptools-scm pattern:
git tag v0.1.0
python -m build
The source-ZIP fallback is 0.1.dev0; installed __version__ comes from distribution metadata.
Development
For sibling checkout development:
python -m pip install -e ../kitteng2p
python -m pip install -e ".[dev]"
python -m pytest
Real synthesis remains blocked until OnnxVoice contains the Kitten adapter/catalog parser.
Metadata
Release files for kittensynth 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kittensynth-0.1.0.tar.gz | 27.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kittensynth-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.7 kB
Release files / kittensynth-0.1.0.tar.gz
| Download URL | kittensynth-0.1.0.tar.gz |
|---|---|
| Size | 27.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4964b5a97cf159be19f6f2db8e766c83159bee2f0e4f27d8fe38908ba10642b8
|
|
BLAKE2b-256 checksum How to use checksums |
33351ba5777e01b028ceabcf44a3c2a69e68b8ace0782b5b919283678081a298
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / kittensynth-0.1.0-py3-none-any.whl
| Download URL | kittensynth-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b2ae91a628bbbbb6eb7780f01313d176b6d70d837f95980103287e3591f3e7cd
|
|
BLAKE2b-256 checksum How to use checksums |
40919b490a309fd24ff1383b66acd001c1f4eb96ed3ccc786a3a844e0db40f63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|