phoonnx-styletts2 / README.md
Jarbas's picture
docs: document the BSC per-speaker style blobs (11 ca + 6 es named speakers)
65bd4a4 verified
|
Raw History Blame Contribute Delete
5.98 kB
---
license: other
language:
- en
- es
- ca
- eu
- gl
- ja
- zh
- hi
- it
- pt
- fr
library_name: phoonnx
pipeline_tag: text-to-speech
tags:
- tts
- styletts2
- kokoro
- onnx
- phoonnx
- offline
- voice-cloning
---
# phoonnx-styletts2
Mirror of StyleTTS2-family checkpoints exported to ONNX for
[phoonnx](https://github.com/TigreGotico/phoonnx), OpenVoiceOS's offline TTS
library. StyleTTS2 generates speech conditioned on a style vector that
encodes prosody and timbre from a reference clip, which is what enables
zero-shot cloning; `phoonnx` also treats the Kokoro checkpoints (a StyleTTS2
descendant, "misaki"-phonemized) as `styletts2`-engine voices since they
share the same style-vector conditioning contract. See
[docs/cloning.md](https://github.com/TigreGotico/phoonnx/blob/dev/docs/cloning.md)
for the `styletts2_style` d-vector mechanism.
This repository holds the raw ONNX weights, `config.json` files, and (for
cloning-capable voices) `.bin` style vectors consumed by `phoonnx`'s
`voice_index` (`styletts2.json`); it is not meant to be browsed for voices
directly — use `phoonnx`'s voice manager, which resolves voice IDs to the
files here.
## Contents
| Directory | Voices | Language | Upstream |
|---|---|---|---|
| `ddatt-en-styletts2/` | `ddatt/en-styletts2` | en-US | community StyleTTS2 checkpoint by `ddatt`; original training source could not be located |
| `bsc-es-styletts2/` | `bsc/es-styletts2` (zero-shot) + 6 named speakers `bsc/es-cml<id>` | es | [`BSC-LT/styletts2-spanish-multispeaker`](https://huggingface.co/BSC-LT/styletts2-spanish-multispeaker) (Barcelona Supercomputing Center) |
| `bsc-ca-styletts2/` | `bsc/ca-styletts2` (zero-shot) + 11 named speakers `bsc/ca-<name>` | ca | [`BSC-LT/styletts2-catalan-multispeaker`](https://huggingface.co/BSC-LT/styletts2-catalan-multispeaker) (Barcelona Supercomputing Center) |
| `hitz-eu-styletts2/` | one speaker each: `antton`, `maider` | eu | [`HiTZ/StyleTTS2-eu`](https://huggingface.co/HiTZ/StyleTTS2-eu) (HiTZ Center, University of the Basque Country) |
| `hitz-eu-emo-styletts2/` | `antton`/`maider` x `happy`/`neutral`/`sad` | eu | [`HiTZ/StyleTTS2-eu_emo`](https://huggingface.co/HiTZ/StyleTTS2-eu_emo) (HiTZ Center) |
| `proxectonos-gl-celtia/` | `proxectonos/celtia-styletts2` | gl | [`proxectonos/Nos_StyleTTS2-Celtia-GL`](https://huggingface.co/proxectonos/Nos_StyleTTS2-Celtia-GL) ([Proxecto Nós](https://nos.gal/gl/proxecto-nos), technical development by [Gradiant](https://www.gradiant.org/)) |
| `proxectonos-gl-brais/` | `proxectonos/brais-styletts2` | gl | [`proxectonos/Nos_StyleTTS2-Brais-GL`](https://huggingface.co/proxectonos/Nos_StyleTTS2-Brais-GL) ([Proxecto Nós](https://nos.gal/gl/proxecto-nos), technical development by [Gradiant](https://www.gradiant.org/)) |
| `kokoro-82m/` | `kokoro/*` (English voices, plus per-language configs for es/fr/hi/it/ja/pt/zh) | en-US + others | [`hexgrad/Kokoro-82M`](https://huggingface.co/hexgrad/Kokoro-82M); style vectors fetched at load time from [`onnx-community/Kokoro-82M-v1.0-ONNX`](https://huggingface.co/onnx-community/Kokoro-82M-v1.0-ONNX) |
| `kokoro-v0.19/` | Kokoro v0.19 voices | en-US | [`hexgrad/kLegacy`](https://huggingface.co/hexgrad/kLegacy) (Kokoro v0.19) |
| `kokoro-v1.1-zh/` | Kokoro v1.1 zh/en voices | zh, en-US | [`hexgrad/Kokoro-82M-v1.1-zh`](https://huggingface.co/hexgrad/Kokoro-82M-v1.1-zh) |
## Usage
```python
import wave
from phoonnx.model_manager import TTSModelManager
manager = TTSModelManager()
manager.load()
manager.merge_default_voices()
voice = manager.voices["kokoro/af_heart"].load()
with wave.open("out.wav", "wb") as wav_file:
voice.synthesize_wav("Hello, this is a test.", wav_file)
```
## License
`license: other` because the checkpoints in this repository come from
different labs with different licenses. `phoonnx` itself is Apache-2.0.
| Family | Voices | License |
|---|---|---|
| Kokoro (all versions) | `kokoro/*` | Apache-2.0 |
| BSC Spanish StyleTTS2 | `bsc/es-styletts2`, `bsc/es-cml*` | Apache-2.0 |
| BSC Catalan StyleTTS2 | `bsc/ca-styletts2`, `bsc/ca-*` | GPL-3.0 |
| ProxectoNós Galician StyleTTS2 | `proxectonos/celtia-styletts2`, `proxectonos/brais-styletts2` | Apache-2.0 |
| HiTZ Basque StyleTTS2 (base + emotion) | `hitz-eu-styletts2/*`, `hitz-eu-emo-styletts2/*` | Apache-2.0 |
| `ddatt/en-styletts2` | `ddatt-en-styletts2/` | not determined — original upstream repo could not be located; treat as all-rights-reserved until clarified |
The two BSC checkpoints are **multispeaker**. Neither upstream repository ships
reference audio, so `bsc/es-styletts2` and `bsc/ca-styletts2` need a reference
clip on every call. Alongside them each directory now carries one
`<speaker>.bin` style blob per named speaker, so the same checkpoint also
serves ordinary preset voices:
* `bsc-ca-styletts2/` — 11 [Festcat](https://huggingface.co/datasets/projecte-aina/festcat_trimmed_denoised)
speakers: `bet eli eva jan mar ona pau pep pol teo uri`.
* `bsc-es-styletts2/` — the 6 [CML-TTS](https://huggingface.co/datasets/ylacombe/cml-tts)
Spanish speakers that hold the corpus: `3946 8882 9972 10246 11797 12367`.
CML-TTS names speakers by number only.
Each blob is 256 `float32` values (`ref_p` ++ `ref_s`), the mean of the style
encoder's output over four reference clips of that speaker taken from the
model's own training corpus. A named speaker still clones when you pass a
reference clip. See
[docs/bsc_multispeaker.md](https://github.com/TigreGotico/phoonnx/blob/dev/docs/bsc_multispeaker.md).
The Galician voices are single-speaker: each ships a `style.bin` default
style alongside the `style_encoder.onnx` used for cloning. They are
phonemized with Cotovía notation (not IPA) — see
[docs/galician.md](https://github.com/TigreGotico/phoonnx/blob/dev/docs/galician.md).
Note the BSC Catalan checkpoint is GPL-3.0-licensed by its authors; this only
governs the model weights themselves, not `phoonnx` (Apache-2.0), which
merely loads them.