Instructions to use OpenVoiceOS/phoonnx-outetts with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- OuteTTS
How to use OpenVoiceOS/phoonnx-outetts with OuteTTS:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
Upload README.md with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -20,13 +20,14 @@ layout and stable URLs for phoonnx voice entries.
|
|
| 20 |
| Path | Source | License |
|
| 21 |
|---|---|---|
|
| 22 |
| `0.6B/model.onnx` (+ `model.onnx_data`), `0.6B/tokenizer.json` | [OuteAI/OuteTTS-1.0-0.6B-ONNX](https://huggingface.co/OuteAI/OuteTTS-1.0-0.6B-ONNX) | Apache-2.0 |
|
| 23 |
-
| `1B/model.onnx` (+ `model.onnx_data`)
|
|
|
|
| 24 |
| `dac/decoder_model.onnx`, `dac/encoder_model.onnx`, `dac/config.json` | [OuteAI/DAC-speech-v1.0-ONNX](https://huggingface.co/OuteAI/DAC-speech-v1.0-ONNX) (weights: [ibm-research/DAC.speech.v1.0](https://huggingface.co/ibm-research/DAC.speech.v1.0)) | CDLA-Permissive-2.0 |
|
| 25 |
| `speakers/en-female-1-neutral.json` | the `outetts` Python package (`version/v3/default_speakers`) | Apache-2.0 |
|
| 26 |
|
| 27 |
-
The two model sizes carry **different licenses**. The 0.6B is Apache-2.0 and
|
| 28 |
-
phoonnx
|
| 29 |
-
use**
|
| 30 |
covers Arabic, Belarusian, Bengali, Lithuanian, Persian, Portuguese, Swahili, Tamil and
|
| 31 |
Ukrainian. Check the 1B license before you deploy it.
|
| 32 |
|
|
@@ -52,16 +53,34 @@ Every export in this mirror was checked against the upstream torch weights on a
|
|
| 52 |
| 0.6B `model_fp16.onnx` | 0.036 | 63/64 | no |
|
| 53 |
| 0.6B `model_quantized` / `uint8` | 5.7 | 62/64 | no |
|
| 54 |
| 0.6B `model_bnb4` / `int8` / `q4` / `q4f16` | 3.9 - 5.9 | 32-34/64 | no |
|
| 55 |
-
| 1B `model.onnx` (fp32) | 12 | 61/64 |
|
|
|
|
| 56 |
|
| 57 |
The 0.6B float32 export reproduces its torch weights exactly. Every quantized 0.6B export
|
| 58 |
changes greedy decoding, so none is a safe default.
|
| 59 |
|
| 60 |
-
The
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
|
| 66 |
## Use it from phoonnx
|
| 67 |
|
|
@@ -75,8 +94,9 @@ for chunk in voice.synthesize("Hello from OuteTTS running in phoonnx."):
|
|
| 75 |
... # chunk.audio_float_array, 24 kHz mono
|
| 76 |
```
|
| 77 |
|
| 78 |
-
Voice ids run `outetts/0.6B/<lang>` for the 14
|
| 79 |
-
|
|
|
|
| 80 |
LM with a KV cache, then decodes the two DAC codebooks to a waveform.
|
| 81 |
|
| 82 |
## How it works
|
|
|
|
| 20 |
| Path | Source | License |
|
| 21 |
|---|---|---|
|
| 22 |
| `0.6B/model.onnx` (+ `model.onnx_data`), `0.6B/tokenizer.json` | [OuteAI/OuteTTS-1.0-0.6B-ONNX](https://huggingface.co/OuteAI/OuteTTS-1.0-0.6B-ONNX) | Apache-2.0 |
|
| 23 |
+
| `1B/model.onnx` (+ `model.onnx_data`) | **re-exported by phoonnx** from [OuteAI/Llama-OuteTTS-1.0-1B](https://huggingface.co/OuteAI/Llama-OuteTTS-1.0-1B) - see below | **CC-BY-NC-SA-4.0 (non-commercial)** |
|
| 24 |
+
| `1B/tokenizer.json` | [OuteAI/Llama-OuteTTS-1.0-1B-ONNX](https://huggingface.co/OuteAI/Llama-OuteTTS-1.0-1B-ONNX) | **CC-BY-NC-SA-4.0 (non-commercial)** |
|
| 25 |
| `dac/decoder_model.onnx`, `dac/encoder_model.onnx`, `dac/config.json` | [OuteAI/DAC-speech-v1.0-ONNX](https://huggingface.co/OuteAI/DAC-speech-v1.0-ONNX) (weights: [ibm-research/DAC.speech.v1.0](https://huggingface.co/ibm-research/DAC.speech.v1.0)) | CDLA-Permissive-2.0 |
|
| 26 |
| `speakers/en-female-1-neutral.json` | the `outetts` Python package (`version/v3/default_speakers`) | Apache-2.0 |
|
| 27 |
|
| 28 |
+
The two model sizes carry **different licenses**. The 0.6B is Apache-2.0 and covers 14
|
| 29 |
+
languages; phoonnx resolves those 14 to it. The 1B is CC-BY-NC-SA-4.0 - **not licensed
|
| 30 |
+
for commercial use** - and is here because it is the only member of the family that
|
| 31 |
covers Arabic, Belarusian, Bengali, Lithuanian, Persian, Portuguese, Swahili, Tamil and
|
| 32 |
Ukrainian. Check the 1B license before you deploy it.
|
| 33 |
|
|
|
|
| 53 |
| 0.6B `model_fp16.onnx` | 0.036 | 63/64 | no |
|
| 54 |
| 0.6B `model_quantized` / `uint8` | 5.7 | 62/64 | no |
|
| 55 |
| 0.6B `model_bnb4` / `int8` / `q4` / `q4f16` | 3.9 - 5.9 | 32-34/64 | no |
|
| 56 |
+
| 1B `model.onnx` - OuteAI's (fp32) | 12 | 61/64 | no, see below |
|
| 57 |
+
| 1B `model.onnx` - this repo's re-export (fp32) | **1.78e-05** | **64/64** | **yes** |
|
| 58 |
|
| 59 |
The 0.6B float32 export reproduces its torch weights exactly. Every quantized 0.6B export
|
| 60 |
changes greedy decoding, so none is a safe default.
|
| 61 |
|
| 62 |
+
### The official 1B ONNX export is broken; this one is not
|
| 63 |
+
|
| 64 |
+
`OuteAI/Llama-OuteTTS-1.0-1B-ONNX` **does not reproduce its own torch weights**, even in
|
| 65 |
+
float32. On the prompt above its last-position logits are off by 12, the logit
|
| 66 |
+
correlation is **0.48**, prefill argmax agrees on only 1580 of 1843 positions, and greedy
|
| 67 |
+
decoding diverges from `OuteAI/Llama-OuteTTS-1.0-1B`. The error is already present on a
|
| 68 |
+
32-token prompt (0.08 max diff) and never closes (correlation 0.96-0.98 at 512-2048
|
| 69 |
+
tokens), so it is a property of the export, not of long-context accumulation. The 0.6B
|
| 70 |
+
export on the same prompt differs by 3.8e-05. Every quantized 1B export inherits the
|
| 71 |
+
defect and adds to it.
|
| 72 |
+
|
| 73 |
+
The `1B/model.onnx` in **this** repository is therefore **not** OuteAI's file. It was
|
| 74 |
+
re-exported from the torch checkpoint with
|
| 75 |
+
[`scripts/conversion/outetts/export_outetts_onnx.py`](https://github.com/TigreGotico/phoonnx/blob/dev/scripts/conversion/outetts/export_outetts_onnx.py)
|
| 76 |
+
and verified the same way: **max abs logit diff 1.78e-05, mean 3.74e-06, logit
|
| 77 |
+
correlation 1.00000000, greedy 64/64**, and 64/64 again under the windowed repetition
|
| 78 |
+
penalty OuteTTS actually samples with. The same script reproduces the 0.6B to 1.6e-05,
|
| 79 |
+
which is how it is checked against a graph already known to be good.
|
| 80 |
+
|
| 81 |
+
One difference to know about: the re-exported graph returns `logits` shaped `[1, 1, V]` -
|
| 82 |
+
the final row only - where OuteAI's exports return every position. Any consumer that
|
| 83 |
+
reads the last row, as transformers.js and phoonnx both do, works with either.
|
| 84 |
|
| 85 |
## Use it from phoonnx
|
| 86 |
|
|
|
|
| 94 |
... # chunk.audio_float_array, 24 kHz mono
|
| 95 |
```
|
| 96 |
|
| 97 |
+
Voice ids run `outetts/0.6B/<lang>` for the 14 languages the 0.6B was trained on and
|
| 98 |
+
`outetts/1B/<lang>` for the nine only the 1B covers (ar, be, bn, fa, lt, pt, sw, ta, uk).
|
| 99 |
+
Every one of them resolves to this repository. The engine drives the
|
| 100 |
LM with a KV cache, then decodes the two DAC codebooks to a waveform.
|
| 101 |
|
| 102 |
## How it works
|