Jarbas commited on
Commit
e33bbc1
·
verified ·
1 Parent(s): 8f2553a

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +32 -12
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`), `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)** |
 
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 is what
28
- phoonnx uses by default. The 1B is CC-BY-NC-SA-4.0: it is **not licensed for commercial
29
- use**, and it is mirrored here only because it is the only member of the family that
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 | mirrored, **not indexed** |
 
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 **1B float32 export does not reproduce its torch weights**: the logit correlation at
61
- the end of the prompt is 0.48 and greedy decoding diverges. The gap is present at short
62
- prompts too (0.08 max diff at 32 tokens) and grows with length, which points at the
63
- export rather than at accumulation. The 1B files are mirrored so the finding can be
64
- reproduced, but phoonnx does not index them.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 trained languages, and every one of them
79
- resolves to this repository. The engine drives the
 
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