Polish model card navigation and evidence disclosure
Browse filesAdds the final five-link navigation, corrects Nano architecture metadata, removes invalid CPU-speed claims, clarifies comparator policy, and refreshes release integrity metadata.
- README.md +20 -41
- assets/evidence/cpu-throughput.svg +0 -43
- assets/evidence/quality-vs-cpu-speed.svg +0 -47
- assets/nav/collection.svg +0 -5
- assets/nav/discord.svg +5 -0
- assets/nav/finetuning.svg +5 -0
- assets/nav/github.svg +2 -2
- assets/nav/micro.svg +4 -4
- assets/nav/nano.svg +2 -2
- assets/nav/playground.svg +2 -2
- docs/DATA_AND_VOICE.md +8 -9
- release_manifest.json +16 -21
README.md
CHANGED
|
@@ -27,18 +27,18 @@ inference: false
|
|
| 27 |
24 kHz English TTS with the neural waveform decoder already inside the model.</p>
|
| 28 |
|
| 29 |
<p align="center">
|
| 30 |
-
<a href="https://
|
| 31 |
-
<a href="https://
|
| 32 |
-
<a href="https://huggingface.co/owensong/Inflect-Nano-v2"><img alt="Inflect Nano v2" src="
|
| 33 |
-
<a href="
|
| 34 |
-
<a href="https://
|
| 35 |
</p>
|
| 36 |
|
| 37 |
<p align="center"><strong>9.36M complete parameters</strong> · <strong>37.53 MB FP32 weights</strong> · <strong>one fixed English voice</strong> · <strong>no external vocoder</strong></p>
|
| 38 |
|
| 39 |
---
|
| 40 |
|
| 41 |
-
> **Small enough to ship. Complete enough to stand alone.** Every published parameter is part of the local text-to-waveform path: text encoding, duration prediction, latent synthesis, and the integrated 24 kHz waveform decoder. There is no second vocoder download, server model, or
|
| 42 |
|
| 43 |
<details>
|
| 44 |
<summary><strong>Explore this model card</strong></summary>
|
|
@@ -76,6 +76,8 @@ No single metric captures TTS quality. Inflect v2 reports **human preference**,
|
|
| 76 |
|
| 77 |
The headline row always refers to **Inflect-Micro-v2**. Detailed competitor results and protocol boundaries are kept visible below.
|
| 78 |
|
|
|
|
|
|
|
| 79 |
### 1. Human blind preference
|
| 80 |
|
| 81 |

|
|
@@ -129,30 +131,14 @@ transcription errors.
|
|
| 129 |
|
| 130 |
</details>
|
| 131 |
|
| 132 |
-
### 4.
|
| 133 |
-
|
| 134 |
-

|
| 135 |
-
|
| 136 |
-

|
| 137 |
-
|
| 138 |
-
All systems use the same host, frozen prompt list, three warmups, isolated
|
| 139 |
-
processes, and end-to-end timing boundary. Runtime includes each system's text
|
| 140 |
-
frontend and waveform generation. The table and figures report audio seconds
|
| 141 |
-
generated per wall-clock second; **1.0× is real time**.
|
| 142 |
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
| Supertonic 3 · James · 3-step | 5.51× | 0.181 | 0.994 s | 1.494 s | 1.318 s |
|
| 150 |
-
| Supertonic 3 · James · 8-step | 2.51× | 0.398 | 2.267 s | 3.181 s | 1.601 s |
|
| 151 |
-
|
| 152 |
-
These measurements used an AMD Ryzen 9 3900X with 12 configured CPU threads,
|
| 153 |
-
48 identical prompts, and `CUDA_VISIBLE_DEVICES` empty. They compare the
|
| 154 |
-
released software paths, not architecture alone: Inflect runs PyTorch, while
|
| 155 |
-
the competitor packages use their published ONNX Runtime paths.
|
| 156 |
|
| 157 |
### 5. Complete weight footprint
|
| 158 |
|
|
@@ -161,7 +147,7 @@ the competitor packages use their published ONNX Runtime paths.
|
|
| 161 |
Voice variants sharing the same weights are merged. Inflect totals include the integrated waveform decoder.
|
| 162 |
|
| 163 |
<details>
|
| 164 |
-
<summary><strong>Open the frozen
|
| 165 |
|
| 166 |
- Modern400 uses 400 identical unseen English prompts per system: 200 fixed modern/stress prompts plus 200 deterministic FLEURS `en_us` test prompts.
|
| 167 |
- Exact-text exclusion was checked against 87,362 training transcripts.
|
|
@@ -170,16 +156,8 @@ Voice variants sharing the same weights are merged. Inflect totals include the i
|
|
| 170 |
- Headline intervals use 10,000 bootstrap samples.
|
| 171 |
- The Modern400 corpus SHA-256 is `b7504ce2dce44a2da82770a6a5dfd2a034fe17e2113980f8a69663ade417a34c`.
|
| 172 |
- Prompts, hypotheses, compressed row-level reports, and summaries ship under `evaluation/final/`.
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
warmups, and 12 configured CPU threads on an AMD Ryzen 9 3900X:
|
| 176 |
-
|
| 177 |
-
| RTF ↓ | Audio generated / wall time ↑ | Median utterance | p95 utterance | Cold load |
|
| 178 |
-
| ---: | ---: | ---: | ---: | ---: |
|
| 179 |
-
| 0.635 | 1.58× real time | 2.402 s | 7.281 s | 2.774 s |
|
| 180 |
-
|
| 181 |
-
RTF is wall time divided by generated audio duration. This is a host-specific
|
| 182 |
-
engineering snapshot, not a portable cross-system speed claim.
|
| 183 |
|
| 184 |
</details>
|
| 185 |
|
|
@@ -284,7 +262,7 @@ Long passages are punctuation-aware chunks, not one unlimited autoregressive pas
|
|
| 284 |
<details>
|
| 285 |
<summary id="data-voice-and-adaptation-status"><strong>Data, voice, and adaptation status</strong></summary>
|
| 286 |
|
| 287 |
-
The release
|
| 288 |
|
| 289 |
This release is inference-first. New-voice and new-language adaptation are **not currently validated or supported**. A new voice would replace the fixed speaker rather than add a selectable speaker; language adaptation also requires rebuilding normalization, phonemes, symbols, embeddings, and training data. See [`docs/DATA_AND_VOICE.md`](docs/DATA_AND_VOICE.md) and [`docs/FINETUNING.md`](docs/FINETUNING.md).
|
| 290 |
|
|
@@ -329,6 +307,7 @@ Inflect v2 is an **open-weight** release. Deployable weights, inference code, fr
|
|
| 329 |
Owen Song may share additional technical context privately for credible research, collaboration, reproducibility, or deployment inquiries when the request has a clear purpose and does not conflict with licensing or data-provenance constraints.
|
| 330 |
|
| 331 |
- **Discord:** `b111ue` — fastest for informal technical questions
|
|
|
|
| 332 |
- **Email:** [owen.aw.song@gmail.com](mailto:owen.aw.song@gmail.com) — preferred for professional inquiries
|
| 333 |
|
| 334 |
## Citation
|
|
|
|
| 27 |
24 kHz English TTS with the neural waveform decoder already inside the model.</p>
|
| 28 |
|
| 29 |
<p align="center">
|
| 30 |
+
<a href="https://huggingface.co/spaces/owensong/Inflect-v2"><img alt="Live playground" src="assets/nav/playground.svg" width="168"></a>
|
| 31 |
+
<a href="https://github.com/owenawsong/Inflect"><img alt="GitHub" src="assets/nav/github.svg" width="168"></a>
|
| 32 |
+
<a href="https://huggingface.co/owensong/Inflect-Nano-v2"><img alt="Inflect Nano v2" src="assets/nav/nano.svg" width="168"></a>
|
| 33 |
+
<a href="docs/FINETUNING.md"><img alt="Fine-tuning guide" src="assets/nav/finetuning.svg" width="168"></a>
|
| 34 |
+
<a href="https://discord.gg/CVJYedvzvp"><img alt="Inflect Discord" src="assets/nav/discord.svg" width="168"></a>
|
| 35 |
</p>
|
| 36 |
|
| 37 |
<p align="center"><strong>9.36M complete parameters</strong> · <strong>37.53 MB FP32 weights</strong> · <strong>one fixed English voice</strong> · <strong>no external vocoder</strong></p>
|
| 38 |
|
| 39 |
---
|
| 40 |
|
| 41 |
+
> **Small enough to ship. Complete enough to stand alone.** Every published parameter is part of the local text-to-waveform path: text encoding, duration prediction, latent synthesis, and the integrated 24 kHz waveform decoder. There is no second vocoder download, server model, or external generation service.
|
| 42 |
|
| 43 |
<details>
|
| 44 |
<summary><strong>Explore this model card</strong></summary>
|
|
|
|
| 76 |
|
| 77 |
The headline row always refers to **Inflect-Micro-v2**. Detailed competitor results and protocol boundaries are kept visible below.
|
| 78 |
|
| 79 |
+
> **Comparator policy.** Inflect is tested against serious compact and on-device baselines, not deliberately weak systems: [KittenTTS Nano](https://huggingface.co/KittenML/kitten-tts-nano-0.8), [Piper Low](https://huggingface.co/rhasspy/piper-voices), and [Supertonic 3](https://huggingface.co/Supertone/supertonic-3). Under this package-level protocol, every comparator has a larger deployable weight footprint than both Inflect releases. That makes the comparison demanding; it does not imply that one metric establishes universal superiority.
|
| 80 |
+
|
| 81 |
### 1. Human blind preference
|
| 82 |
|
| 83 |

|
|
|
|
| 131 |
|
| 132 |
</details>
|
| 133 |
|
| 134 |
+
### 4. Runtime status
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
|
| 136 |
+
The release supports CPU and CUDA inference through the same public API. A
|
| 137 |
+
previous local CPU table has been withdrawn because background host saturation
|
| 138 |
+
made its cross-system throughput figures non-reproducible. A clean-host rerun
|
| 139 |
+
will be published with the complete environment, thread policy, warmup count,
|
| 140 |
+
matched prompts, and raw per-utterance timings. Until then, this card makes no
|
| 141 |
+
headline CPU-speed claim.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
|
| 143 |
### 5. Complete weight footprint
|
| 144 |
|
|
|
|
| 147 |
Voice variants sharing the same weights are merged. Inflect totals include the integrated waveform decoder.
|
| 148 |
|
| 149 |
<details>
|
| 150 |
+
<summary><strong>Open the frozen evaluation protocol</strong></summary>
|
| 151 |
|
| 152 |
- Modern400 uses 400 identical unseen English prompts per system: 200 fixed modern/stress prompts plus 200 deterministic FLEURS `en_us` test prompts.
|
| 153 |
- Exact-text exclusion was checked against 87,362 training transcripts.
|
|
|
|
| 156 |
- Headline intervals use 10,000 bootstrap samples.
|
| 157 |
- The Modern400 corpus SHA-256 is `b7504ce2dce44a2da82770a6a5dfd2a034fe17e2113980f8a69663ade417a34c`.
|
| 158 |
- Prompts, hypotheses, compressed row-level reports, and summaries ship under `evaluation/final/`.
|
| 159 |
+
- Runtime is evaluated separately because framework, thread policy, compilation,
|
| 160 |
+
and host load can dominate small-model comparisons.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
|
| 162 |
</details>
|
| 163 |
|
|
|
|
| 262 |
<details>
|
| 263 |
<summary id="data-voice-and-adaptation-status"><strong>Data, voice, and adaptation status</strong></summary>
|
| 264 |
|
| 265 |
+
The release contains one fixed synthetic English voice. The package does not redistribute a real-speaker recording corpus, does not claim the voice as the identity of a real person, and requires no reference audio or external model at inference.
|
| 266 |
|
| 267 |
This release is inference-first. New-voice and new-language adaptation are **not currently validated or supported**. A new voice would replace the fixed speaker rather than add a selectable speaker; language adaptation also requires rebuilding normalization, phonemes, symbols, embeddings, and training data. See [`docs/DATA_AND_VOICE.md`](docs/DATA_AND_VOICE.md) and [`docs/FINETUNING.md`](docs/FINETUNING.md).
|
| 268 |
|
|
|
|
| 307 |
Owen Song may share additional technical context privately for credible research, collaboration, reproducibility, or deployment inquiries when the request has a clear purpose and does not conflict with licensing or data-provenance constraints.
|
| 308 |
|
| 309 |
- **Discord:** `b111ue` — fastest for informal technical questions
|
| 310 |
+
- **Community server:** [discord.gg/CVJYedvzvp](https://discord.gg/CVJYedvzvp)
|
| 311 |
- **Email:** [owen.aw.song@gmail.com](mailto:owen.aw.song@gmail.com) — preferred for professional inquiries
|
| 312 |
|
| 313 |
## Citation
|
assets/evidence/cpu-throughput.svg
DELETED
assets/evidence/quality-vs-cpu-speed.svg
DELETED
assets/nav/collection.svg
DELETED
assets/nav/discord.svg
ADDED
|
|
assets/nav/finetuning.svg
ADDED
|
|
assets/nav/github.svg
CHANGED
|
|
|
|
assets/nav/micro.svg
CHANGED
|
|
|
|
assets/nav/nano.svg
CHANGED
|
|
|
|
assets/nav/playground.svg
CHANGED
|
|
|
|
docs/DATA_AND_VOICE.md
CHANGED
|
@@ -7,10 +7,9 @@ zero-shot voice-cloning model and does not accept reference audio at inference.
|
|
| 7 |
|
| 8 |
## Training-data summary
|
| 9 |
|
| 10 |
-
The release
|
| 11 |
-
corpus generated with a larger third-party text-to-speech teacher. The private
|
| 12 |
corpus-construction and optimization recipe is not distributed. The inference
|
| 13 |
-
package does not
|
| 14 |
|
| 15 |
The corpus was filtered for transcript consistency, duration, clipping, and
|
| 16 |
other audio-quality failures before model training. Frozen unseen-text prompts
|
|
@@ -30,13 +29,13 @@ real person's recording.
|
|
| 30 |
American English.
|
| 31 |
- Proper names, uncommon locations, abbreviations, homographs, and code-switched
|
| 32 |
text may be mispronounced.
|
| 33 |
-
-
|
| 34 |
-
pronunciation biases
|
| 35 |
- The single-speaker design does not represent demographic or accent diversity.
|
| 36 |
|
| 37 |
## What is not disclosed
|
| 38 |
|
| 39 |
-
The private corpus prompts,
|
| 40 |
-
filtering thresholds, and optimization schedule are not part of this
|
| 41 |
-
release. Their absence does not change the deployable parameter
|
| 42 |
-
inference-time components and weights are included.
|
|
|
|
| 7 |
|
| 8 |
## Training-data summary
|
| 9 |
|
| 10 |
+
The release contains one fixed synthetic English voice. The private
|
|
|
|
| 11 |
corpus-construction and optimization recipe is not distributed. The inference
|
| 12 |
+
package does not require reference audio or call any external speech model.
|
| 13 |
|
| 14 |
The corpus was filtered for transcript consistency, duration, clipping, and
|
| 15 |
other audio-quality failures before model training. Frozen unseen-text prompts
|
|
|
|
| 29 |
American English.
|
| 30 |
- Proper names, uncommon locations, abbreviations, homographs, and code-switched
|
| 31 |
text may be mispronounced.
|
| 32 |
+
- A fixed synthetic training voice can carry narrow rhythm, prosody, spectral,
|
| 33 |
+
and pronunciation biases.
|
| 34 |
- The single-speaker design does not represent demographic or accent diversity.
|
| 35 |
|
| 36 |
## What is not disclosed
|
| 37 |
|
| 38 |
+
The private corpus prompts, generation configuration, sampling curriculum,
|
| 39 |
+
filtering thresholds, and optimization schedule are not part of this
|
| 40 |
+
open-weight release. Their absence does not change the deployable parameter
|
| 41 |
+
count: all inference-time components and weights are included.
|
release_manifest.json
CHANGED
|
@@ -27,11 +27,6 @@
|
|
| 27 |
"bytes": 6123,
|
| 28 |
"sha256": "1a2218e0bbe726167a5b0201736a82947edbd7c6803df3f5689e7a711026758e"
|
| 29 |
},
|
| 30 |
-
{
|
| 31 |
-
"path": "assets/evidence/cpu-throughput.svg",
|
| 32 |
-
"bytes": 3198,
|
| 33 |
-
"sha256": "4a74b4f19c87c5da9e8f368dd0117ac2840c437976c677572e3f65d1be785b8b"
|
| 34 |
-
},
|
| 35 |
{
|
| 36 |
"path": "assets/evidence/evidence-summary.json",
|
| 37 |
"bytes": 52605,
|
|
@@ -52,11 +47,6 @@
|
|
| 52 |
"bytes": 7934,
|
| 53 |
"sha256": "9086575f7d11395255f4cf4ae67e30bf92d60042c6b4bdc58ee6045595cb5420"
|
| 54 |
},
|
| 55 |
-
{
|
| 56 |
-
"path": "assets/evidence/quality-vs-cpu-speed.svg",
|
| 57 |
-
"bytes": 3887,
|
| 58 |
-
"sha256": "023e0a4a86c71eefea19a4fdab7404b8710ead4045ae3964928f149af1cc04b4"
|
| 59 |
-
},
|
| 60 |
{
|
| 61 |
"path": "assets/evidence/quality-vs-footprint.svg",
|
| 62 |
"bytes": 5852,
|
|
@@ -68,29 +58,34 @@
|
|
| 68 |
"sha256": "ca59256690b4ce1b11f27e51ee4aa21c30883d58c1e5c87cccae553898afe884"
|
| 69 |
},
|
| 70 |
{
|
| 71 |
-
"path": "assets/nav/
|
| 72 |
-
"bytes":
|
| 73 |
-
"sha256": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
},
|
| 75 |
{
|
| 76 |
"path": "assets/nav/github.svg",
|
| 77 |
"bytes": 517,
|
| 78 |
-
"sha256": "
|
| 79 |
},
|
| 80 |
{
|
| 81 |
"path": "assets/nav/micro.svg",
|
| 82 |
"bytes": 529,
|
| 83 |
-
"sha256": "
|
| 84 |
},
|
| 85 |
{
|
| 86 |
"path": "assets/nav/nano.svg",
|
| 87 |
"bytes": 726,
|
| 88 |
-
"sha256": "
|
| 89 |
},
|
| 90 |
{
|
| 91 |
"path": "assets/nav/playground.svg",
|
| 92 |
"bytes": 624,
|
| 93 |
-
"sha256": "
|
| 94 |
},
|
| 95 |
{
|
| 96 |
"path": "CHANGELOG.md",
|
|
@@ -114,8 +109,8 @@
|
|
| 114 |
},
|
| 115 |
{
|
| 116 |
"path": "docs/DATA_AND_VOICE.md",
|
| 117 |
-
"bytes":
|
| 118 |
-
"sha256": "
|
| 119 |
},
|
| 120 |
{
|
| 121 |
"path": "docs/DEPLOYMENT.md",
|
|
@@ -329,8 +324,8 @@
|
|
| 329 |
},
|
| 330 |
{
|
| 331 |
"path": "README.md",
|
| 332 |
-
"bytes":
|
| 333 |
-
"sha256": "
|
| 334 |
},
|
| 335 |
{
|
| 336 |
"path": "requirements-tested.txt",
|
|
|
|
| 27 |
"bytes": 6123,
|
| 28 |
"sha256": "1a2218e0bbe726167a5b0201736a82947edbd7c6803df3f5689e7a711026758e"
|
| 29 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
{
|
| 31 |
"path": "assets/evidence/evidence-summary.json",
|
| 32 |
"bytes": 52605,
|
|
|
|
| 47 |
"bytes": 7934,
|
| 48 |
"sha256": "9086575f7d11395255f4cf4ae67e30bf92d60042c6b4bdc58ee6045595cb5420"
|
| 49 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
{
|
| 51 |
"path": "assets/evidence/quality-vs-footprint.svg",
|
| 52 |
"bytes": 5852,
|
|
|
|
| 58 |
"sha256": "ca59256690b4ce1b11f27e51ee4aa21c30883d58c1e5c87cccae553898afe884"
|
| 59 |
},
|
| 60 |
{
|
| 61 |
+
"path": "assets/nav/discord.svg",
|
| 62 |
+
"bytes": 786,
|
| 63 |
+
"sha256": "8b97fef7b46040b8095348660aaea7f8d16c01f297f1a7003da4b7079c04098c"
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"path": "assets/nav/finetuning.svg",
|
| 67 |
+
"bytes": 884,
|
| 68 |
+
"sha256": "084e039ec325c498dea6e2e213278e303eec44bdbfee53e78eb384ac0667c75d"
|
| 69 |
},
|
| 70 |
{
|
| 71 |
"path": "assets/nav/github.svg",
|
| 72 |
"bytes": 517,
|
| 73 |
+
"sha256": "50c6e527b5cc3910fc699ac923f626344451ab4efb3e31c4616e236d0ece9d3b"
|
| 74 |
},
|
| 75 |
{
|
| 76 |
"path": "assets/nav/micro.svg",
|
| 77 |
"bytes": 529,
|
| 78 |
+
"sha256": "efd36cb4922a437f7483368febeeb8e85d645e6e1dd58262683f61be4fe56e12"
|
| 79 |
},
|
| 80 |
{
|
| 81 |
"path": "assets/nav/nano.svg",
|
| 82 |
"bytes": 726,
|
| 83 |
+
"sha256": "755a6e43589e54e43d0a67789b81210d0db6650c22ca0bb5efb5bdb1383d0fcd"
|
| 84 |
},
|
| 85 |
{
|
| 86 |
"path": "assets/nav/playground.svg",
|
| 87 |
"bytes": 624,
|
| 88 |
+
"sha256": "eef126feaf18704d81b5b65568c14e1eef4d35141b150c19874dd173f8ac07f3"
|
| 89 |
},
|
| 90 |
{
|
| 91 |
"path": "CHANGELOG.md",
|
|
|
|
| 109 |
},
|
| 110 |
{
|
| 111 |
"path": "docs/DATA_AND_VOICE.md",
|
| 112 |
+
"bytes": 1671,
|
| 113 |
+
"sha256": "894e9fa4e5f6fceb76e7b2da2fca4de924230c6043ef5de167ef8c15298c6b6e"
|
| 114 |
},
|
| 115 |
{
|
| 116 |
"path": "docs/DEPLOYMENT.md",
|
|
|
|
| 324 |
},
|
| 325 |
{
|
| 326 |
"path": "README.md",
|
| 327 |
+
"bytes": 16898,
|
| 328 |
+
"sha256": "4c8fb3f0c9238e0f6b92547ce8d4ff7e96fd3419427cfbbeb1365f13f9a9648e"
|
| 329 |
},
|
| 330 |
{
|
| 331 |
"path": "requirements-tested.txt",
|