owensong commited on
Commit
edeb217
·
verified ·
1 Parent(s): b29a2a4

Stage verified Inflect v2 release candidate and evaluation evidence

Browse files
Files changed (49) hide show
  1. .gitattributes +7 -0
  2. LICENSE +201 -0
  3. README.md +154 -169
  4. THIRD_PARTY_NOTICES.md +26 -0
  5. assets/matched-evaluation.svg +32 -0
  6. config.json +108 -0
  7. evaluation/asr.json +0 -0
  8. evaluation/asr_failures.json +1961 -0
  9. evaluation/long_form.json +9 -0
  10. evaluation/long_form_asr.json +149 -0
  11. evaluation/long_form_signal.json +485 -0
  12. evaluation/multiseed_robustness.json +780 -0
  13. evaluation/nisqa.json +1997 -0
  14. evaluation/package_qa.json +18 -0
  15. evaluation/runtime/cpu.json +400 -0
  16. evaluation/runtime/cuda.json +400 -0
  17. evaluation/signal.json +0 -0
  18. evaluation/speaker_consistency.json +281 -0
  19. evaluation/utmos22.json +0 -0
  20. inference.py +170 -0
  21. inflect_nano_v2_frontend.py +341 -0
  22. inflect_vits_frontend.py +67 -0
  23. model.pth +3 -0
  24. model.pth.json +10 -0
  25. release_manifest.json +149 -0
  26. requirements.txt +8 -0
  27. runtime/attentions.py +303 -0
  28. runtime/commons.py +161 -0
  29. runtime/inflect_alias_free.py +143 -0
  30. runtime/models.py +564 -0
  31. runtime/modules.py +390 -0
  32. runtime/monotonic_align.py +4 -0
  33. runtime/text/LICENSE +19 -0
  34. runtime/text/__init__.py +54 -0
  35. runtime/text/cleaners.py +100 -0
  36. runtime/text/symbols.py +16 -0
  37. runtime/transforms.py +193 -0
  38. runtime/utils.py +256 -0
  39. samples/male/conversational.wav +3 -0
  40. samples/male/names_places.wav +3 -0
  41. samples/male/numbers.wav +3 -0
  42. samples/male/punctuation.wav +3 -0
  43. samples/male/technical.wav +3 -0
  44. smoke/manifest.jsonl +1 -0
  45. smoke/release_smoke.wav +3 -0
  46. smoke/standalone_cpu.wav +3 -0
  47. smoke_prompt.jsonl +1 -0
  48. third_party/BIGVGAN_LICENSE.txt +21 -0
  49. third_party/VITS_LICENSE.txt +21 -0
.gitattributes CHANGED
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ samples/male/conversational.wav filter=lfs diff=lfs merge=lfs -text
37
+ samples/male/names_places.wav filter=lfs diff=lfs merge=lfs -text
38
+ samples/male/numbers.wav filter=lfs diff=lfs merge=lfs -text
39
+ samples/male/punctuation.wav filter=lfs diff=lfs merge=lfs -text
40
+ samples/male/technical.wav filter=lfs diff=lfs merge=lfs -text
41
+ smoke/release_smoke.wav filter=lfs diff=lfs merge=lfs -text
42
+ smoke/standalone_cpu.wav filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets.) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright {yyyy} {name of copyright owner}
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
README.md CHANGED
@@ -1,169 +1,154 @@
1
- ---
2
- language:
3
- - en
4
- pipeline_tag: text-to-speech
5
- license: other
6
- tags:
7
- - text-to-speech
8
- - tts
9
- - speech
10
- - local
11
- - cpu
12
- - onnx
13
- - small-model
14
- - experimental
15
- ---
16
-
17
- # Inflect-Micro-v2
18
-
19
- > **Private release preview.** The selected male checkpoint is frozen for final
20
- > packaging. Female weights, inference files, samples, and release evaluations
21
- > will be added before the repository is made public.
22
-
23
- **A complete 24 kHz English text-to-speech model in 9.36 million inference
24
- parameters. The waveform decoder is included.**
25
-
26
- Inflect-Micro-v2 is the quality-focused member of the Inflect v2 family. It is
27
- being built for local assistants, games, embedded applications, and research on
28
- high-quality TTS under a strict 10M-parameter limit.
29
-
30
- [Inflect-Nano-v2](https://huggingface.co/owensong/Inflect-Nano-v2) -
31
- [Inflect-Nano-v1](https://huggingface.co/owensong/Inflect-Nano-v1)
32
-
33
- ## Current Release Candidate
34
-
35
- | Property | Male candidate | Female candidate |
36
- | --- | ---: | ---: |
37
- | Selected checkpoint | 180K polish | Pending |
38
- | Total deployable parameters | **9,356,513** | Target: same architecture |
39
- | Canonical FP32 size | **37.47 MB** | Pending |
40
- | FP16 size | **18.75 MB** | Pending validation |
41
- | Sample rate | **24 kHz** | **24 kHz planned** |
42
- | Input | English text | English text |
43
- | Output | Waveform | Waveform |
44
- | External vocoder required | No | No |
45
-
46
- The parameter count describes the inference-only text-to-waveform model. It does
47
- not include optimizer state, discriminators, or training-only posterior paths,
48
- and it does not hide a separate vocoder.
49
-
50
- ## Architecture
51
-
52
- Inflect-Micro-v2 uses a compact VITS-derived, single-stage text-to-waveform
53
- backbone configured specifically for the sub-10M regime:
54
-
55
- - a normalized English phoneme frontend with stress and preserved punctuation
56
- - a deterministic duration predictor for compact, stable deployment
57
- - monotonic alignment between phonemes and acoustic frames
58
- - a residual-coupling latent flow and posterior encoder during training
59
- - an integrated HiFi-GAN-style waveform decoder; no external vocoder is needed
60
- - multi-resolution STFT supervision during waveform training
61
-
62
- The selected checkpoint does not use the separate experimental HierJoint or
63
- HierNAR prosody-planner branches evaluated during development. Those models are
64
- not part of this release candidate.
65
-
66
- ### Core Configuration
67
-
68
- | Setting | Value |
69
- | --- | ---: |
70
- | Latent channels | 192 |
71
- | Text hidden channels | 96 |
72
- | Feed-forward channels | 768 |
73
- | Text encoder layers | 3 |
74
- | Attention heads | 2 |
75
- | Posterior encoder layers | 3 |
76
- | Initial waveform-decoder channels | 320 |
77
- | Segment size | 16,384 samples |
78
- | Upsampling | 8 x 8 x 2 x 2 |
79
-
80
- ## Evaluation Preview
81
-
82
- These measurements are **provisional development results**, not final release
83
- claims. The full matrix will be rerun from the exact downloadable male and
84
- female artifacts with published prompts, hashes, generation settings, raw
85
- outputs, and confidence intervals.
86
-
87
- | Metric | Current male 180K | Protocol |
88
- | --- | ---: | --- |
89
- | UTMOS22 | **4.370** | 200 matched prompts; automated MOS predictor |
90
- | Semantic WER | **3.55%** | Whisper-large-v3; 48 difficult OOD prompts |
91
- | FP32 artifact size | **37.47 MB** | Inference-only Safetensors |
92
-
93
- The current semantic-WER confidence interval overlaps the compact Piper and
94
- Kitten baselines. The supported interpretation is **competitive intelligibility
95
- on this prompt set**, not a definitive win.
96
-
97
- An earlier public listening study collected 196 pairwise decisions, but it did
98
- not record the precise Micro checkpoint in its metadata. It will not be used as
99
- evidence for this 180K release candidate. A new exact-artifact study is planned.
100
-
101
- ## Planned Release Files
102
-
103
- ```text
104
- weights/
105
- male/model.fp32.safetensors
106
- male/model.fp16.safetensors
107
- female/model.fp32.safetensors
108
- female/model.fp16.safetensors
109
- onnx/
110
- male/model.onnx
111
- female/model.onnx
112
- examples/
113
- evaluation/
114
- voices.json
115
- inference.py
116
- app.py
117
- ```
118
-
119
- FP32 Safetensors will be the canonical quality artifact. FP16 and ONNX will only
120
- be released after waveform-level parity and listening checks. INT8/GGUF formats
121
- are not planned for launch because they require their own audio-quality gate.
122
-
123
- ## Intended Use
124
-
125
- - local and offline speech generation
126
- - assistants, games, prototypes, and efficient deployment research
127
- - applications where model size and CPU execution matter
128
-
129
- ## Known Limitations
130
-
131
- - English only
132
- - fixed voices; this is not zero-shot voice cloning
133
- - unfamiliar phrasing can become flatter or more artifact-prone
134
- - punctuation and prosody are learned rather than guaranteed
135
- - numbers, abbreviations, and homographs depend on the text frontend
136
- - long passages should be sentence-chunked by the runtime
137
- - synthetic teacher speech can transfer teacher-specific biases
138
- - not validated for critical medical, legal, emergency, or accessibility use
139
-
140
- ## Training Data and License
141
-
142
- The model was trained primarily on synthetic English speech generated by a
143
- larger teacher TTS system. The final release will disclose corpus size, teacher
144
- configuration, filtering, train/test separation, and reference-voice
145
- provenance.
146
-
147
- Repository code is Apache 2.0 unless otherwise noted. The final model-weight and
148
- synthetic-data terms are still under review, so this preview uses
149
- `license: other`. Upstream code, teacher-model, dataset, and voice terms are not
150
- automatically relicensed by this repository.
151
-
152
- ## Responsible Use
153
-
154
- Do not use the included voices to impersonate a real person, deceive listeners,
155
- or create fraudulent content. Disclose synthetic speech where context could
156
- otherwise mislead.
157
-
158
- ## Release Gate
159
-
160
- Before this repository becomes public:
161
-
162
- - [ ] train and select the female checkpoint
163
- - [ ] upload inference-only FP32 artifacts and SHA-256 hashes
164
- - [ ] validate FP16 and ONNX parity
165
- - [ ] run exact-artifact WER, UTMOS22, runtime, and failure audits
166
- - [ ] complete an exact-checkpoint blind listening study
167
- - [ ] publish representative, average, OOD, long, and failure samples
168
- - [ ] verify installation and inference from a clean machine
169
- - [ ] finalize model and dataset licensing
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - en
5
+ pipeline_tag: text-to-speech
6
+ tags:
7
+ - text-to-speech
8
+ - speech-synthesis
9
+ - local-tts
10
+ - cpu
11
+ - small-model
12
+ - vits
13
+ - 24khz
14
+ ---
15
+
16
+ <h1 align="center">Inflect-Micro-v2</h1>
17
+
18
+ <p align="center"><strong>A complete 24 kHz text-to-waveform TTS system in 9,356,513 parameters.</strong><br>One English voice. CPU-ready. No external vocoder.</p>
19
+
20
+ Inflect-Micro-v2 is designed for local applications where the entire speech stack must fit below **10M parameters**. The count includes text encoding, duration modeling, latent generation, and waveform decoding. It does not hide a separately downloaded vocoder.
21
+
22
+ ## Listen First
23
+
24
+ All samples below use unseen evaluation text, not training-audio reconstructions.
25
+
26
+ | Prompt | Male voice |
27
+ | --- | --- |
28
+ | **Conversational** - It wasn't until later that I realized what had actually happened. | <audio controls preload="none" src="samples/male/conversational.wav"></audio> |
29
+ | **Punctuation** - First, close the window; second, turn off the lamp; finally, lock the door. | <audio controls preload="none" src="samples/male/punctuation.wav"></audio> |
30
+ | **Numbers** - The package weighs twelve point six kilograms and arrived on July twenty-first. | <audio controls preload="none" src="samples/male/numbers.wav"></audio> |
31
+ | **Names Places** - Gwendolyn photographed the eucalyptus trees outside Ljubljana. | <audio controls preload="none" src="samples/male/names_places.wav"></audio> |
32
+ | **Technical** - The system runs on three core components that all have to stay in sync. | <audio controls preload="none" src="samples/male/technical.wav"></audio> |
33
+
34
+ ## Model Facts
35
+
36
+ | | Inflect-Micro-v2 |
37
+ | --- | ---: |
38
+ | Deployable inference parameters | **9,356,513** |
39
+ | PyTorch checkpoint size | **37.53 MB** |
40
+ | Sample rate | **24 kHz** |
41
+ | Included voices | **1 male voice** |
42
+ | External vocoder | **None** |
43
+ | Inference package | **PyTorch** |
44
+
45
+ ## Training Data
46
+
47
+ The deployable Inflect weights were trained from scratch on a single-speaker synthetic English corpus produced with Qwen3-TTS. Qwen3-TTS is a training-time teacher only and is not downloaded or used for inference. The corpus itself is not included in this repository.
48
+
49
+ ## Evaluation
50
+
51
+ ![Matched unseen-text evaluation](assets/matched-evaluation.svg)
52
+
53
+ | System | UTMOS22 higher is better | Whisper-large-v3 semantic WER lower is better |
54
+ | --- | ---: | ---: |
55
+ | Inflect-Micro-v2 | 4.406 | 1.23% |
56
+ | Inflect-Nano-v2 | 4.392 | 1.53% |
57
+ | Piper Ryan Low | 4.256 | 1.23% |
58
+ | Kitten Nano Bruno | 4.246 | 0.96% |
59
+
60
+ The selected Inflect-Micro-v2 checkpoint scored **4.406 UTMOS22** and **1.23% semantic WER** on the matched 200-prompt release set. Automated metrics are diagnostics, not substitutes for listening.
61
+
62
+ <details>
63
+ <summary><strong>Evaluation protocol and raw reports</strong></summary>
64
+
65
+ - All four systems synthesize the same 200 unseen English prompts.
66
+ - Semantic WER uses Whisper-large-v3 and the disclosed English text normalizer.
67
+ - UTMOS22 uses `tarepan/SpeechMOS` v1.2.0 with 5,000 paired bootstrap samples.
68
+ - NISQA dimensions, signal diagnostics, categorized ASR failures, speaker consistency, and multi-seed robustness are under `evaluation/`.
69
+ - Competitor results apply only to the named checkpoints and voices, not every configuration of those projects.
70
+
71
+ </details>
72
+
73
+ ## Quickstart
74
+
75
+ ```bash
76
+ pip install torch numpy scipy soundfile phonemizer espeakng-loader num2words Unidecode huggingface_hub
77
+ hf download owensong/Inflect-Micro-v2 --local-dir Inflect-Micro-v2
78
+ python Inflect-Micro-v2/inference.py --model-dir Inflect-Micro-v2 --device cpu --text "Small models should still sound alive." --output sample.wav
79
+ ```
80
+
81
+ Python:
82
+
83
+ ```python
84
+ import sys
85
+ from huggingface_hub import snapshot_download
86
+
87
+ model_dir = snapshot_download("owensong/Inflect-Micro-v2")
88
+ sys.path.insert(0, model_dir)
89
+ from inference import InflectTTS
90
+
91
+ tts = InflectTTS(model_dir, device="cpu")
92
+ tts.save("The complete model runs locally.", "sample.wav", seed=7)
93
+ ```
94
+
95
+ Long text is split at punctuation-aware boundaries by the packaged runtime. `speed` ranges from `0.5` to `2.0`; `variation` ranges from `0.0` to `1.0`.
96
+
97
+ ## Architecture
98
+
99
+ Inflect v2 is a size-specific compact VITS-derived system:
100
+
101
+ - English normalization and stress-marked eSpeak phonemes with punctuation retained
102
+ - compact Transformer text encoder and deterministic duration predictor
103
+ - monotonic alignment, posterior encoder, and residual coupling flow during training
104
+ - integrated adversarial waveform decoder
105
+ - multi-resolution STFT, adversarial, feature, mel, duration, and KL supervision
106
+
107
+ | Component setting | Value |
108
+ | --- | ---: |
109
+ | Latent channels | 192 |
110
+ | Text hidden channels | 96 |
111
+ | Text encoder layers / heads | 3 / 2 |
112
+ | Feed-forward channels | 768 |
113
+ | Posterior encoder layers | 3 |
114
+ | Initial decoder channels | 320 |
115
+ | Upsample rates | 8, 8, 2, 2 |
116
+ | Training segment | 16,384 samples |
117
+
118
+ The downloadable checkpoint is inference-only. Training discriminators and optimizer state are excluded from both the package and deployable parameter count.
119
+
120
+ ## Runtime
121
+
122
+ End-to-end warm inference, including the text frontend:
123
+
124
+ | Device | RTF lower is better | Audio / wall time | p95 utterance latency | Load time |
125
+ | --- | ---: | ---: | ---: | ---: |
126
+ | CPU | 0.6969 | 1.4x | 4.398 s | 1.29 s |
127
+ | CUDA | 0.0168 | 59.5x | 0.086 s | 1.36 s |
128
+
129
+ Runtime depends strongly on CPU, PyTorch build, thread settings, and text length. Reproduce it from the JSON reports under `evaluation/runtime/`.
130
+
131
+ ## Limitations
132
+
133
+ - English only, with one fixed male voice; this release does not support voice cloning.
134
+ - Unfamiliar phrasing can become flatter or less expressive.
135
+ - Numbers and uncommon names are the weakest intelligibility categories in the release evaluation; verify critical verbalizations.
136
+ - Homograph pronunciation depends on context available to the frontend.
137
+ - Long passages are synthesized in chunks rather than as one unbounded sequence.
138
+ - This model is not validated for medical, legal, emergency, or accessibility-critical use.
139
+ - Synthetic training speech can transfer teacher cadence and biases.
140
+
141
+ ## Integrity and License
142
+
143
+ `release_manifest.json` records the source checkpoint, deployable parameter count, byte sizes, and SHA-256 hashes. Original Inflect work is licensed under Apache-2.0; bundled third-party portions retain the notices in `THIRD_PARTY_NOTICES.md`. Do not use the included voice to impersonate a real person or deceive listeners.
144
+
145
+ ## Citation
146
+
147
+ ```bibtex
148
+ @software{song2026inflectmicrov2,
149
+ author = {Owen Song},
150
+ title = {Inflect-Micro-v2: Complete Local Text-to-Waveform TTS Under 10M Parameters},
151
+ year = {2026},
152
+ url = {https://huggingface.co/owensong/Inflect-Micro-v2}
153
+ }
154
+ ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
THIRD_PARTY_NOTICES.md ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Third-Party Notices
2
+
3
+ Inflect v2 includes or adapts portions of the following open-source projects.
4
+ Their licenses apply to the corresponding portions; the rest of the Inflect v2
5
+ package is provided under the root Apache-2.0 license.
6
+
7
+ ## VITS
8
+
9
+ - Project: VITS (`jaywalnut310/vits`)
10
+ - Copyright: Copyright (c) 2021 Jaehyeon Kim
11
+ - License: MIT
12
+ - Packaged license: `third_party/VITS_LICENSE.txt`
13
+
14
+ The compact model architecture and several inference runtime modules derive from
15
+ VITS. The text frontend also retains its original Keith Ito MIT license at
16
+ `runtime/text/LICENSE`.
17
+
18
+ ## BigVGAN
19
+
20
+ - Project: BigVGAN (`NVIDIA/BigVGAN`)
21
+ - Copyright: Copyright (c) 2024 NVIDIA CORPORATION
22
+ - License: MIT
23
+ - Packaged license: `third_party/BIGVGAN_LICENSE.txt`
24
+
25
+ The lightweight alias-free waveform activation implementation derives from
26
+ BigVGAN's alias-free design and was adapted for this compact runtime.
assets/matched-evaluation.svg ADDED
config.json ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 25,
4
+ "eval_interval": 2000,
5
+ "max_steps": 188000,
6
+ "seed": 20260720,
7
+ "epochs": 1000,
8
+ "learning_rate": 5e-06,
9
+ "resume_learning_rate": 5e-06,
10
+ "betas": [
11
+ 0.8,
12
+ 0.99
13
+ ],
14
+ "eps": 1e-09,
15
+ "batch_size": 32,
16
+ "num_workers": 8,
17
+ "fp16_run": true,
18
+ "lr_decay": 0.9999,
19
+ "segment_size": 16384,
20
+ "init_lr_ratio": 1,
21
+ "warmup_epochs": 0,
22
+ "c_mel": 45,
23
+ "c_kl": 1.0,
24
+ "c_stft": 1.5,
25
+ "stft_resolutions": [
26
+ [
27
+ 1024,
28
+ 256,
29
+ 1024
30
+ ],
31
+ [
32
+ 512,
33
+ 128,
34
+ 512
35
+ ],
36
+ [
37
+ 256,
38
+ 64,
39
+ 256
40
+ ]
41
+ ],
42
+ "freeze_linguistic": true
43
+ },
44
+ "data": {
45
+ "training_files": "filelists/inflect_qwenfull_train_divrepair_v1.txt",
46
+ "validation_files": "filelists/inflect_qwenfull_dev_inflect_frontend.txt",
47
+ "text_cleaners": [],
48
+ "max_wav_value": 32768.0,
49
+ "sampling_rate": 24000,
50
+ "filter_length": 1024,
51
+ "hop_length": 256,
52
+ "win_length": 1024,
53
+ "n_mel_channels": 80,
54
+ "mel_fmin": 0.0,
55
+ "mel_fmax": 12000.0,
56
+ "add_blank": true,
57
+ "n_speakers": 0,
58
+ "cleaned_text": true
59
+ },
60
+ "model": {
61
+ "inter_channels": 192,
62
+ "hidden_channels": 96,
63
+ "filter_channels": 768,
64
+ "n_heads": 2,
65
+ "n_layers": 3,
66
+ "kernel_size": 3,
67
+ "p_dropout": 0.1,
68
+ "resblock": "1",
69
+ "resblock_kernel_sizes": [
70
+ 3,
71
+ 7,
72
+ 11
73
+ ],
74
+ "resblock_dilation_sizes": [
75
+ [
76
+ 1,
77
+ 3,
78
+ 5
79
+ ],
80
+ [
81
+ 1,
82
+ 3,
83
+ 5
84
+ ],
85
+ [
86
+ 1,
87
+ 3,
88
+ 5
89
+ ]
90
+ ],
91
+ "upsample_rates": [
92
+ 8,
93
+ 8,
94
+ 2,
95
+ 2
96
+ ],
97
+ "upsample_initial_channel": 320,
98
+ "upsample_kernel_sizes": [
99
+ 16,
100
+ 16,
101
+ 4,
102
+ 4
103
+ ],
104
+ "n_layers_q": 3,
105
+ "use_spectral_norm": false,
106
+ "use_sdp": false
107
+ }
108
+ }
evaluation/asr.json ADDED
The diff for this file is too large to render. See raw diff
 
evaluation/asr_failures.json ADDED
@@ -0,0 +1,1961 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_asr_failure_taxonomy_v1",
3
+ "source_report": "release_polish_overnight_20260720/final_large200/asr/report.json",
4
+ "asr": "whisper-large-v3",
5
+ "systems": {
6
+ "inflect-micro-v2-finalist": {
7
+ "utterances": 200,
8
+ "reference_words": 2608,
9
+ "semantic_wer": 0.012269938650306749,
10
+ "substitution_rate": 0.008819018404907975,
11
+ "deletion_rate": 0.0011503067484662577,
12
+ "insertion_rate": 0.0023006134969325155,
13
+ "utterance_failure_rate": 0.105,
14
+ "severe_failure_rate": 0.02,
15
+ "empty_hypothesis_rate": 0.0,
16
+ "leading_omission_rate": 0.0,
17
+ "ending_omission_rate": 0.0,
18
+ "insertion_burst_rate": 0.0,
19
+ "adjacent_phrase_repetition_rate": 0.02
20
+ },
21
+ "inflect-nano-v2-finalist": {
22
+ "utterances": 200,
23
+ "reference_words": 2608,
24
+ "semantic_wer": 0.015337423312883436,
25
+ "substitution_rate": 0.009585889570552147,
26
+ "deletion_rate": 0.0011503067484662577,
27
+ "insertion_rate": 0.004601226993865031,
28
+ "utterance_failure_rate": 0.115,
29
+ "severe_failure_rate": 0.03,
30
+ "empty_hypothesis_rate": 0.0,
31
+ "leading_omission_rate": 0.005,
32
+ "ending_omission_rate": 0.0,
33
+ "insertion_burst_rate": 0.0,
34
+ "adjacent_phrase_repetition_rate": 0.02
35
+ },
36
+ "kitten-nano-bruno": {
37
+ "utterances": 200,
38
+ "reference_words": 2608,
39
+ "semantic_wer": 0.009585889570552147,
40
+ "substitution_rate": 0.005368098159509203,
41
+ "deletion_rate": 0.0023006134969325155,
42
+ "insertion_rate": 0.0019171779141104294,
43
+ "utterance_failure_rate": 0.075,
44
+ "severe_failure_rate": 0.01,
45
+ "empty_hypothesis_rate": 0.0,
46
+ "leading_omission_rate": 0.0,
47
+ "ending_omission_rate": 0.005,
48
+ "insertion_burst_rate": 0.0,
49
+ "adjacent_phrase_repetition_rate": 0.02
50
+ },
51
+ "piper-ryan-low": {
52
+ "utterances": 200,
53
+ "reference_words": 2608,
54
+ "semantic_wer": 0.012269938650306749,
55
+ "substitution_rate": 0.009585889570552147,
56
+ "deletion_rate": 0.0011503067484662577,
57
+ "insertion_rate": 0.0015337423312883436,
58
+ "utterance_failure_rate": 0.095,
59
+ "severe_failure_rate": 0.02,
60
+ "empty_hypothesis_rate": 0.0,
61
+ "leading_omission_rate": 0.0,
62
+ "ending_omission_rate": 0.0,
63
+ "insertion_burst_rate": 0.0,
64
+ "adjacent_phrase_repetition_rate": 0.02
65
+ }
66
+ },
67
+ "systems_by_category": {
68
+ "inflect-micro-v2-finalist::conversational": {
69
+ "utterances": 25,
70
+ "reference_words": 309,
71
+ "semantic_wer": 0.0,
72
+ "substitution_rate": 0.0,
73
+ "deletion_rate": 0.0,
74
+ "insertion_rate": 0.0,
75
+ "utterance_failure_rate": 0.0,
76
+ "severe_failure_rate": 0.0,
77
+ "empty_hypothesis_rate": 0.0,
78
+ "leading_omission_rate": 0.0,
79
+ "ending_omission_rate": 0.0,
80
+ "insertion_burst_rate": 0.0,
81
+ "adjacent_phrase_repetition_rate": 0.0
82
+ },
83
+ "inflect-micro-v2-finalist::descriptive": {
84
+ "utterances": 16,
85
+ "reference_words": 226,
86
+ "semantic_wer": 0.0,
87
+ "substitution_rate": 0.0,
88
+ "deletion_rate": 0.0,
89
+ "insertion_rate": 0.0,
90
+ "utterance_failure_rate": 0.0,
91
+ "severe_failure_rate": 0.0,
92
+ "empty_hypothesis_rate": 0.0,
93
+ "leading_omission_rate": 0.0,
94
+ "ending_omission_rate": 0.0,
95
+ "insertion_burst_rate": 0.0,
96
+ "adjacent_phrase_repetition_rate": 0.0625
97
+ },
98
+ "inflect-micro-v2-finalist::emotional": {
99
+ "utterances": 24,
100
+ "reference_words": 329,
101
+ "semantic_wer": 0.0,
102
+ "substitution_rate": 0.0,
103
+ "deletion_rate": 0.0,
104
+ "insertion_rate": 0.0,
105
+ "utterance_failure_rate": 0.0,
106
+ "severe_failure_rate": 0.0,
107
+ "empty_hypothesis_rate": 0.0,
108
+ "leading_omission_rate": 0.0,
109
+ "ending_omission_rate": 0.0,
110
+ "insertion_burst_rate": 0.0,
111
+ "adjacent_phrase_repetition_rate": 0.041666666666666664
112
+ },
113
+ "inflect-micro-v2-finalist::homographs": {
114
+ "utterances": 6,
115
+ "reference_words": 70,
116
+ "semantic_wer": 0.014285714285714285,
117
+ "substitution_rate": 0.014285714285714285,
118
+ "deletion_rate": 0.0,
119
+ "insertion_rate": 0.0,
120
+ "utterance_failure_rate": 0.16666666666666666,
121
+ "severe_failure_rate": 0.0,
122
+ "empty_hypothesis_rate": 0.0,
123
+ "leading_omission_rate": 0.0,
124
+ "ending_omission_rate": 0.0,
125
+ "insertion_burst_rate": 0.0,
126
+ "adjacent_phrase_repetition_rate": 0.0
127
+ },
128
+ "inflect-micro-v2-finalist::long": {
129
+ "utterances": 15,
130
+ "reference_words": 432,
131
+ "semantic_wer": 0.0023148148148148147,
132
+ "substitution_rate": 0.0,
133
+ "deletion_rate": 0.0023148148148148147,
134
+ "insertion_rate": 0.0,
135
+ "utterance_failure_rate": 0.06666666666666667,
136
+ "severe_failure_rate": 0.0,
137
+ "empty_hypothesis_rate": 0.0,
138
+ "leading_omission_rate": 0.0,
139
+ "ending_omission_rate": 0.0,
140
+ "insertion_burst_rate": 0.0,
141
+ "adjacent_phrase_repetition_rate": 0.0
142
+ },
143
+ "inflect-micro-v2-finalist::long_range": {
144
+ "utterances": 6,
145
+ "reference_words": 121,
146
+ "semantic_wer": 0.0,
147
+ "substitution_rate": 0.0,
148
+ "deletion_rate": 0.0,
149
+ "insertion_rate": 0.0,
150
+ "utterance_failure_rate": 0.0,
151
+ "severe_failure_rate": 0.0,
152
+ "empty_hypothesis_rate": 0.0,
153
+ "leading_omission_rate": 0.0,
154
+ "ending_omission_rate": 0.0,
155
+ "insertion_burst_rate": 0.0,
156
+ "adjacent_phrase_repetition_rate": 0.0
157
+ },
158
+ "inflect-micro-v2-finalist::names_places": {
159
+ "utterances": 6,
160
+ "reference_words": 57,
161
+ "semantic_wer": 0.07017543859649122,
162
+ "substitution_rate": 0.07017543859649122,
163
+ "deletion_rate": 0.0,
164
+ "insertion_rate": 0.0,
165
+ "utterance_failure_rate": 0.5,
166
+ "severe_failure_rate": 0.0,
167
+ "empty_hypothesis_rate": 0.0,
168
+ "leading_omission_rate": 0.0,
169
+ "ending_omission_rate": 0.0,
170
+ "insertion_burst_rate": 0.0,
171
+ "adjacent_phrase_repetition_rate": 0.0
172
+ },
173
+ "inflect-micro-v2-finalist::narrative": {
174
+ "utterances": 24,
175
+ "reference_words": 352,
176
+ "semantic_wer": 0.002840909090909091,
177
+ "substitution_rate": 0.002840909090909091,
178
+ "deletion_rate": 0.0,
179
+ "insertion_rate": 0.0,
180
+ "utterance_failure_rate": 0.041666666666666664,
181
+ "severe_failure_rate": 0.0,
182
+ "empty_hypothesis_rate": 0.0,
183
+ "leading_omission_rate": 0.0,
184
+ "ending_omission_rate": 0.0,
185
+ "insertion_burst_rate": 0.0,
186
+ "adjacent_phrase_repetition_rate": 0.0
187
+ },
188
+ "inflect-micro-v2-finalist::numbers": {
189
+ "utterances": 6,
190
+ "reference_words": 64,
191
+ "semantic_wer": 0.15625,
192
+ "substitution_rate": 0.125,
193
+ "deletion_rate": 0.0,
194
+ "insertion_rate": 0.03125,
195
+ "utterance_failure_rate": 0.8333333333333334,
196
+ "severe_failure_rate": 0.3333333333333333,
197
+ "empty_hypothesis_rate": 0.0,
198
+ "leading_omission_rate": 0.0,
199
+ "ending_omission_rate": 0.0,
200
+ "insertion_burst_rate": 0.0,
201
+ "adjacent_phrase_repetition_rate": 0.0
202
+ },
203
+ "inflect-micro-v2-finalist::punctuation": {
204
+ "utterances": 6,
205
+ "reference_words": 65,
206
+ "semantic_wer": 0.0,
207
+ "substitution_rate": 0.0,
208
+ "deletion_rate": 0.0,
209
+ "insertion_rate": 0.0,
210
+ "utterance_failure_rate": 0.0,
211
+ "severe_failure_rate": 0.0,
212
+ "empty_hypothesis_rate": 0.0,
213
+ "leading_omission_rate": 0.0,
214
+ "ending_omission_rate": 0.0,
215
+ "insertion_burst_rate": 0.0,
216
+ "adjacent_phrase_repetition_rate": 0.0
217
+ },
218
+ "inflect-micro-v2-finalist::question": {
219
+ "utterances": 15,
220
+ "reference_words": 165,
221
+ "semantic_wer": 0.0,
222
+ "substitution_rate": 0.0,
223
+ "deletion_rate": 0.0,
224
+ "insertion_rate": 0.0,
225
+ "utterance_failure_rate": 0.0,
226
+ "severe_failure_rate": 0.0,
227
+ "empty_hypothesis_rate": 0.0,
228
+ "leading_omission_rate": 0.0,
229
+ "ending_omission_rate": 0.0,
230
+ "insertion_burst_rate": 0.0,
231
+ "adjacent_phrase_repetition_rate": 0.0
232
+ },
233
+ "inflect-micro-v2-finalist::rare_words": {
234
+ "utterances": 6,
235
+ "reference_words": 57,
236
+ "semantic_wer": 0.05263157894736842,
237
+ "substitution_rate": 0.03508771929824561,
238
+ "deletion_rate": 0.0,
239
+ "insertion_rate": 0.017543859649122806,
240
+ "utterance_failure_rate": 0.3333333333333333,
241
+ "severe_failure_rate": 0.0,
242
+ "empty_hypothesis_rate": 0.0,
243
+ "leading_omission_rate": 0.0,
244
+ "ending_omission_rate": 0.0,
245
+ "insertion_burst_rate": 0.0,
246
+ "adjacent_phrase_repetition_rate": 0.0
247
+ },
248
+ "inflect-micro-v2-finalist::short": {
249
+ "utterances": 24,
250
+ "reference_words": 105,
251
+ "semantic_wer": 0.0380952380952381,
252
+ "substitution_rate": 0.01904761904761905,
253
+ "deletion_rate": 0.0,
254
+ "insertion_rate": 0.01904761904761905,
255
+ "utterance_failure_rate": 0.16666666666666666,
256
+ "severe_failure_rate": 0.041666666666666664,
257
+ "empty_hypothesis_rate": 0.0,
258
+ "leading_omission_rate": 0.0,
259
+ "ending_omission_rate": 0.0,
260
+ "insertion_burst_rate": 0.0,
261
+ "adjacent_phrase_repetition_rate": 0.08333333333333333
262
+ },
263
+ "inflect-micro-v2-finalist::technical": {
264
+ "utterances": 21,
265
+ "reference_words": 256,
266
+ "semantic_wer": 0.03125,
267
+ "substitution_rate": 0.01953125,
268
+ "deletion_rate": 0.0078125,
269
+ "insertion_rate": 0.00390625,
270
+ "utterance_failure_rate": 0.19047619047619047,
271
+ "severe_failure_rate": 0.047619047619047616,
272
+ "empty_hypothesis_rate": 0.0,
273
+ "leading_omission_rate": 0.0,
274
+ "ending_omission_rate": 0.0,
275
+ "insertion_burst_rate": 0.0,
276
+ "adjacent_phrase_repetition_rate": 0.0
277
+ },
278
+ "inflect-nano-v2-finalist::conversational": {
279
+ "utterances": 25,
280
+ "reference_words": 309,
281
+ "semantic_wer": 0.003236245954692557,
282
+ "substitution_rate": 0.0,
283
+ "deletion_rate": 0.0,
284
+ "insertion_rate": 0.003236245954692557,
285
+ "utterance_failure_rate": 0.04,
286
+ "severe_failure_rate": 0.0,
287
+ "empty_hypothesis_rate": 0.0,
288
+ "leading_omission_rate": 0.0,
289
+ "ending_omission_rate": 0.0,
290
+ "insertion_burst_rate": 0.0,
291
+ "adjacent_phrase_repetition_rate": 0.0
292
+ },
293
+ "inflect-nano-v2-finalist::descriptive": {
294
+ "utterances": 16,
295
+ "reference_words": 226,
296
+ "semantic_wer": 0.0,
297
+ "substitution_rate": 0.0,
298
+ "deletion_rate": 0.0,
299
+ "insertion_rate": 0.0,
300
+ "utterance_failure_rate": 0.0,
301
+ "severe_failure_rate": 0.0,
302
+ "empty_hypothesis_rate": 0.0,
303
+ "leading_omission_rate": 0.0,
304
+ "ending_omission_rate": 0.0,
305
+ "insertion_burst_rate": 0.0,
306
+ "adjacent_phrase_repetition_rate": 0.0625
307
+ },
308
+ "inflect-nano-v2-finalist::emotional": {
309
+ "utterances": 24,
310
+ "reference_words": 329,
311
+ "semantic_wer": 0.0,
312
+ "substitution_rate": 0.0,
313
+ "deletion_rate": 0.0,
314
+ "insertion_rate": 0.0,
315
+ "utterance_failure_rate": 0.0,
316
+ "severe_failure_rate": 0.0,
317
+ "empty_hypothesis_rate": 0.0,
318
+ "leading_omission_rate": 0.0,
319
+ "ending_omission_rate": 0.0,
320
+ "insertion_burst_rate": 0.0,
321
+ "adjacent_phrase_repetition_rate": 0.041666666666666664
322
+ },
323
+ "inflect-nano-v2-finalist::homographs": {
324
+ "utterances": 6,
325
+ "reference_words": 70,
326
+ "semantic_wer": 0.05714285714285714,
327
+ "substitution_rate": 0.05714285714285714,
328
+ "deletion_rate": 0.0,
329
+ "insertion_rate": 0.0,
330
+ "utterance_failure_rate": 0.3333333333333333,
331
+ "severe_failure_rate": 0.0,
332
+ "empty_hypothesis_rate": 0.0,
333
+ "leading_omission_rate": 0.0,
334
+ "ending_omission_rate": 0.0,
335
+ "insertion_burst_rate": 0.0,
336
+ "adjacent_phrase_repetition_rate": 0.0
337
+ },
338
+ "inflect-nano-v2-finalist::long": {
339
+ "utterances": 15,
340
+ "reference_words": 432,
341
+ "semantic_wer": 0.004629629629629629,
342
+ "substitution_rate": 0.0023148148148148147,
343
+ "deletion_rate": 0.0,
344
+ "insertion_rate": 0.0023148148148148147,
345
+ "utterance_failure_rate": 0.06666666666666667,
346
+ "severe_failure_rate": 0.0,
347
+ "empty_hypothesis_rate": 0.0,
348
+ "leading_omission_rate": 0.0,
349
+ "ending_omission_rate": 0.0,
350
+ "insertion_burst_rate": 0.0,
351
+ "adjacent_phrase_repetition_rate": 0.0
352
+ },
353
+ "inflect-nano-v2-finalist::long_range": {
354
+ "utterances": 6,
355
+ "reference_words": 121,
356
+ "semantic_wer": 0.008264462809917356,
357
+ "substitution_rate": 0.008264462809917356,
358
+ "deletion_rate": 0.0,
359
+ "insertion_rate": 0.0,
360
+ "utterance_failure_rate": 0.16666666666666666,
361
+ "severe_failure_rate": 0.0,
362
+ "empty_hypothesis_rate": 0.0,
363
+ "leading_omission_rate": 0.0,
364
+ "ending_omission_rate": 0.0,
365
+ "insertion_burst_rate": 0.0,
366
+ "adjacent_phrase_repetition_rate": 0.0
367
+ },
368
+ "inflect-nano-v2-finalist::names_places": {
369
+ "utterances": 6,
370
+ "reference_words": 57,
371
+ "semantic_wer": 0.08771929824561403,
372
+ "substitution_rate": 0.08771929824561403,
373
+ "deletion_rate": 0.0,
374
+ "insertion_rate": 0.0,
375
+ "utterance_failure_rate": 0.5,
376
+ "severe_failure_rate": 0.16666666666666666,
377
+ "empty_hypothesis_rate": 0.0,
378
+ "leading_omission_rate": 0.0,
379
+ "ending_omission_rate": 0.0,
380
+ "insertion_burst_rate": 0.0,
381
+ "adjacent_phrase_repetition_rate": 0.0
382
+ },
383
+ "inflect-nano-v2-finalist::narrative": {
384
+ "utterances": 24,
385
+ "reference_words": 352,
386
+ "semantic_wer": 0.011363636363636364,
387
+ "substitution_rate": 0.005681818181818182,
388
+ "deletion_rate": 0.0,
389
+ "insertion_rate": 0.005681818181818182,
390
+ "utterance_failure_rate": 0.125,
391
+ "severe_failure_rate": 0.0,
392
+ "empty_hypothesis_rate": 0.0,
393
+ "leading_omission_rate": 0.0,
394
+ "ending_omission_rate": 0.0,
395
+ "insertion_burst_rate": 0.0,
396
+ "adjacent_phrase_repetition_rate": 0.0
397
+ },
398
+ "inflect-nano-v2-finalist::numbers": {
399
+ "utterances": 6,
400
+ "reference_words": 64,
401
+ "semantic_wer": 0.125,
402
+ "substitution_rate": 0.078125,
403
+ "deletion_rate": 0.015625,
404
+ "insertion_rate": 0.03125,
405
+ "utterance_failure_rate": 0.5,
406
+ "severe_failure_rate": 0.3333333333333333,
407
+ "empty_hypothesis_rate": 0.0,
408
+ "leading_omission_rate": 0.16666666666666666,
409
+ "ending_omission_rate": 0.0,
410
+ "insertion_burst_rate": 0.0,
411
+ "adjacent_phrase_repetition_rate": 0.0
412
+ },
413
+ "inflect-nano-v2-finalist::punctuation": {
414
+ "utterances": 6,
415
+ "reference_words": 65,
416
+ "semantic_wer": 0.0,
417
+ "substitution_rate": 0.0,
418
+ "deletion_rate": 0.0,
419
+ "insertion_rate": 0.0,
420
+ "utterance_failure_rate": 0.0,
421
+ "severe_failure_rate": 0.0,
422
+ "empty_hypothesis_rate": 0.0,
423
+ "leading_omission_rate": 0.0,
424
+ "ending_omission_rate": 0.0,
425
+ "insertion_burst_rate": 0.0,
426
+ "adjacent_phrase_repetition_rate": 0.0
427
+ },
428
+ "inflect-nano-v2-finalist::question": {
429
+ "utterances": 15,
430
+ "reference_words": 165,
431
+ "semantic_wer": 0.0,
432
+ "substitution_rate": 0.0,
433
+ "deletion_rate": 0.0,
434
+ "insertion_rate": 0.0,
435
+ "utterance_failure_rate": 0.0,
436
+ "severe_failure_rate": 0.0,
437
+ "empty_hypothesis_rate": 0.0,
438
+ "leading_omission_rate": 0.0,
439
+ "ending_omission_rate": 0.0,
440
+ "insertion_burst_rate": 0.0,
441
+ "adjacent_phrase_repetition_rate": 0.0
442
+ },
443
+ "inflect-nano-v2-finalist::rare_words": {
444
+ "utterances": 6,
445
+ "reference_words": 57,
446
+ "semantic_wer": 0.03508771929824561,
447
+ "substitution_rate": 0.017543859649122806,
448
+ "deletion_rate": 0.0,
449
+ "insertion_rate": 0.017543859649122806,
450
+ "utterance_failure_rate": 0.16666666666666666,
451
+ "severe_failure_rate": 0.0,
452
+ "empty_hypothesis_rate": 0.0,
453
+ "leading_omission_rate": 0.0,
454
+ "ending_omission_rate": 0.0,
455
+ "insertion_burst_rate": 0.0,
456
+ "adjacent_phrase_repetition_rate": 0.0
457
+ },
458
+ "inflect-nano-v2-finalist::short": {
459
+ "utterances": 24,
460
+ "reference_words": 105,
461
+ "semantic_wer": 0.047619047619047616,
462
+ "substitution_rate": 0.009523809523809525,
463
+ "deletion_rate": 0.0,
464
+ "insertion_rate": 0.0380952380952381,
465
+ "utterance_failure_rate": 0.16666666666666666,
466
+ "severe_failure_rate": 0.08333333333333333,
467
+ "empty_hypothesis_rate": 0.0,
468
+ "leading_omission_rate": 0.0,
469
+ "ending_omission_rate": 0.0,
470
+ "insertion_burst_rate": 0.0,
471
+ "adjacent_phrase_repetition_rate": 0.08333333333333333
472
+ },
473
+ "inflect-nano-v2-finalist::technical": {
474
+ "utterances": 21,
475
+ "reference_words": 256,
476
+ "semantic_wer": 0.03125,
477
+ "substitution_rate": 0.01953125,
478
+ "deletion_rate": 0.0078125,
479
+ "insertion_rate": 0.00390625,
480
+ "utterance_failure_rate": 0.19047619047619047,
481
+ "severe_failure_rate": 0.047619047619047616,
482
+ "empty_hypothesis_rate": 0.0,
483
+ "leading_omission_rate": 0.0,
484
+ "ending_omission_rate": 0.0,
485
+ "insertion_burst_rate": 0.0,
486
+ "adjacent_phrase_repetition_rate": 0.0
487
+ },
488
+ "kitten-nano-bruno::conversational": {
489
+ "utterances": 25,
490
+ "reference_words": 309,
491
+ "semantic_wer": 0.003236245954692557,
492
+ "substitution_rate": 0.0,
493
+ "deletion_rate": 0.003236245954692557,
494
+ "insertion_rate": 0.0,
495
+ "utterance_failure_rate": 0.04,
496
+ "severe_failure_rate": 0.0,
497
+ "empty_hypothesis_rate": 0.0,
498
+ "leading_omission_rate": 0.0,
499
+ "ending_omission_rate": 0.0,
500
+ "insertion_burst_rate": 0.0,
501
+ "adjacent_phrase_repetition_rate": 0.0
502
+ },
503
+ "kitten-nano-bruno::descriptive": {
504
+ "utterances": 16,
505
+ "reference_words": 226,
506
+ "semantic_wer": 0.0,
507
+ "substitution_rate": 0.0,
508
+ "deletion_rate": 0.0,
509
+ "insertion_rate": 0.0,
510
+ "utterance_failure_rate": 0.0,
511
+ "severe_failure_rate": 0.0,
512
+ "empty_hypothesis_rate": 0.0,
513
+ "leading_omission_rate": 0.0,
514
+ "ending_omission_rate": 0.0,
515
+ "insertion_burst_rate": 0.0,
516
+ "adjacent_phrase_repetition_rate": 0.0625
517
+ },
518
+ "kitten-nano-bruno::emotional": {
519
+ "utterances": 24,
520
+ "reference_words": 329,
521
+ "semantic_wer": 0.0,
522
+ "substitution_rate": 0.0,
523
+ "deletion_rate": 0.0,
524
+ "insertion_rate": 0.0,
525
+ "utterance_failure_rate": 0.0,
526
+ "severe_failure_rate": 0.0,
527
+ "empty_hypothesis_rate": 0.0,
528
+ "leading_omission_rate": 0.0,
529
+ "ending_omission_rate": 0.0,
530
+ "insertion_burst_rate": 0.0,
531
+ "adjacent_phrase_repetition_rate": 0.041666666666666664
532
+ },
533
+ "kitten-nano-bruno::homographs": {
534
+ "utterances": 6,
535
+ "reference_words": 70,
536
+ "semantic_wer": 0.014285714285714285,
537
+ "substitution_rate": 0.014285714285714285,
538
+ "deletion_rate": 0.0,
539
+ "insertion_rate": 0.0,
540
+ "utterance_failure_rate": 0.16666666666666666,
541
+ "severe_failure_rate": 0.0,
542
+ "empty_hypothesis_rate": 0.0,
543
+ "leading_omission_rate": 0.0,
544
+ "ending_omission_rate": 0.0,
545
+ "insertion_burst_rate": 0.0,
546
+ "adjacent_phrase_repetition_rate": 0.0
547
+ },
548
+ "kitten-nano-bruno::long": {
549
+ "utterances": 15,
550
+ "reference_words": 432,
551
+ "semantic_wer": 0.0023148148148148147,
552
+ "substitution_rate": 0.0,
553
+ "deletion_rate": 0.0023148148148148147,
554
+ "insertion_rate": 0.0,
555
+ "utterance_failure_rate": 0.06666666666666667,
556
+ "severe_failure_rate": 0.0,
557
+ "empty_hypothesis_rate": 0.0,
558
+ "leading_omission_rate": 0.0,
559
+ "ending_omission_rate": 0.0,
560
+ "insertion_burst_rate": 0.0,
561
+ "adjacent_phrase_repetition_rate": 0.0
562
+ },
563
+ "kitten-nano-bruno::long_range": {
564
+ "utterances": 6,
565
+ "reference_words": 121,
566
+ "semantic_wer": 0.0,
567
+ "substitution_rate": 0.0,
568
+ "deletion_rate": 0.0,
569
+ "insertion_rate": 0.0,
570
+ "utterance_failure_rate": 0.0,
571
+ "severe_failure_rate": 0.0,
572
+ "empty_hypothesis_rate": 0.0,
573
+ "leading_omission_rate": 0.0,
574
+ "ending_omission_rate": 0.0,
575
+ "insertion_burst_rate": 0.0,
576
+ "adjacent_phrase_repetition_rate": 0.0
577
+ },
578
+ "kitten-nano-bruno::names_places": {
579
+ "utterances": 6,
580
+ "reference_words": 57,
581
+ "semantic_wer": 0.05263157894736842,
582
+ "substitution_rate": 0.05263157894736842,
583
+ "deletion_rate": 0.0,
584
+ "insertion_rate": 0.0,
585
+ "utterance_failure_rate": 0.16666666666666666,
586
+ "severe_failure_rate": 0.16666666666666666,
587
+ "empty_hypothesis_rate": 0.0,
588
+ "leading_omission_rate": 0.0,
589
+ "ending_omission_rate": 0.0,
590
+ "insertion_burst_rate": 0.0,
591
+ "adjacent_phrase_repetition_rate": 0.0
592
+ },
593
+ "kitten-nano-bruno::narrative": {
594
+ "utterances": 24,
595
+ "reference_words": 352,
596
+ "semantic_wer": 0.011363636363636364,
597
+ "substitution_rate": 0.002840909090909091,
598
+ "deletion_rate": 0.005681818181818182,
599
+ "insertion_rate": 0.002840909090909091,
600
+ "utterance_failure_rate": 0.125,
601
+ "severe_failure_rate": 0.0,
602
+ "empty_hypothesis_rate": 0.0,
603
+ "leading_omission_rate": 0.0,
604
+ "ending_omission_rate": 0.041666666666666664,
605
+ "insertion_burst_rate": 0.0,
606
+ "adjacent_phrase_repetition_rate": 0.0
607
+ },
608
+ "kitten-nano-bruno::numbers": {
609
+ "utterances": 6,
610
+ "reference_words": 64,
611
+ "semantic_wer": 0.09375,
612
+ "substitution_rate": 0.0625,
613
+ "deletion_rate": 0.0,
614
+ "insertion_rate": 0.03125,
615
+ "utterance_failure_rate": 0.5,
616
+ "severe_failure_rate": 0.16666666666666666,
617
+ "empty_hypothesis_rate": 0.0,
618
+ "leading_omission_rate": 0.0,
619
+ "ending_omission_rate": 0.0,
620
+ "insertion_burst_rate": 0.0,
621
+ "adjacent_phrase_repetition_rate": 0.0
622
+ },
623
+ "kitten-nano-bruno::punctuation": {
624
+ "utterances": 6,
625
+ "reference_words": 65,
626
+ "semantic_wer": 0.0,
627
+ "substitution_rate": 0.0,
628
+ "deletion_rate": 0.0,
629
+ "insertion_rate": 0.0,
630
+ "utterance_failure_rate": 0.0,
631
+ "severe_failure_rate": 0.0,
632
+ "empty_hypothesis_rate": 0.0,
633
+ "leading_omission_rate": 0.0,
634
+ "ending_omission_rate": 0.0,
635
+ "insertion_burst_rate": 0.0,
636
+ "adjacent_phrase_repetition_rate": 0.0
637
+ },
638
+ "kitten-nano-bruno::question": {
639
+ "utterances": 15,
640
+ "reference_words": 165,
641
+ "semantic_wer": 0.0,
642
+ "substitution_rate": 0.0,
643
+ "deletion_rate": 0.0,
644
+ "insertion_rate": 0.0,
645
+ "utterance_failure_rate": 0.0,
646
+ "severe_failure_rate": 0.0,
647
+ "empty_hypothesis_rate": 0.0,
648
+ "leading_omission_rate": 0.0,
649
+ "ending_omission_rate": 0.0,
650
+ "insertion_burst_rate": 0.0,
651
+ "adjacent_phrase_repetition_rate": 0.0
652
+ },
653
+ "kitten-nano-bruno::rare_words": {
654
+ "utterances": 6,
655
+ "reference_words": 57,
656
+ "semantic_wer": 0.03508771929824561,
657
+ "substitution_rate": 0.017543859649122806,
658
+ "deletion_rate": 0.0,
659
+ "insertion_rate": 0.017543859649122806,
660
+ "utterance_failure_rate": 0.16666666666666666,
661
+ "severe_failure_rate": 0.0,
662
+ "empty_hypothesis_rate": 0.0,
663
+ "leading_omission_rate": 0.0,
664
+ "ending_omission_rate": 0.0,
665
+ "insertion_burst_rate": 0.0,
666
+ "adjacent_phrase_repetition_rate": 0.0
667
+ },
668
+ "kitten-nano-bruno::short": {
669
+ "utterances": 24,
670
+ "reference_words": 105,
671
+ "semantic_wer": 0.01904761904761905,
672
+ "substitution_rate": 0.01904761904761905,
673
+ "deletion_rate": 0.0,
674
+ "insertion_rate": 0.0,
675
+ "utterance_failure_rate": 0.08333333333333333,
676
+ "severe_failure_rate": 0.0,
677
+ "empty_hypothesis_rate": 0.0,
678
+ "leading_omission_rate": 0.0,
679
+ "ending_omission_rate": 0.0,
680
+ "insertion_burst_rate": 0.0,
681
+ "adjacent_phrase_repetition_rate": 0.08333333333333333
682
+ },
683
+ "kitten-nano-bruno::technical": {
684
+ "utterances": 21,
685
+ "reference_words": 256,
686
+ "semantic_wer": 0.01953125,
687
+ "substitution_rate": 0.0078125,
688
+ "deletion_rate": 0.0078125,
689
+ "insertion_rate": 0.00390625,
690
+ "utterance_failure_rate": 0.09523809523809523,
691
+ "severe_failure_rate": 0.0,
692
+ "empty_hypothesis_rate": 0.0,
693
+ "leading_omission_rate": 0.0,
694
+ "ending_omission_rate": 0.0,
695
+ "insertion_burst_rate": 0.0,
696
+ "adjacent_phrase_repetition_rate": 0.0
697
+ },
698
+ "piper-ryan-low::conversational": {
699
+ "utterances": 25,
700
+ "reference_words": 309,
701
+ "semantic_wer": 0.006472491909385114,
702
+ "substitution_rate": 0.006472491909385114,
703
+ "deletion_rate": 0.0,
704
+ "insertion_rate": 0.0,
705
+ "utterance_failure_rate": 0.04,
706
+ "severe_failure_rate": 0.0,
707
+ "empty_hypothesis_rate": 0.0,
708
+ "leading_omission_rate": 0.0,
709
+ "ending_omission_rate": 0.0,
710
+ "insertion_burst_rate": 0.0,
711
+ "adjacent_phrase_repetition_rate": 0.0
712
+ },
713
+ "piper-ryan-low::descriptive": {
714
+ "utterances": 16,
715
+ "reference_words": 226,
716
+ "semantic_wer": 0.008849557522123894,
717
+ "substitution_rate": 0.008849557522123894,
718
+ "deletion_rate": 0.0,
719
+ "insertion_rate": 0.0,
720
+ "utterance_failure_rate": 0.125,
721
+ "severe_failure_rate": 0.0,
722
+ "empty_hypothesis_rate": 0.0,
723
+ "leading_omission_rate": 0.0,
724
+ "ending_omission_rate": 0.0,
725
+ "insertion_burst_rate": 0.0,
726
+ "adjacent_phrase_repetition_rate": 0.0625
727
+ },
728
+ "piper-ryan-low::emotional": {
729
+ "utterances": 24,
730
+ "reference_words": 329,
731
+ "semantic_wer": 0.0,
732
+ "substitution_rate": 0.0,
733
+ "deletion_rate": 0.0,
734
+ "insertion_rate": 0.0,
735
+ "utterance_failure_rate": 0.0,
736
+ "severe_failure_rate": 0.0,
737
+ "empty_hypothesis_rate": 0.0,
738
+ "leading_omission_rate": 0.0,
739
+ "ending_omission_rate": 0.0,
740
+ "insertion_burst_rate": 0.0,
741
+ "adjacent_phrase_repetition_rate": 0.041666666666666664
742
+ },
743
+ "piper-ryan-low::homographs": {
744
+ "utterances": 6,
745
+ "reference_words": 70,
746
+ "semantic_wer": 0.014285714285714285,
747
+ "substitution_rate": 0.014285714285714285,
748
+ "deletion_rate": 0.0,
749
+ "insertion_rate": 0.0,
750
+ "utterance_failure_rate": 0.16666666666666666,
751
+ "severe_failure_rate": 0.0,
752
+ "empty_hypothesis_rate": 0.0,
753
+ "leading_omission_rate": 0.0,
754
+ "ending_omission_rate": 0.0,
755
+ "insertion_burst_rate": 0.0,
756
+ "adjacent_phrase_repetition_rate": 0.0
757
+ },
758
+ "piper-ryan-low::long": {
759
+ "utterances": 15,
760
+ "reference_words": 432,
761
+ "semantic_wer": 0.004629629629629629,
762
+ "substitution_rate": 0.0023148148148148147,
763
+ "deletion_rate": 0.0023148148148148147,
764
+ "insertion_rate": 0.0,
765
+ "utterance_failure_rate": 0.13333333333333333,
766
+ "severe_failure_rate": 0.0,
767
+ "empty_hypothesis_rate": 0.0,
768
+ "leading_omission_rate": 0.0,
769
+ "ending_omission_rate": 0.0,
770
+ "insertion_burst_rate": 0.0,
771
+ "adjacent_phrase_repetition_rate": 0.0
772
+ },
773
+ "piper-ryan-low::long_range": {
774
+ "utterances": 6,
775
+ "reference_words": 121,
776
+ "semantic_wer": 0.0,
777
+ "substitution_rate": 0.0,
778
+ "deletion_rate": 0.0,
779
+ "insertion_rate": 0.0,
780
+ "utterance_failure_rate": 0.0,
781
+ "severe_failure_rate": 0.0,
782
+ "empty_hypothesis_rate": 0.0,
783
+ "leading_omission_rate": 0.0,
784
+ "ending_omission_rate": 0.0,
785
+ "insertion_burst_rate": 0.0,
786
+ "adjacent_phrase_repetition_rate": 0.0
787
+ },
788
+ "piper-ryan-low::names_places": {
789
+ "utterances": 6,
790
+ "reference_words": 57,
791
+ "semantic_wer": 0.07017543859649122,
792
+ "substitution_rate": 0.07017543859649122,
793
+ "deletion_rate": 0.0,
794
+ "insertion_rate": 0.0,
795
+ "utterance_failure_rate": 0.3333333333333333,
796
+ "severe_failure_rate": 0.16666666666666666,
797
+ "empty_hypothesis_rate": 0.0,
798
+ "leading_omission_rate": 0.0,
799
+ "ending_omission_rate": 0.0,
800
+ "insertion_burst_rate": 0.0,
801
+ "adjacent_phrase_repetition_rate": 0.0
802
+ },
803
+ "piper-ryan-low::narrative": {
804
+ "utterances": 24,
805
+ "reference_words": 352,
806
+ "semantic_wer": 0.0,
807
+ "substitution_rate": 0.0,
808
+ "deletion_rate": 0.0,
809
+ "insertion_rate": 0.0,
810
+ "utterance_failure_rate": 0.0,
811
+ "severe_failure_rate": 0.0,
812
+ "empty_hypothesis_rate": 0.0,
813
+ "leading_omission_rate": 0.0,
814
+ "ending_omission_rate": 0.0,
815
+ "insertion_burst_rate": 0.0,
816
+ "adjacent_phrase_repetition_rate": 0.0
817
+ },
818
+ "piper-ryan-low::numbers": {
819
+ "utterances": 6,
820
+ "reference_words": 64,
821
+ "semantic_wer": 0.078125,
822
+ "substitution_rate": 0.046875,
823
+ "deletion_rate": 0.0,
824
+ "insertion_rate": 0.03125,
825
+ "utterance_failure_rate": 0.3333333333333333,
826
+ "severe_failure_rate": 0.16666666666666666,
827
+ "empty_hypothesis_rate": 0.0,
828
+ "leading_omission_rate": 0.0,
829
+ "ending_omission_rate": 0.0,
830
+ "insertion_burst_rate": 0.0,
831
+ "adjacent_phrase_repetition_rate": 0.0
832
+ },
833
+ "piper-ryan-low::punctuation": {
834
+ "utterances": 6,
835
+ "reference_words": 65,
836
+ "semantic_wer": 0.0,
837
+ "substitution_rate": 0.0,
838
+ "deletion_rate": 0.0,
839
+ "insertion_rate": 0.0,
840
+ "utterance_failure_rate": 0.0,
841
+ "severe_failure_rate": 0.0,
842
+ "empty_hypothesis_rate": 0.0,
843
+ "leading_omission_rate": 0.0,
844
+ "ending_omission_rate": 0.0,
845
+ "insertion_burst_rate": 0.0,
846
+ "adjacent_phrase_repetition_rate": 0.0
847
+ },
848
+ "piper-ryan-low::question": {
849
+ "utterances": 15,
850
+ "reference_words": 165,
851
+ "semantic_wer": 0.0,
852
+ "substitution_rate": 0.0,
853
+ "deletion_rate": 0.0,
854
+ "insertion_rate": 0.0,
855
+ "utterance_failure_rate": 0.0,
856
+ "severe_failure_rate": 0.0,
857
+ "empty_hypothesis_rate": 0.0,
858
+ "leading_omission_rate": 0.0,
859
+ "ending_omission_rate": 0.0,
860
+ "insertion_burst_rate": 0.0,
861
+ "adjacent_phrase_repetition_rate": 0.0
862
+ },
863
+ "piper-ryan-low::rare_words": {
864
+ "utterances": 6,
865
+ "reference_words": 57,
866
+ "semantic_wer": 0.08771929824561403,
867
+ "substitution_rate": 0.07017543859649122,
868
+ "deletion_rate": 0.0,
869
+ "insertion_rate": 0.017543859649122806,
870
+ "utterance_failure_rate": 0.5,
871
+ "severe_failure_rate": 0.0,
872
+ "empty_hypothesis_rate": 0.0,
873
+ "leading_omission_rate": 0.0,
874
+ "ending_omission_rate": 0.0,
875
+ "insertion_burst_rate": 0.0,
876
+ "adjacent_phrase_repetition_rate": 0.0
877
+ },
878
+ "piper-ryan-low::short": {
879
+ "utterances": 24,
880
+ "reference_words": 105,
881
+ "semantic_wer": 0.0380952380952381,
882
+ "substitution_rate": 0.0380952380952381,
883
+ "deletion_rate": 0.0,
884
+ "insertion_rate": 0.0,
885
+ "utterance_failure_rate": 0.08333333333333333,
886
+ "severe_failure_rate": 0.08333333333333333,
887
+ "empty_hypothesis_rate": 0.0,
888
+ "leading_omission_rate": 0.0,
889
+ "ending_omission_rate": 0.0,
890
+ "insertion_burst_rate": 0.0,
891
+ "adjacent_phrase_repetition_rate": 0.08333333333333333
892
+ },
893
+ "piper-ryan-low::technical": {
894
+ "utterances": 21,
895
+ "reference_words": 256,
896
+ "semantic_wer": 0.02734375,
897
+ "substitution_rate": 0.015625,
898
+ "deletion_rate": 0.0078125,
899
+ "insertion_rate": 0.00390625,
900
+ "utterance_failure_rate": 0.19047619047619047,
901
+ "severe_failure_rate": 0.0,
902
+ "empty_hypothesis_rate": 0.0,
903
+ "leading_omission_rate": 0.0,
904
+ "ending_omission_rate": 0.0,
905
+ "insertion_burst_rate": 0.0,
906
+ "adjacent_phrase_repetition_rate": 0.0
907
+ }
908
+ },
909
+ "worst_utterances": [
910
+ {
911
+ "model": "inflect-micro-v2-finalist",
912
+ "id": "utmos200_176",
913
+ "category": "short",
914
+ "reference": "Noted.",
915
+ "hypothesis": "Noid.",
916
+ "reference_words": 1,
917
+ "hypothesis_words": 1,
918
+ "substitutions": 1,
919
+ "deletions": 0,
920
+ "insertions": 0,
921
+ "semantic_wer": 1.0,
922
+ "utterance_failure": true,
923
+ "severe_failure": true,
924
+ "empty_hypothesis": false,
925
+ "leading_omission": false,
926
+ "ending_omission": false,
927
+ "insertion_burst": false,
928
+ "adjacent_phrase_repetition": false,
929
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_176.wav"
930
+ },
931
+ {
932
+ "model": "piper-ryan-low",
933
+ "id": "utmos200_041",
934
+ "category": "short",
935
+ "reference": "I mean. Yeah. Kind of.",
936
+ "hypothesis": "I mean, no, I know.",
937
+ "reference_words": 5,
938
+ "hypothesis_words": 5,
939
+ "substitutions": 3,
940
+ "deletions": 0,
941
+ "insertions": 0,
942
+ "semantic_wer": 0.6,
943
+ "utterance_failure": true,
944
+ "severe_failure": true,
945
+ "empty_hypothesis": false,
946
+ "leading_omission": false,
947
+ "ending_omission": false,
948
+ "insertion_burst": false,
949
+ "adjacent_phrase_repetition": false,
950
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_041.wav"
951
+ },
952
+ {
953
+ "model": "inflect-nano-v2-finalist",
954
+ "id": "utmos200_041",
955
+ "category": "short",
956
+ "reference": "I mean. Yeah. Kind of.",
957
+ "hypothesis": "I mean that, yeah, that kind of,",
958
+ "reference_words": 5,
959
+ "hypothesis_words": 7,
960
+ "substitutions": 0,
961
+ "deletions": 0,
962
+ "insertions": 2,
963
+ "semantic_wer": 0.4,
964
+ "utterance_failure": true,
965
+ "severe_failure": true,
966
+ "empty_hypothesis": false,
967
+ "leading_omission": false,
968
+ "ending_omission": false,
969
+ "insertion_burst": false,
970
+ "adjacent_phrase_repetition": false,
971
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_041.wav"
972
+ },
973
+ {
974
+ "model": "inflect-micro-v2-finalist",
975
+ "id": "utmos200_065",
976
+ "category": "numbers",
977
+ "reference": "Call extension zero four nine after eight thirty in the morning.",
978
+ "hypothesis": "Call extension 049 after 8.30 in the morning.",
979
+ "reference_words": 8,
980
+ "hypothesis_words": 9,
981
+ "substitutions": 2,
982
+ "deletions": 0,
983
+ "insertions": 1,
984
+ "semantic_wer": 0.375,
985
+ "utterance_failure": true,
986
+ "severe_failure": true,
987
+ "empty_hypothesis": false,
988
+ "leading_omission": false,
989
+ "ending_omission": false,
990
+ "insertion_burst": false,
991
+ "adjacent_phrase_repetition": false,
992
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_065.wav"
993
+ },
994
+ {
995
+ "model": "inflect-nano-v2-finalist",
996
+ "id": "utmos200_065",
997
+ "category": "numbers",
998
+ "reference": "Call extension zero four nine after eight thirty in the morning.",
999
+ "hypothesis": "Call extension 049 after 8.30 in the morning.",
1000
+ "reference_words": 8,
1001
+ "hypothesis_words": 9,
1002
+ "substitutions": 2,
1003
+ "deletions": 0,
1004
+ "insertions": 1,
1005
+ "semantic_wer": 0.375,
1006
+ "utterance_failure": true,
1007
+ "severe_failure": true,
1008
+ "empty_hypothesis": false,
1009
+ "leading_omission": false,
1010
+ "ending_omission": false,
1011
+ "insertion_burst": false,
1012
+ "adjacent_phrase_repetition": false,
1013
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_065.wav"
1014
+ },
1015
+ {
1016
+ "model": "piper-ryan-low",
1017
+ "id": "utmos200_065",
1018
+ "category": "numbers",
1019
+ "reference": "Call extension zero four nine after eight thirty in the morning.",
1020
+ "hypothesis": "Call extension 049 after 8.30 in the morning.",
1021
+ "reference_words": 8,
1022
+ "hypothesis_words": 9,
1023
+ "substitutions": 2,
1024
+ "deletions": 0,
1025
+ "insertions": 1,
1026
+ "semantic_wer": 0.375,
1027
+ "utterance_failure": true,
1028
+ "severe_failure": true,
1029
+ "empty_hypothesis": false,
1030
+ "leading_omission": false,
1031
+ "ending_omission": false,
1032
+ "insertion_burst": false,
1033
+ "adjacent_phrase_repetition": false,
1034
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_065.wav"
1035
+ },
1036
+ {
1037
+ "model": "kitten-nano-bruno",
1038
+ "id": "utmos200_065",
1039
+ "category": "numbers",
1040
+ "reference": "Call extension zero four nine after eight thirty in the morning.",
1041
+ "hypothesis": "Call extension 049 after 8.30 in the morning.",
1042
+ "reference_words": 8,
1043
+ "hypothesis_words": 9,
1044
+ "substitutions": 2,
1045
+ "deletions": 0,
1046
+ "insertions": 1,
1047
+ "semantic_wer": 0.375,
1048
+ "utterance_failure": true,
1049
+ "severe_failure": true,
1050
+ "empty_hypothesis": false,
1051
+ "leading_omission": false,
1052
+ "ending_omission": false,
1053
+ "insertion_burst": false,
1054
+ "adjacent_phrase_repetition": false,
1055
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_065.wav"
1056
+ },
1057
+ {
1058
+ "model": "inflect-nano-v2-finalist",
1059
+ "id": "utmos200_035",
1060
+ "category": "names_places",
1061
+ "reference": "Aurelia and Joaquin crossed the Schuylkill River before noon.",
1062
+ "hypothesis": "Uralaya and Jokwing crossed the Sialkal River before noon.",
1063
+ "reference_words": 9,
1064
+ "hypothesis_words": 9,
1065
+ "substitutions": 3,
1066
+ "deletions": 0,
1067
+ "insertions": 0,
1068
+ "semantic_wer": 0.3333333333333333,
1069
+ "utterance_failure": true,
1070
+ "severe_failure": true,
1071
+ "empty_hypothesis": false,
1072
+ "leading_omission": false,
1073
+ "ending_omission": false,
1074
+ "insertion_burst": false,
1075
+ "adjacent_phrase_repetition": false,
1076
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_035.wav"
1077
+ },
1078
+ {
1079
+ "model": "inflect-nano-v2-finalist",
1080
+ "id": "utmos200_191",
1081
+ "category": "short",
1082
+ "reference": "Right. Moving on.",
1083
+ "hypothesis": "Right at moving on.",
1084
+ "reference_words": 3,
1085
+ "hypothesis_words": 4,
1086
+ "substitutions": 0,
1087
+ "deletions": 0,
1088
+ "insertions": 1,
1089
+ "semantic_wer": 0.3333333333333333,
1090
+ "utterance_failure": true,
1091
+ "severe_failure": true,
1092
+ "empty_hypothesis": false,
1093
+ "leading_omission": false,
1094
+ "ending_omission": false,
1095
+ "insertion_burst": false,
1096
+ "adjacent_phrase_repetition": false,
1097
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_191.wav"
1098
+ },
1099
+ {
1100
+ "model": "piper-ryan-low",
1101
+ "id": "utmos200_049",
1102
+ "category": "names_places",
1103
+ "reference": "Xiomara met Siobhan near the old library in Worcestershire.",
1104
+ "hypothesis": "See Amaru Mechivan near the Old Library in Worcestershire.",
1105
+ "reference_words": 9,
1106
+ "hypothesis_words": 9,
1107
+ "substitutions": 3,
1108
+ "deletions": 0,
1109
+ "insertions": 0,
1110
+ "semantic_wer": 0.3333333333333333,
1111
+ "utterance_failure": true,
1112
+ "severe_failure": true,
1113
+ "empty_hypothesis": false,
1114
+ "leading_omission": false,
1115
+ "ending_omission": false,
1116
+ "insertion_burst": false,
1117
+ "adjacent_phrase_repetition": false,
1118
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_049.wav"
1119
+ },
1120
+ {
1121
+ "model": "piper-ryan-low",
1122
+ "id": "utmos200_091",
1123
+ "category": "short",
1124
+ "reference": "That's fair.",
1125
+ "hypothesis": "That was fair.",
1126
+ "reference_words": 3,
1127
+ "hypothesis_words": 3,
1128
+ "substitutions": 1,
1129
+ "deletions": 0,
1130
+ "insertions": 0,
1131
+ "semantic_wer": 0.3333333333333333,
1132
+ "utterance_failure": true,
1133
+ "severe_failure": true,
1134
+ "empty_hypothesis": false,
1135
+ "leading_omission": false,
1136
+ "ending_omission": false,
1137
+ "insertion_burst": false,
1138
+ "adjacent_phrase_repetition": false,
1139
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_091.wav"
1140
+ },
1141
+ {
1142
+ "model": "kitten-nano-bruno",
1143
+ "id": "utmos200_035",
1144
+ "category": "names_places",
1145
+ "reference": "Aurelia and Joaquin crossed the Schuylkill River before noon.",
1146
+ "hypothesis": "Auralaya and Jokwan crossed the Shilkal river before noon.",
1147
+ "reference_words": 9,
1148
+ "hypothesis_words": 9,
1149
+ "substitutions": 3,
1150
+ "deletions": 0,
1151
+ "insertions": 0,
1152
+ "semantic_wer": 0.3333333333333333,
1153
+ "utterance_failure": true,
1154
+ "severe_failure": true,
1155
+ "empty_hypothesis": false,
1156
+ "leading_omission": false,
1157
+ "ending_omission": false,
1158
+ "insertion_burst": false,
1159
+ "adjacent_phrase_repetition": false,
1160
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_035.wav"
1161
+ },
1162
+ {
1163
+ "model": "inflect-micro-v2-finalist",
1164
+ "id": "utmos200_051",
1165
+ "category": "numbers",
1166
+ "reference": "At exactly seven forty-five, Morgan placed eighteen dollars and fifty cents beside the notebook.",
1167
+ "hypothesis": "At exactly $7.45, Morton placed $18.50 beside the notebook.",
1168
+ "reference_words": 10,
1169
+ "hypothesis_words": 11,
1170
+ "substitutions": 2,
1171
+ "deletions": 0,
1172
+ "insertions": 1,
1173
+ "semantic_wer": 0.3,
1174
+ "utterance_failure": true,
1175
+ "severe_failure": true,
1176
+ "empty_hypothesis": false,
1177
+ "leading_omission": false,
1178
+ "ending_omission": false,
1179
+ "insertion_burst": false,
1180
+ "adjacent_phrase_repetition": false,
1181
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_051.wav"
1182
+ },
1183
+ {
1184
+ "model": "inflect-nano-v2-finalist",
1185
+ "id": "utmos200_051",
1186
+ "category": "numbers",
1187
+ "reference": "At exactly seven forty-five, Morgan placed eighteen dollars and fifty cents beside the notebook.",
1188
+ "hypothesis": "Exactly $7.45, Morgan placed $18.50 beside the notebook.",
1189
+ "reference_words": 10,
1190
+ "hypothesis_words": 10,
1191
+ "substitutions": 1,
1192
+ "deletions": 1,
1193
+ "insertions": 1,
1194
+ "semantic_wer": 0.3,
1195
+ "utterance_failure": true,
1196
+ "severe_failure": true,
1197
+ "empty_hypothesis": false,
1198
+ "leading_omission": true,
1199
+ "ending_omission": false,
1200
+ "insertion_burst": false,
1201
+ "adjacent_phrase_repetition": false,
1202
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_051.wav"
1203
+ },
1204
+ {
1205
+ "model": "inflect-micro-v2-finalist",
1206
+ "id": "utmos200_028",
1207
+ "category": "technical",
1208
+ "reference": "Hash the UTF eight payload with S H A two fifty-six before opening the checkpoint.",
1209
+ "hypothesis": "Cache the UTF-8 payload with SH-256 before opening the checkpoint.",
1210
+ "reference_words": 14,
1211
+ "hypothesis_words": 12,
1212
+ "substitutions": 2,
1213
+ "deletions": 2,
1214
+ "insertions": 0,
1215
+ "semantic_wer": 0.2857142857142857,
1216
+ "utterance_failure": true,
1217
+ "severe_failure": true,
1218
+ "empty_hypothesis": false,
1219
+ "leading_omission": false,
1220
+ "ending_omission": false,
1221
+ "insertion_burst": false,
1222
+ "adjacent_phrase_repetition": false,
1223
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_028.wav"
1224
+ },
1225
+ {
1226
+ "model": "inflect-nano-v2-finalist",
1227
+ "id": "utmos200_028",
1228
+ "category": "technical",
1229
+ "reference": "Hash the UTF eight payload with S H A two fifty-six before opening the checkpoint.",
1230
+ "hypothesis": "Ash the UTF-8 payload with SHA-256 before opening the checkpoint.",
1231
+ "reference_words": 14,
1232
+ "hypothesis_words": 12,
1233
+ "substitutions": 2,
1234
+ "deletions": 2,
1235
+ "insertions": 0,
1236
+ "semantic_wer": 0.2857142857142857,
1237
+ "utterance_failure": true,
1238
+ "severe_failure": true,
1239
+ "empty_hypothesis": false,
1240
+ "leading_omission": false,
1241
+ "ending_omission": false,
1242
+ "insertion_burst": false,
1243
+ "adjacent_phrase_repetition": false,
1244
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_028.wav"
1245
+ },
1246
+ {
1247
+ "model": "inflect-micro-v2-finalist",
1248
+ "id": "utmos200_139",
1249
+ "category": "short",
1250
+ "reference": "No way. Absolutely not.",
1251
+ "hypothesis": "No wait, absolutely not.",
1252
+ "reference_words": 4,
1253
+ "hypothesis_words": 4,
1254
+ "substitutions": 1,
1255
+ "deletions": 0,
1256
+ "insertions": 0,
1257
+ "semantic_wer": 0.25,
1258
+ "utterance_failure": true,
1259
+ "severe_failure": false,
1260
+ "empty_hypothesis": false,
1261
+ "leading_omission": false,
1262
+ "ending_omission": false,
1263
+ "insertion_burst": false,
1264
+ "adjacent_phrase_repetition": false,
1265
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_139.wav"
1266
+ },
1267
+ {
1268
+ "model": "inflect-micro-v2-finalist",
1269
+ "id": "utmos200_181",
1270
+ "category": "short",
1271
+ "reference": "Yeah, no. Hard pass.",
1272
+ "hypothesis": "Yeah, no but hard pass.",
1273
+ "reference_words": 4,
1274
+ "hypothesis_words": 5,
1275
+ "substitutions": 0,
1276
+ "deletions": 0,
1277
+ "insertions": 1,
1278
+ "semantic_wer": 0.25,
1279
+ "utterance_failure": true,
1280
+ "severe_failure": false,
1281
+ "empty_hypothesis": false,
1282
+ "leading_omission": false,
1283
+ "ending_omission": false,
1284
+ "insertion_burst": false,
1285
+ "adjacent_phrase_repetition": false,
1286
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_181.wav"
1287
+ },
1288
+ {
1289
+ "model": "inflect-nano-v2-finalist",
1290
+ "id": "utmos200_139",
1291
+ "category": "short",
1292
+ "reference": "No way. Absolutely not.",
1293
+ "hypothesis": "No way to absolutely not.",
1294
+ "reference_words": 4,
1295
+ "hypothesis_words": 5,
1296
+ "substitutions": 0,
1297
+ "deletions": 0,
1298
+ "insertions": 1,
1299
+ "semantic_wer": 0.25,
1300
+ "utterance_failure": true,
1301
+ "severe_failure": false,
1302
+ "empty_hypothesis": false,
1303
+ "leading_omission": false,
1304
+ "ending_omission": false,
1305
+ "insertion_burst": false,
1306
+ "adjacent_phrase_repetition": false,
1307
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_139.wav"
1308
+ },
1309
+ {
1310
+ "model": "inflect-nano-v2-finalist",
1311
+ "id": "utmos200_181",
1312
+ "category": "short",
1313
+ "reference": "Yeah, no. Hard pass.",
1314
+ "hypothesis": "Yeah, no.Card pass.",
1315
+ "reference_words": 4,
1316
+ "hypothesis_words": 4,
1317
+ "substitutions": 1,
1318
+ "deletions": 0,
1319
+ "insertions": 0,
1320
+ "semantic_wer": 0.25,
1321
+ "utterance_failure": true,
1322
+ "severe_failure": false,
1323
+ "empty_hypothesis": false,
1324
+ "leading_omission": false,
1325
+ "ending_omission": false,
1326
+ "insertion_burst": false,
1327
+ "adjacent_phrase_repetition": false,
1328
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_181.wav"
1329
+ },
1330
+ {
1331
+ "model": "kitten-nano-bruno",
1332
+ "id": "utmos200_181",
1333
+ "category": "short",
1334
+ "reference": "Yeah, no. Hard pass.",
1335
+ "hypothesis": "Yeth no. Hard pass.",
1336
+ "reference_words": 4,
1337
+ "hypothesis_words": 4,
1338
+ "substitutions": 1,
1339
+ "deletions": 0,
1340
+ "insertions": 0,
1341
+ "semantic_wer": 0.25,
1342
+ "utterance_failure": true,
1343
+ "severe_failure": false,
1344
+ "empty_hypothesis": false,
1345
+ "leading_omission": false,
1346
+ "ending_omission": false,
1347
+ "insertion_burst": false,
1348
+ "adjacent_phrase_repetition": false,
1349
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_181.wav"
1350
+ },
1351
+ {
1352
+ "model": "inflect-micro-v2-finalist",
1353
+ "id": "utmos200_035",
1354
+ "category": "names_places",
1355
+ "reference": "Aurelia and Joaquin crossed the Schuylkill River before noon.",
1356
+ "hypothesis": "Aurelia and Joachim crossed the Schalke river before noon.",
1357
+ "reference_words": 9,
1358
+ "hypothesis_words": 9,
1359
+ "substitutions": 2,
1360
+ "deletions": 0,
1361
+ "insertions": 0,
1362
+ "semantic_wer": 0.2222222222222222,
1363
+ "utterance_failure": true,
1364
+ "severe_failure": false,
1365
+ "empty_hypothesis": false,
1366
+ "leading_omission": false,
1367
+ "ending_omission": false,
1368
+ "insertion_burst": false,
1369
+ "adjacent_phrase_repetition": false,
1370
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_035.wav"
1371
+ },
1372
+ {
1373
+ "model": "piper-ryan-low",
1374
+ "id": "utmos200_028",
1375
+ "category": "technical",
1376
+ "reference": "Hash the UTF eight payload with S H A two fifty-six before opening the checkpoint.",
1377
+ "hypothesis": "Hash the UTF-8 payload with SHA-256 before opening the checkpoint.",
1378
+ "reference_words": 14,
1379
+ "hypothesis_words": 12,
1380
+ "substitutions": 1,
1381
+ "deletions": 2,
1382
+ "insertions": 0,
1383
+ "semantic_wer": 0.21428571428571427,
1384
+ "utterance_failure": true,
1385
+ "severe_failure": false,
1386
+ "empty_hypothesis": false,
1387
+ "leading_omission": false,
1388
+ "ending_omission": false,
1389
+ "insertion_burst": false,
1390
+ "adjacent_phrase_repetition": false,
1391
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_028.wav"
1392
+ },
1393
+ {
1394
+ "model": "kitten-nano-bruno",
1395
+ "id": "utmos200_028",
1396
+ "category": "technical",
1397
+ "reference": "Hash the UTF eight payload with S H A two fifty-six before opening the checkpoint.",
1398
+ "hypothesis": "Hash the UTF-8 payload with SHA-256 before opening the checkpoint.",
1399
+ "reference_words": 14,
1400
+ "hypothesis_words": 12,
1401
+ "substitutions": 1,
1402
+ "deletions": 2,
1403
+ "insertions": 0,
1404
+ "semantic_wer": 0.21428571428571427,
1405
+ "utterance_failure": true,
1406
+ "severe_failure": false,
1407
+ "empty_hypothesis": false,
1408
+ "leading_omission": false,
1409
+ "ending_omission": false,
1410
+ "insertion_burst": false,
1411
+ "adjacent_phrase_repetition": false,
1412
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_028.wav"
1413
+ },
1414
+ {
1415
+ "model": "inflect-micro-v2-finalist",
1416
+ "id": "utmos200_041",
1417
+ "category": "short",
1418
+ "reference": "I mean. Yeah. Kind of.",
1419
+ "hypothesis": "I mean, yeah, I kind of.",
1420
+ "reference_words": 5,
1421
+ "hypothesis_words": 6,
1422
+ "substitutions": 0,
1423
+ "deletions": 0,
1424
+ "insertions": 1,
1425
+ "semantic_wer": 0.2,
1426
+ "utterance_failure": true,
1427
+ "severe_failure": false,
1428
+ "empty_hypothesis": false,
1429
+ "leading_omission": false,
1430
+ "ending_omission": false,
1431
+ "insertion_burst": false,
1432
+ "adjacent_phrase_repetition": false,
1433
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_041.wav"
1434
+ },
1435
+ {
1436
+ "model": "inflect-micro-v2-finalist",
1437
+ "id": "utmos200_084",
1438
+ "category": "technical",
1439
+ "reference": "The performance improvement is real, but it comes with tradeoffs.",
1440
+ "hypothesis": "The performance improvement is real, but it comes with trade-offs.",
1441
+ "reference_words": 10,
1442
+ "hypothesis_words": 11,
1443
+ "substitutions": 1,
1444
+ "deletions": 0,
1445
+ "insertions": 1,
1446
+ "semantic_wer": 0.2,
1447
+ "utterance_failure": true,
1448
+ "severe_failure": false,
1449
+ "empty_hypothesis": false,
1450
+ "leading_omission": false,
1451
+ "ending_omission": false,
1452
+ "insertion_burst": false,
1453
+ "adjacent_phrase_repetition": false,
1454
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_084.wav"
1455
+ },
1456
+ {
1457
+ "model": "inflect-nano-v2-finalist",
1458
+ "id": "utmos200_074",
1459
+ "category": "homographs",
1460
+ "reference": "The dove dove beneath the branch while the wind began to wind the loose cable.",
1461
+ "hypothesis": "The dub-dub beneath the branch wall the wind began to wind the loose cable.",
1462
+ "reference_words": 15,
1463
+ "hypothesis_words": 15,
1464
+ "substitutions": 3,
1465
+ "deletions": 0,
1466
+ "insertions": 0,
1467
+ "semantic_wer": 0.2,
1468
+ "utterance_failure": true,
1469
+ "severe_failure": false,
1470
+ "empty_hypothesis": false,
1471
+ "leading_omission": false,
1472
+ "ending_omission": false,
1473
+ "insertion_burst": false,
1474
+ "adjacent_phrase_repetition": false,
1475
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_074.wav"
1476
+ },
1477
+ {
1478
+ "model": "inflect-nano-v2-finalist",
1479
+ "id": "utmos200_084",
1480
+ "category": "technical",
1481
+ "reference": "The performance improvement is real, but it comes with tradeoffs.",
1482
+ "hypothesis": "The performance improvement is real, but it comes with trade-offs.",
1483
+ "reference_words": 10,
1484
+ "hypothesis_words": 11,
1485
+ "substitutions": 1,
1486
+ "deletions": 0,
1487
+ "insertions": 1,
1488
+ "semantic_wer": 0.2,
1489
+ "utterance_failure": true,
1490
+ "severe_failure": false,
1491
+ "empty_hypothesis": false,
1492
+ "leading_omission": false,
1493
+ "ending_omission": false,
1494
+ "insertion_burst": false,
1495
+ "adjacent_phrase_repetition": false,
1496
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_084.wav"
1497
+ },
1498
+ {
1499
+ "model": "piper-ryan-low",
1500
+ "id": "utmos200_012",
1501
+ "category": "rare_words",
1502
+ "reference": "The archaeologist catalogued a Byzantine reliquary and several anachronistic fragments.",
1503
+ "hypothesis": "the archaeologists cataloged a Byzantine reliquary and several anachronistic fragments.",
1504
+ "reference_words": 10,
1505
+ "hypothesis_words": 10,
1506
+ "substitutions": 2,
1507
+ "deletions": 0,
1508
+ "insertions": 0,
1509
+ "semantic_wer": 0.2,
1510
+ "utterance_failure": true,
1511
+ "severe_failure": false,
1512
+ "empty_hypothesis": false,
1513
+ "leading_omission": false,
1514
+ "ending_omission": false,
1515
+ "insertion_burst": false,
1516
+ "adjacent_phrase_repetition": false,
1517
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_012.wav"
1518
+ },
1519
+ {
1520
+ "model": "piper-ryan-low",
1521
+ "id": "utmos200_051",
1522
+ "category": "numbers",
1523
+ "reference": "At exactly seven forty-five, Morgan placed eighteen dollars and fifty cents beside the notebook.",
1524
+ "hypothesis": "At exactly 7.45, Morgan placed $18.50 beside the notebook.",
1525
+ "reference_words": 10,
1526
+ "hypothesis_words": 11,
1527
+ "substitutions": 1,
1528
+ "deletions": 0,
1529
+ "insertions": 1,
1530
+ "semantic_wer": 0.2,
1531
+ "utterance_failure": true,
1532
+ "severe_failure": false,
1533
+ "empty_hypothesis": false,
1534
+ "leading_omission": false,
1535
+ "ending_omission": false,
1536
+ "insertion_burst": false,
1537
+ "adjacent_phrase_repetition": false,
1538
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_051.wav"
1539
+ },
1540
+ {
1541
+ "model": "piper-ryan-low",
1542
+ "id": "utmos200_084",
1543
+ "category": "technical",
1544
+ "reference": "The performance improvement is real, but it comes with tradeoffs.",
1545
+ "hypothesis": "The performance improvement is real, but it comes with trade-offs.",
1546
+ "reference_words": 10,
1547
+ "hypothesis_words": 11,
1548
+ "substitutions": 1,
1549
+ "deletions": 0,
1550
+ "insertions": 1,
1551
+ "semantic_wer": 0.2,
1552
+ "utterance_failure": true,
1553
+ "severe_failure": false,
1554
+ "empty_hypothesis": false,
1555
+ "leading_omission": false,
1556
+ "ending_omission": false,
1557
+ "insertion_burst": false,
1558
+ "adjacent_phrase_repetition": false,
1559
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_084.wav"
1560
+ },
1561
+ {
1562
+ "model": "piper-ryan-low",
1563
+ "id": "utmos200_188",
1564
+ "category": "conversational",
1565
+ "reference": "You got engaged? When? How? Tell me everything right now.",
1566
+ "hypothesis": "You got engaged. What? Oh. Tell me everything right now.",
1567
+ "reference_words": 10,
1568
+ "hypothesis_words": 10,
1569
+ "substitutions": 2,
1570
+ "deletions": 0,
1571
+ "insertions": 0,
1572
+ "semantic_wer": 0.2,
1573
+ "utterance_failure": true,
1574
+ "severe_failure": false,
1575
+ "empty_hypothesis": false,
1576
+ "leading_omission": false,
1577
+ "ending_omission": false,
1578
+ "insertion_burst": false,
1579
+ "adjacent_phrase_repetition": false,
1580
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_188.wav"
1581
+ },
1582
+ {
1583
+ "model": "kitten-nano-bruno",
1584
+ "id": "utmos200_041",
1585
+ "category": "short",
1586
+ "reference": "I mean. Yeah. Kind of.",
1587
+ "hypothesis": "I mean. Yes. Kind of.",
1588
+ "reference_words": 5,
1589
+ "hypothesis_words": 5,
1590
+ "substitutions": 1,
1591
+ "deletions": 0,
1592
+ "insertions": 0,
1593
+ "semantic_wer": 0.2,
1594
+ "utterance_failure": true,
1595
+ "severe_failure": false,
1596
+ "empty_hypothesis": false,
1597
+ "leading_omission": false,
1598
+ "ending_omission": false,
1599
+ "insertion_burst": false,
1600
+ "adjacent_phrase_repetition": false,
1601
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_041.wav"
1602
+ },
1603
+ {
1604
+ "model": "kitten-nano-bruno",
1605
+ "id": "utmos200_051",
1606
+ "category": "numbers",
1607
+ "reference": "At exactly seven forty-five, Morgan placed eighteen dollars and fifty cents beside the notebook.",
1608
+ "hypothesis": "At exactly 7.45, Morgan placed $18.50 beside the notebook.",
1609
+ "reference_words": 10,
1610
+ "hypothesis_words": 11,
1611
+ "substitutions": 1,
1612
+ "deletions": 0,
1613
+ "insertions": 1,
1614
+ "semantic_wer": 0.2,
1615
+ "utterance_failure": true,
1616
+ "severe_failure": false,
1617
+ "empty_hypothesis": false,
1618
+ "leading_omission": false,
1619
+ "ending_omission": false,
1620
+ "insertion_burst": false,
1621
+ "adjacent_phrase_repetition": false,
1622
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_051.wav"
1623
+ },
1624
+ {
1625
+ "model": "kitten-nano-bruno",
1626
+ "id": "utmos200_084",
1627
+ "category": "technical",
1628
+ "reference": "The performance improvement is real, but it comes with tradeoffs.",
1629
+ "hypothesis": "The performance improvement is real, but it comes with trade-offs.",
1630
+ "reference_words": 10,
1631
+ "hypothesis_words": 11,
1632
+ "substitutions": 1,
1633
+ "deletions": 0,
1634
+ "insertions": 1,
1635
+ "semantic_wer": 0.2,
1636
+ "utterance_failure": true,
1637
+ "severe_failure": false,
1638
+ "empty_hypothesis": false,
1639
+ "leading_omission": false,
1640
+ "ending_omission": false,
1641
+ "insertion_burst": false,
1642
+ "adjacent_phrase_repetition": false,
1643
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_084.wav"
1644
+ },
1645
+ {
1646
+ "model": "inflect-micro-v2-finalist",
1647
+ "id": "utmos200_009",
1648
+ "category": "numbers",
1649
+ "reference": "The package weighs twelve point six kilograms and arrived on July twenty-first.",
1650
+ "hypothesis": "The package weighs 12.6kg and arrived on July 21.",
1651
+ "reference_words": 11,
1652
+ "hypothesis_words": 11,
1653
+ "substitutions": 2,
1654
+ "deletions": 0,
1655
+ "insertions": 0,
1656
+ "semantic_wer": 0.18181818181818182,
1657
+ "utterance_failure": true,
1658
+ "severe_failure": false,
1659
+ "empty_hypothesis": false,
1660
+ "leading_omission": false,
1661
+ "ending_omission": false,
1662
+ "insertion_burst": false,
1663
+ "adjacent_phrase_repetition": false,
1664
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_009.wav"
1665
+ },
1666
+ {
1667
+ "model": "inflect-micro-v2-finalist",
1668
+ "id": "utmos200_082",
1669
+ "category": "rare_words",
1670
+ "reference": "The physician recommended a noninvasive procedure for the recurring neurological symptoms.",
1671
+ "hypothesis": "The physician recommended a non-invasive procedure for the recurring neurological symptoms.",
1672
+ "reference_words": 11,
1673
+ "hypothesis_words": 12,
1674
+ "substitutions": 1,
1675
+ "deletions": 0,
1676
+ "insertions": 1,
1677
+ "semantic_wer": 0.18181818181818182,
1678
+ "utterance_failure": true,
1679
+ "severe_failure": false,
1680
+ "empty_hypothesis": false,
1681
+ "leading_omission": false,
1682
+ "ending_omission": false,
1683
+ "insertion_burst": false,
1684
+ "adjacent_phrase_repetition": false,
1685
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_082.wav"
1686
+ },
1687
+ {
1688
+ "model": "inflect-nano-v2-finalist",
1689
+ "id": "utmos200_009",
1690
+ "category": "numbers",
1691
+ "reference": "The package weighs twelve point six kilograms and arrived on July twenty-first.",
1692
+ "hypothesis": "The package weighs 12.6kg and arrived on July 21.",
1693
+ "reference_words": 11,
1694
+ "hypothesis_words": 11,
1695
+ "substitutions": 2,
1696
+ "deletions": 0,
1697
+ "insertions": 0,
1698
+ "semantic_wer": 0.18181818181818182,
1699
+ "utterance_failure": true,
1700
+ "severe_failure": false,
1701
+ "empty_hypothesis": false,
1702
+ "leading_omission": false,
1703
+ "ending_omission": false,
1704
+ "insertion_burst": false,
1705
+ "adjacent_phrase_repetition": false,
1706
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_009.wav"
1707
+ },
1708
+ {
1709
+ "model": "inflect-nano-v2-finalist",
1710
+ "id": "utmos200_082",
1711
+ "category": "rare_words",
1712
+ "reference": "The physician recommended a noninvasive procedure for the recurring neurological symptoms.",
1713
+ "hypothesis": "The physician recommended a non-invasive procedure for the recurring neurological symptoms.",
1714
+ "reference_words": 11,
1715
+ "hypothesis_words": 12,
1716
+ "substitutions": 1,
1717
+ "deletions": 0,
1718
+ "insertions": 1,
1719
+ "semantic_wer": 0.18181818181818182,
1720
+ "utterance_failure": true,
1721
+ "severe_failure": false,
1722
+ "empty_hypothesis": false,
1723
+ "leading_omission": false,
1724
+ "ending_omission": false,
1725
+ "insertion_burst": false,
1726
+ "adjacent_phrase_repetition": false,
1727
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_082.wav"
1728
+ },
1729
+ {
1730
+ "model": "piper-ryan-low",
1731
+ "id": "utmos200_082",
1732
+ "category": "rare_words",
1733
+ "reference": "The physician recommended a noninvasive procedure for the recurring neurological symptoms.",
1734
+ "hypothesis": "the physician recommended a non-invasive procedure for the recurring neurological symptoms.",
1735
+ "reference_words": 11,
1736
+ "hypothesis_words": 12,
1737
+ "substitutions": 1,
1738
+ "deletions": 0,
1739
+ "insertions": 1,
1740
+ "semantic_wer": 0.18181818181818182,
1741
+ "utterance_failure": true,
1742
+ "severe_failure": false,
1743
+ "empty_hypothesis": false,
1744
+ "leading_omission": false,
1745
+ "ending_omission": false,
1746
+ "insertion_burst": false,
1747
+ "adjacent_phrase_repetition": false,
1748
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_082.wav"
1749
+ },
1750
+ {
1751
+ "model": "kitten-nano-bruno",
1752
+ "id": "utmos200_082",
1753
+ "category": "rare_words",
1754
+ "reference": "The physician recommended a noninvasive procedure for the recurring neurological symptoms.",
1755
+ "hypothesis": "The physician recommended a non-invasive procedure for the recurring neurological symptoms.",
1756
+ "reference_words": 11,
1757
+ "hypothesis_words": 12,
1758
+ "substitutions": 1,
1759
+ "deletions": 0,
1760
+ "insertions": 1,
1761
+ "semantic_wer": 0.18181818181818182,
1762
+ "utterance_failure": true,
1763
+ "severe_failure": false,
1764
+ "empty_hypothesis": false,
1765
+ "leading_omission": false,
1766
+ "ending_omission": false,
1767
+ "insertion_burst": false,
1768
+ "adjacent_phrase_repetition": false,
1769
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_082.wav"
1770
+ },
1771
+ {
1772
+ "model": "inflect-nano-v2-finalist",
1773
+ "id": "utmos200_180",
1774
+ "category": "narrative",
1775
+ "reference": "She knew. She had always known. She just waited for the right moment.",
1776
+ "hypothesis": "Ji knew but she had always known, she just waited for the right moment.",
1777
+ "reference_words": 13,
1778
+ "hypothesis_words": 14,
1779
+ "substitutions": 1,
1780
+ "deletions": 0,
1781
+ "insertions": 1,
1782
+ "semantic_wer": 0.15384615384615385,
1783
+ "utterance_failure": true,
1784
+ "severe_failure": false,
1785
+ "empty_hypothesis": false,
1786
+ "leading_omission": false,
1787
+ "ending_omission": false,
1788
+ "insertion_burst": false,
1789
+ "adjacent_phrase_repetition": false,
1790
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_180.wav"
1791
+ },
1792
+ {
1793
+ "model": "kitten-nano-bruno",
1794
+ "id": "utmos200_175",
1795
+ "category": "narrative",
1796
+ "reference": "The note was short, which was somehow more frightening than a long one would have been.",
1797
+ "hypothesis": "The note was short, which was somehow more fright, ing than a long one would have been.",
1798
+ "reference_words": 16,
1799
+ "hypothesis_words": 17,
1800
+ "substitutions": 1,
1801
+ "deletions": 0,
1802
+ "insertions": 1,
1803
+ "semantic_wer": 0.125,
1804
+ "utterance_failure": true,
1805
+ "severe_failure": false,
1806
+ "empty_hypothesis": false,
1807
+ "leading_omission": false,
1808
+ "ending_omission": false,
1809
+ "insertion_burst": false,
1810
+ "adjacent_phrase_repetition": false,
1811
+ "audio": "utmos22_large200_v1/audio/kitten-nano-bruno/utmos200_175.wav"
1812
+ },
1813
+ {
1814
+ "model": "inflect-micro-v2-finalist",
1815
+ "id": "utmos200_049",
1816
+ "category": "names_places",
1817
+ "reference": "Xiomara met Siobhan near the old library in Worcestershire.",
1818
+ "hypothesis": "Zamara met Siobhan near the old library in Worcestershire.",
1819
+ "reference_words": 9,
1820
+ "hypothesis_words": 9,
1821
+ "substitutions": 1,
1822
+ "deletions": 0,
1823
+ "insertions": 0,
1824
+ "semantic_wer": 0.1111111111111111,
1825
+ "utterance_failure": true,
1826
+ "severe_failure": false,
1827
+ "empty_hypothesis": false,
1828
+ "leading_omission": false,
1829
+ "ending_omission": false,
1830
+ "insertion_burst": false,
1831
+ "adjacent_phrase_repetition": false,
1832
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_049.wav"
1833
+ },
1834
+ {
1835
+ "model": "inflect-micro-v2-finalist",
1836
+ "id": "utmos200_077",
1837
+ "category": "names_places",
1838
+ "reference": "Saskatchewan looked unusually bright beneath the pale February sunrise.",
1839
+ "hypothesis": "Saskatchewan looked unusually bright beneath that pale February sunrise.",
1840
+ "reference_words": 9,
1841
+ "hypothesis_words": 9,
1842
+ "substitutions": 1,
1843
+ "deletions": 0,
1844
+ "insertions": 0,
1845
+ "semantic_wer": 0.1111111111111111,
1846
+ "utterance_failure": true,
1847
+ "severe_failure": false,
1848
+ "empty_hypothesis": false,
1849
+ "leading_omission": false,
1850
+ "ending_omission": false,
1851
+ "insertion_burst": false,
1852
+ "adjacent_phrase_repetition": false,
1853
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_077.wav"
1854
+ },
1855
+ {
1856
+ "model": "inflect-nano-v2-finalist",
1857
+ "id": "utmos200_022",
1858
+ "category": "narrative",
1859
+ "reference": "The plan was simple. The execution was anything but.",
1860
+ "hypothesis": "The plan was simple. The execution was anything but perfect.",
1861
+ "reference_words": 9,
1862
+ "hypothesis_words": 10,
1863
+ "substitutions": 0,
1864
+ "deletions": 0,
1865
+ "insertions": 1,
1866
+ "semantic_wer": 0.1111111111111111,
1867
+ "utterance_failure": true,
1868
+ "severe_failure": false,
1869
+ "empty_hypothesis": false,
1870
+ "leading_omission": false,
1871
+ "ending_omission": false,
1872
+ "insertion_burst": false,
1873
+ "adjacent_phrase_repetition": false,
1874
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_022.wav"
1875
+ },
1876
+ {
1877
+ "model": "inflect-nano-v2-finalist",
1878
+ "id": "utmos200_049",
1879
+ "category": "names_places",
1880
+ "reference": "Xiomara met Siobhan near the old library in Worcestershire.",
1881
+ "hypothesis": "Damara met Siobhan near the old library in Worcestershire.",
1882
+ "reference_words": 9,
1883
+ "hypothesis_words": 9,
1884
+ "substitutions": 1,
1885
+ "deletions": 0,
1886
+ "insertions": 0,
1887
+ "semantic_wer": 0.1111111111111111,
1888
+ "utterance_failure": true,
1889
+ "severe_failure": false,
1890
+ "empty_hypothesis": false,
1891
+ "leading_omission": false,
1892
+ "ending_omission": false,
1893
+ "insertion_burst": false,
1894
+ "adjacent_phrase_repetition": false,
1895
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-nano-v2-finalist/utmos200_049.wav"
1896
+ },
1897
+ {
1898
+ "model": "piper-ryan-low",
1899
+ "id": "utmos200_035",
1900
+ "category": "names_places",
1901
+ "reference": "Aurelia and Joaquin crossed the Schuylkill River before noon.",
1902
+ "hypothesis": "Aurelia and Joaquin crossed the Chiocul River before noon.",
1903
+ "reference_words": 9,
1904
+ "hypothesis_words": 9,
1905
+ "substitutions": 1,
1906
+ "deletions": 0,
1907
+ "insertions": 0,
1908
+ "semantic_wer": 0.1111111111111111,
1909
+ "utterance_failure": true,
1910
+ "severe_failure": false,
1911
+ "empty_hypothesis": false,
1912
+ "leading_omission": false,
1913
+ "ending_omission": false,
1914
+ "insertion_burst": false,
1915
+ "adjacent_phrase_repetition": false,
1916
+ "audio": "utmos22_large200_v1/audio/piper-ryan-low/utmos200_035.wav"
1917
+ },
1918
+ {
1919
+ "model": "inflect-micro-v2-finalist",
1920
+ "id": "utmos200_018",
1921
+ "category": "homographs",
1922
+ "reference": "They refuse to place the refuse beside the produce aisle.",
1923
+ "hypothesis": "They refused to place the refuse beside the produce aisle.",
1924
+ "reference_words": 10,
1925
+ "hypothesis_words": 10,
1926
+ "substitutions": 1,
1927
+ "deletions": 0,
1928
+ "insertions": 0,
1929
+ "semantic_wer": 0.1,
1930
+ "utterance_failure": true,
1931
+ "severe_failure": false,
1932
+ "empty_hypothesis": false,
1933
+ "leading_omission": false,
1934
+ "ending_omission": false,
1935
+ "insertion_burst": false,
1936
+ "adjacent_phrase_repetition": false,
1937
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_018.wav"
1938
+ },
1939
+ {
1940
+ "model": "inflect-micro-v2-finalist",
1941
+ "id": "utmos200_023",
1942
+ "category": "numbers",
1943
+ "reference": "Her score improved from eighty-two percent to ninety-seven percent in two weeks.",
1944
+ "hypothesis": "GERS score improved from 82% to 97% in two weeks.",
1945
+ "reference_words": 10,
1946
+ "hypothesis_words": 10,
1947
+ "substitutions": 1,
1948
+ "deletions": 0,
1949
+ "insertions": 0,
1950
+ "semantic_wer": 0.1,
1951
+ "utterance_failure": true,
1952
+ "severe_failure": false,
1953
+ "empty_hypothesis": false,
1954
+ "leading_omission": false,
1955
+ "ending_omission": false,
1956
+ "insertion_burst": false,
1957
+ "adjacent_phrase_repetition": false,
1958
+ "audio": "release_polish_overnight_20260720/final_large200/audio/inflect-micro-v2-finalist/utmos200_023.wav"
1959
+ }
1960
+ ]
1961
+ }
evaluation/long_form.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "text_characters": 738,
3
+ "durations_seconds": {
4
+ "inflect-micro-v2-finalist": 44.37266666666667,
5
+ "inflect-nano-v2-finalist": 43.967333333333336
6
+ },
7
+ "asr_report": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/long_form/asr/report.json",
8
+ "signal_report": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/long_form/signal/report.json"
9
+ }
evaluation/long_form_asr.json ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_multi_asr_wer_v1",
3
+ "manifest": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/long_form/combined_manifest.jsonl",
4
+ "asr_models": {
5
+ "whisper-large-v3": "openai/whisper-large-v3"
6
+ },
7
+ "normalization": {
8
+ "raw": "lowercase_punctuation_stripped",
9
+ "semantic": "transformers_whisper_EnglishTextNormalizer_then_lexical"
10
+ },
11
+ "systems": {
12
+ "inflect-micro-v2-finalist": {
13
+ "asr": {
14
+ "whisper-large-v3": {
15
+ "raw": {
16
+ "utterances": 1,
17
+ "errors": 16,
18
+ "words": 110,
19
+ "wer": 0.14545454545454545
20
+ },
21
+ "raw_95ci": [
22
+ 0.14545454545454545,
23
+ 0.14545454545454545
24
+ ],
25
+ "semantic": {
26
+ "utterances": 1,
27
+ "errors": 4,
28
+ "words": 103,
29
+ "wer": 0.038834951456310676
30
+ },
31
+ "semantic_95ci": [
32
+ 0.038834951456310676,
33
+ 0.038834951456310676
34
+ ],
35
+ "categories": {
36
+ "long_form": {
37
+ "raw": {
38
+ "utterances": 1,
39
+ "errors": 16,
40
+ "words": 110,
41
+ "wer": 0.14545454545454545
42
+ },
43
+ "semantic": {
44
+ "utterances": 1,
45
+ "errors": 4,
46
+ "words": 103,
47
+ "wer": 0.038834951456310676
48
+ }
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "cross_asr_mean_semantic_wer": 0.038834951456310676,
54
+ "cross_asr_worst_semantic_wer": 0.038834951456310676
55
+ },
56
+ "inflect-nano-v2-finalist": {
57
+ "asr": {
58
+ "whisper-large-v3": {
59
+ "raw": {
60
+ "utterances": 1,
61
+ "errors": 18,
62
+ "words": 110,
63
+ "wer": 0.16363636363636364
64
+ },
65
+ "raw_95ci": [
66
+ 0.16363636363636364,
67
+ 0.16363636363636364
68
+ ],
69
+ "semantic": {
70
+ "utterances": 1,
71
+ "errors": 6,
72
+ "words": 103,
73
+ "wer": 0.05825242718446602
74
+ },
75
+ "semantic_95ci": [
76
+ 0.05825242718446602,
77
+ 0.05825242718446602
78
+ ],
79
+ "categories": {
80
+ "long_form": {
81
+ "raw": {
82
+ "utterances": 1,
83
+ "errors": 18,
84
+ "words": 110,
85
+ "wer": 0.16363636363636364
86
+ },
87
+ "semantic": {
88
+ "utterances": 1,
89
+ "errors": 6,
90
+ "words": 103,
91
+ "wer": 0.05825242718446602
92
+ }
93
+ }
94
+ }
95
+ }
96
+ },
97
+ "cross_asr_mean_semantic_wer": 0.05825242718446602,
98
+ "cross_asr_worst_semantic_wer": 0.05825242718446602
99
+ }
100
+ },
101
+ "rows": [
102
+ {
103
+ "id": "release_long_form",
104
+ "category": "long_form",
105
+ "text": "At seven forty-five on Tuesday morning, Morgan checked the maintenance report before the first delivery arrived. The document listed three unresolved items: a fluorescent lamp near the loading bay, a pressure sensor marked B seventeen, and a package weighing twelve point six kilograms. Although the weather changed without warning, the technicians finished their inspection, called Saskatchewan headquarters, and sent the revised PDF before noon. Could the replacement parts arrive by Friday? The coordinator replied, yes, but only if invoice eight eight nine five three was approved before five P.M. After one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
106
+ "model": "inflect-micro-v2-finalist",
107
+ "audio": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/long_form/audio/inflect-micro-v2-finalist.wav",
108
+ "asr": "whisper-large-v3",
109
+ "hypothesis": "At 7.45 on Tuesday morning, Morgan checked the maintenance report before the first delivery arrived. The document listed three unresolved items, a fluorescent lamp near the loading bay, a pressure sensor marked B17, and a package weighing 12.6 kilograms. Although the weather changed without warning, the technicians finished their inspection, called Saskatchewan headquarters, and sent the revised PDF before noon. Could the replacement parts arrive by Friday? The coordinator replied, yes, but only if invoice 88953 was approved before 5pm. After one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
110
+ "raw": {
111
+ "normalized_reference": "at seven forty-five on tuesday morning, morgan checked the maintenance report before the first delivery arrived. the document listed three unresolved items: a fluorescent lamp near the loading bay, a pressure sensor marked b seventeen, and a package weighing twelve point six kilograms. although the weather changed without warning, the technicians finished their inspection, called saskatchewan headquarters, and sent the revised pdf before noon. could the replacement parts arrive by friday? the coordinator replied, yes, but only if invoice eight eight nine five three was approved before five p.m. after one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
112
+ "normalized_hypothesis": "at 7.45 on tuesday morning, morgan checked the maintenance report before the first delivery arrived. the document listed three unresolved items, a fluorescent lamp near the loading bay, a pressure sensor marked b17, and a package weighing 12.6 kilograms. although the weather changed without warning, the technicians finished their inspection, called saskatchewan headquarters, and sent the revised pdf before noon. could the replacement parts arrive by friday? the coordinator replied, yes, but only if invoice 88953 was approved before 5pm. after one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
113
+ "errors": 16,
114
+ "words": 110,
115
+ "wer": 0.14545454545454545
116
+ },
117
+ "semantic": {
118
+ "normalized_reference": "at 745 on tuesday morning morgan checked the maintenance report before the 1st delivery arrived the document listed 3 unresolved items a fluorescent lamp near the loading bay a pressure sensor marked b 17 and a package weighing 12.6 kilograms although the weather changed without warning the technicians finished their inspection called saskatchewan headquarters and sent the revised pdf before noon could the replacement parts arrive by friday the coordinator replied yes but only if invoice 88953 was approved before 5 p m after one final review everyone agreed that clear punctuation stable pacing and accurate numbers mattered more than speaking quickly",
119
+ "normalized_hypothesis": "at 7.45 on tuesday morning morgan checked the maintenance report before the 1st delivery arrived the document listed 3 unresolved items a fluorescent lamp near the loading bay a pressure sensor marked b 17 and a package weighing 12.6 kilograms although the weather changed without warning the technicians finished their inspection called saskatchewan headquarters and sent the revised pdf before noon could the replacement parts arrive by friday the coordinator replied yes but only if invoice 88953 was approved before 5 pm after one final review everyone agreed that clear punctuation stable pacing and accurate numbers mattered more than speaking quickly",
120
+ "errors": 4,
121
+ "words": 103,
122
+ "wer": 0.038834951456310676
123
+ }
124
+ },
125
+ {
126
+ "id": "release_long_form",
127
+ "category": "long_form",
128
+ "text": "At seven forty-five on Tuesday morning, Morgan checked the maintenance report before the first delivery arrived. The document listed three unresolved items: a fluorescent lamp near the loading bay, a pressure sensor marked B seventeen, and a package weighing twelve point six kilograms. Although the weather changed without warning, the technicians finished their inspection, called Saskatchewan headquarters, and sent the revised PDF before noon. Could the replacement parts arrive by Friday? The coordinator replied, yes, but only if invoice eight eight nine five three was approved before five P.M. After one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
129
+ "model": "inflect-nano-v2-finalist",
130
+ "audio": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/long_form/audio/inflect-nano-v2-finalist.wav",
131
+ "asr": "whisper-large-v3",
132
+ "hypothesis": "At 7.45 on Tuesday morning, Morgan checked the maintenance report before the first delivery arrived. The document listed three unresolved items, a fluorescent lamp near the loading bay, a pressure sensor marked B17, and a package weighing 12.6 kg. Although the weather changed without warning, the technicians finished their inspection, called Saskatchewan headquarters, and sent the revised PDEFF before noon. Could the replacement parts arrive by Friday? The coordinator replied, yes, but only if invoice 88953 was approved before 5pm. After one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
133
+ "raw": {
134
+ "normalized_reference": "at seven forty-five on tuesday morning, morgan checked the maintenance report before the first delivery arrived. the document listed three unresolved items: a fluorescent lamp near the loading bay, a pressure sensor marked b seventeen, and a package weighing twelve point six kilograms. although the weather changed without warning, the technicians finished their inspection, called saskatchewan headquarters, and sent the revised pdf before noon. could the replacement parts arrive by friday? the coordinator replied, yes, but only if invoice eight eight nine five three was approved before five p.m. after one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
135
+ "normalized_hypothesis": "at 7.45 on tuesday morning, morgan checked the maintenance report before the first delivery arrived. the document listed three unresolved items, a fluorescent lamp near the loading bay, a pressure sensor marked b17, and a package weighing 12.6 kg. although the weather changed without warning, the technicians finished their inspection, called saskatchewan headquarters, and sent the revised pdeff before noon. could the replacement parts arrive by friday? the coordinator replied, yes, but only if invoice 88953 was approved before 5pm. after one final review, everyone agreed that clear punctuation, stable pacing, and accurate numbers mattered more than speaking quickly.",
136
+ "errors": 18,
137
+ "words": 110,
138
+ "wer": 0.16363636363636364
139
+ },
140
+ "semantic": {
141
+ "normalized_reference": "at 745 on tuesday morning morgan checked the maintenance report before the 1st delivery arrived the document listed 3 unresolved items a fluorescent lamp near the loading bay a pressure sensor marked b 17 and a package weighing 12.6 kilograms although the weather changed without warning the technicians finished their inspection called saskatchewan headquarters and sent the revised pdf before noon could the replacement parts arrive by friday the coordinator replied yes but only if invoice 88953 was approved before 5 p m after one final review everyone agreed that clear punctuation stable pacing and accurate numbers mattered more than speaking quickly",
142
+ "normalized_hypothesis": "at 7.45 on tuesday morning morgan checked the maintenance report before the 1st delivery arrived the document listed 3 unresolved items a fluorescent lamp near the loading bay a pressure sensor marked b 17 and a package weighing 12.6 kg although the weather changed without warning the technicians finished their inspection called saskatchewan headquarters and sent the revised pdeff before noon could the replacement parts arrive by friday the coordinator replied yes but only if invoice 88953 was approved before 5 pm after one final review everyone agreed that clear punctuation stable pacing and accurate numbers mattered more than speaking quickly",
143
+ "errors": 6,
144
+ "words": 103,
145
+ "wer": 0.05825242718446602
146
+ }
147
+ }
148
+ ]
149
+ }
evaluation/long_form_signal.json ADDED
@@ -0,0 +1,485 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_signal_diagnostics_v1",
3
+ "manifest": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/long_form/combined_manifest.jsonl",
4
+ "metrics_are_diagnostic_not_mos": true,
5
+ "systems": {
6
+ "inflect-micro-v2-finalist": {
7
+ "count": {
8
+ "value": 1
9
+ },
10
+ "seconds": {
11
+ "mean": 44.37266666666667,
12
+ "median": 44.37266666666667,
13
+ "p05": 44.37266666666667,
14
+ "p95": 44.37266666666667
15
+ },
16
+ "words": {
17
+ "mean": 108.0,
18
+ "median": 108.0,
19
+ "p05": 108.0,
20
+ "p95": 108.0
21
+ },
22
+ "words_per_second": {
23
+ "mean": 2.4339307982391563,
24
+ "median": 2.4339307982391563,
25
+ "p05": 2.4339307982391563,
26
+ "p95": 2.4339307982391563
27
+ },
28
+ "peak_dbfs": {
29
+ "mean": -5.35886221619594,
30
+ "median": -5.35886221619594,
31
+ "p05": -5.35886221619594,
32
+ "p95": -5.35886221619594
33
+ },
34
+ "clip_fraction": {
35
+ "mean": 0.0,
36
+ "median": 0.0,
37
+ "p05": 0.0,
38
+ "p95": 0.0
39
+ },
40
+ "dc_offset": {
41
+ "mean": 3.754604676942108e-06,
42
+ "median": 3.754604676942108e-06,
43
+ "p05": 3.754604676942108e-06,
44
+ "p95": 3.754604676942108e-06
45
+ },
46
+ "leading_silence_seconds": {
47
+ "mean": 0.30933333333333335,
48
+ "median": 0.30933333333333335,
49
+ "p05": 0.30933333333333335,
50
+ "p95": 0.30933333333333335
51
+ },
52
+ "trailing_silence_seconds": {
53
+ "mean": 0.021333333333333333,
54
+ "median": 0.021333333333333333,
55
+ "p05": 0.021333333333333333,
56
+ "p95": 0.021333333333333333
57
+ },
58
+ "internal_silence_fraction": {
59
+ "mean": 0.13581730769230768,
60
+ "median": 0.13581730769230768,
61
+ "p05": 0.13581730769230768,
62
+ "p95": 0.13581730769230768
63
+ },
64
+ "tail_to_overall_rms_db": {
65
+ "mean": -48.11232409407665,
66
+ "median": -48.11232409407665,
67
+ "p05": -48.11232409407665,
68
+ "p95": -48.11232409407665
69
+ },
70
+ "active_hf_ratio_median": {
71
+ "mean": 7.739095963188447e-06,
72
+ "median": 7.739095963188447e-06,
73
+ "p05": 7.739095963188447e-06,
74
+ "p95": 7.739095963188447e-06
75
+ },
76
+ "active_flatness_median": {
77
+ "mean": 0.0004935810575261712,
78
+ "median": 0.0004935810575261712,
79
+ "p05": 0.0004935810575261712,
80
+ "p95": 0.0004935810575261712
81
+ },
82
+ "active_centroid_hz_median": {
83
+ "mean": 1304.1968200062613,
84
+ "median": 1304.1968200062613,
85
+ "p05": 1304.1968200062613,
86
+ "p95": 1304.1968200062613
87
+ },
88
+ "rms_jump_db_p95": {
89
+ "mean": 7.320098400115967,
90
+ "median": 7.320098400115967,
91
+ "p05": 7.320098400115967,
92
+ "p95": 7.320098400115967
93
+ },
94
+ "voiced_fraction": {
95
+ "mean": 0.854326923076923,
96
+ "median": 0.854326923076923,
97
+ "p05": 0.854326923076923,
98
+ "p95": 0.854326923076923
99
+ },
100
+ "f0_median_hz": {
101
+ "mean": 107.51896117937795,
102
+ "median": 107.51896117937795,
103
+ "p05": 107.51896117937795,
104
+ "p95": 107.51896117937795
105
+ },
106
+ "f0_range_semitones_p05_p95": {
107
+ "mean": 24.84172183582185,
108
+ "median": 24.84172183582185,
109
+ "p05": 24.84172183582185,
110
+ "p95": 24.84172183582185
111
+ },
112
+ "f0_jump_cents_p95": {
113
+ "mean": 1821.961141844264,
114
+ "median": 1821.961141844264,
115
+ "p05": 1821.961141844264,
116
+ "p95": 1821.961141844264
117
+ },
118
+ "f0_large_jump_fraction": {
119
+ "mean": 0.2225425194580571,
120
+ "median": 0.2225425194580571,
121
+ "p05": 0.2225425194580571,
122
+ "p95": 0.2225425194580571
123
+ }
124
+ },
125
+ "inflect-nano-v2-finalist": {
126
+ "count": {
127
+ "value": 1
128
+ },
129
+ "seconds": {
130
+ "mean": 43.967333333333336,
131
+ "median": 43.967333333333336,
132
+ "p05": 43.967333333333336,
133
+ "p95": 43.967333333333336
134
+ },
135
+ "words": {
136
+ "mean": 108.0,
137
+ "median": 108.0,
138
+ "p05": 108.0,
139
+ "p95": 108.0
140
+ },
141
+ "words_per_second": {
142
+ "mean": 2.456369122530363,
143
+ "median": 2.456369122530363,
144
+ "p05": 2.456369122530363,
145
+ "p95": 2.456369122530363
146
+ },
147
+ "peak_dbfs": {
148
+ "mean": -3.501703011153014,
149
+ "median": -3.501703011153014,
150
+ "p05": -3.501703011153014,
151
+ "p95": -3.501703011153014
152
+ },
153
+ "clip_fraction": {
154
+ "mean": 0.0,
155
+ "median": 0.0,
156
+ "p05": 0.0,
157
+ "p95": 0.0
158
+ },
159
+ "dc_offset": {
160
+ "mean": 5.1231389079475775e-05,
161
+ "median": 5.1231389079475775e-05,
162
+ "p05": 5.1231389079475775e-05,
163
+ "p95": 5.1231389079475775e-05
164
+ },
165
+ "leading_silence_seconds": {
166
+ "mean": 0.33066666666666666,
167
+ "median": 0.33066666666666666,
168
+ "p05": 0.33066666666666666,
169
+ "p95": 0.33066666666666666
170
+ },
171
+ "trailing_silence_seconds": {
172
+ "mean": 0.064,
173
+ "median": 0.064,
174
+ "p05": 0.064,
175
+ "p95": 0.064
176
+ },
177
+ "internal_silence_fraction": {
178
+ "mean": 0.13221737020863658,
179
+ "median": 0.13221737020863658,
180
+ "p05": 0.13221737020863658,
181
+ "p95": 0.13221737020863658
182
+ },
183
+ "tail_to_overall_rms_db": {
184
+ "mean": -59.80073796381536,
185
+ "median": -59.80073796381536,
186
+ "p05": -59.80073796381536,
187
+ "p95": -59.80073796381536
188
+ },
189
+ "active_hf_ratio_median": {
190
+ "mean": 7.782135980960447e-06,
191
+ "median": 7.782135980960447e-06,
192
+ "p05": 7.782135980960447e-06,
193
+ "p95": 7.782135980960447e-06
194
+ },
195
+ "active_flatness_median": {
196
+ "mean": 0.0004650004848372191,
197
+ "median": 0.0004650004848372191,
198
+ "p05": 0.0004650004848372191,
199
+ "p95": 0.0004650004848372191
200
+ },
201
+ "active_centroid_hz_median": {
202
+ "mean": 1315.4845530140253,
203
+ "median": 1315.4845530140253,
204
+ "p05": 1315.4845530140253,
205
+ "p95": 1315.4845530140253
206
+ },
207
+ "rms_jump_db_p95": {
208
+ "mean": 7.494379043579102,
209
+ "median": 7.494379043579102,
210
+ "p05": 7.494379043579102,
211
+ "p95": 7.494379043579102
212
+ },
213
+ "voiced_fraction": {
214
+ "mean": 0.8561377971858322,
215
+ "median": 0.8561377971858322,
216
+ "p05": 0.8561377971858322,
217
+ "p95": 0.8561377971858322
218
+ },
219
+ "f0_median_hz": {
220
+ "mean": 107.39862455247871,
221
+ "median": 107.39862455247871,
222
+ "p05": 107.39862455247871,
223
+ "p95": 107.39862455247871
224
+ },
225
+ "f0_range_semitones_p05_p95": {
226
+ "mean": 24.13550808891641,
227
+ "median": 24.13550808891641,
228
+ "p05": 24.13550808891641,
229
+ "p95": 24.13550808891641
230
+ },
231
+ "f0_jump_cents_p95": {
232
+ "mean": 1733.9331321194263,
233
+ "median": 1733.9331321194263,
234
+ "p05": 1733.9331321194263,
235
+ "p95": 1733.9331321194263
236
+ },
237
+ "f0_large_jump_fraction": {
238
+ "mean": 0.23409817020040663,
239
+ "median": 0.23409817020040663,
240
+ "p05": 0.23409817020040663,
241
+ "p95": 0.23409817020040663
242
+ }
243
+ }
244
+ },
245
+ "systems_by_category": {
246
+ "inflect-micro-v2-finalist::long_form": {
247
+ "count": {
248
+ "value": 1
249
+ },
250
+ "seconds": {
251
+ "mean": 44.37266666666667,
252
+ "median": 44.37266666666667,
253
+ "p05": 44.37266666666667,
254
+ "p95": 44.37266666666667
255
+ },
256
+ "words": {
257
+ "mean": 108.0,
258
+ "median": 108.0,
259
+ "p05": 108.0,
260
+ "p95": 108.0
261
+ },
262
+ "words_per_second": {
263
+ "mean": 2.4339307982391563,
264
+ "median": 2.4339307982391563,
265
+ "p05": 2.4339307982391563,
266
+ "p95": 2.4339307982391563
267
+ },
268
+ "peak_dbfs": {
269
+ "mean": -5.35886221619594,
270
+ "median": -5.35886221619594,
271
+ "p05": -5.35886221619594,
272
+ "p95": -5.35886221619594
273
+ },
274
+ "clip_fraction": {
275
+ "mean": 0.0,
276
+ "median": 0.0,
277
+ "p05": 0.0,
278
+ "p95": 0.0
279
+ },
280
+ "dc_offset": {
281
+ "mean": 3.754604676942108e-06,
282
+ "median": 3.754604676942108e-06,
283
+ "p05": 3.754604676942108e-06,
284
+ "p95": 3.754604676942108e-06
285
+ },
286
+ "leading_silence_seconds": {
287
+ "mean": 0.30933333333333335,
288
+ "median": 0.30933333333333335,
289
+ "p05": 0.30933333333333335,
290
+ "p95": 0.30933333333333335
291
+ },
292
+ "trailing_silence_seconds": {
293
+ "mean": 0.021333333333333333,
294
+ "median": 0.021333333333333333,
295
+ "p05": 0.021333333333333333,
296
+ "p95": 0.021333333333333333
297
+ },
298
+ "internal_silence_fraction": {
299
+ "mean": 0.13581730769230768,
300
+ "median": 0.13581730769230768,
301
+ "p05": 0.13581730769230768,
302
+ "p95": 0.13581730769230768
303
+ },
304
+ "tail_to_overall_rms_db": {
305
+ "mean": -48.11232409407665,
306
+ "median": -48.11232409407665,
307
+ "p05": -48.11232409407665,
308
+ "p95": -48.11232409407665
309
+ },
310
+ "active_hf_ratio_median": {
311
+ "mean": 7.739095963188447e-06,
312
+ "median": 7.739095963188447e-06,
313
+ "p05": 7.739095963188447e-06,
314
+ "p95": 7.739095963188447e-06
315
+ },
316
+ "active_flatness_median": {
317
+ "mean": 0.0004935810575261712,
318
+ "median": 0.0004935810575261712,
319
+ "p05": 0.0004935810575261712,
320
+ "p95": 0.0004935810575261712
321
+ },
322
+ "active_centroid_hz_median": {
323
+ "mean": 1304.1968200062613,
324
+ "median": 1304.1968200062613,
325
+ "p05": 1304.1968200062613,
326
+ "p95": 1304.1968200062613
327
+ },
328
+ "rms_jump_db_p95": {
329
+ "mean": 7.320098400115967,
330
+ "median": 7.320098400115967,
331
+ "p05": 7.320098400115967,
332
+ "p95": 7.320098400115967
333
+ },
334
+ "voiced_fraction": {
335
+ "mean": 0.854326923076923,
336
+ "median": 0.854326923076923,
337
+ "p05": 0.854326923076923,
338
+ "p95": 0.854326923076923
339
+ },
340
+ "f0_median_hz": {
341
+ "mean": 107.51896117937795,
342
+ "median": 107.51896117937795,
343
+ "p05": 107.51896117937795,
344
+ "p95": 107.51896117937795
345
+ },
346
+ "f0_range_semitones_p05_p95": {
347
+ "mean": 24.84172183582185,
348
+ "median": 24.84172183582185,
349
+ "p05": 24.84172183582185,
350
+ "p95": 24.84172183582185
351
+ },
352
+ "f0_jump_cents_p95": {
353
+ "mean": 1821.961141844264,
354
+ "median": 1821.961141844264,
355
+ "p05": 1821.961141844264,
356
+ "p95": 1821.961141844264
357
+ },
358
+ "f0_large_jump_fraction": {
359
+ "mean": 0.2225425194580571,
360
+ "median": 0.2225425194580571,
361
+ "p05": 0.2225425194580571,
362
+ "p95": 0.2225425194580571
363
+ }
364
+ },
365
+ "inflect-nano-v2-finalist::long_form": {
366
+ "count": {
367
+ "value": 1
368
+ },
369
+ "seconds": {
370
+ "mean": 43.967333333333336,
371
+ "median": 43.967333333333336,
372
+ "p05": 43.967333333333336,
373
+ "p95": 43.967333333333336
374
+ },
375
+ "words": {
376
+ "mean": 108.0,
377
+ "median": 108.0,
378
+ "p05": 108.0,
379
+ "p95": 108.0
380
+ },
381
+ "words_per_second": {
382
+ "mean": 2.456369122530363,
383
+ "median": 2.456369122530363,
384
+ "p05": 2.456369122530363,
385
+ "p95": 2.456369122530363
386
+ },
387
+ "peak_dbfs": {
388
+ "mean": -3.501703011153014,
389
+ "median": -3.501703011153014,
390
+ "p05": -3.501703011153014,
391
+ "p95": -3.501703011153014
392
+ },
393
+ "clip_fraction": {
394
+ "mean": 0.0,
395
+ "median": 0.0,
396
+ "p05": 0.0,
397
+ "p95": 0.0
398
+ },
399
+ "dc_offset": {
400
+ "mean": 5.1231389079475775e-05,
401
+ "median": 5.1231389079475775e-05,
402
+ "p05": 5.1231389079475775e-05,
403
+ "p95": 5.1231389079475775e-05
404
+ },
405
+ "leading_silence_seconds": {
406
+ "mean": 0.33066666666666666,
407
+ "median": 0.33066666666666666,
408
+ "p05": 0.33066666666666666,
409
+ "p95": 0.33066666666666666
410
+ },
411
+ "trailing_silence_seconds": {
412
+ "mean": 0.064,
413
+ "median": 0.064,
414
+ "p05": 0.064,
415
+ "p95": 0.064
416
+ },
417
+ "internal_silence_fraction": {
418
+ "mean": 0.13221737020863658,
419
+ "median": 0.13221737020863658,
420
+ "p05": 0.13221737020863658,
421
+ "p95": 0.13221737020863658
422
+ },
423
+ "tail_to_overall_rms_db": {
424
+ "mean": -59.80073796381536,
425
+ "median": -59.80073796381536,
426
+ "p05": -59.80073796381536,
427
+ "p95": -59.80073796381536
428
+ },
429
+ "active_hf_ratio_median": {
430
+ "mean": 7.782135980960447e-06,
431
+ "median": 7.782135980960447e-06,
432
+ "p05": 7.782135980960447e-06,
433
+ "p95": 7.782135980960447e-06
434
+ },
435
+ "active_flatness_median": {
436
+ "mean": 0.0004650004848372191,
437
+ "median": 0.0004650004848372191,
438
+ "p05": 0.0004650004848372191,
439
+ "p95": 0.0004650004848372191
440
+ },
441
+ "active_centroid_hz_median": {
442
+ "mean": 1315.4845530140253,
443
+ "median": 1315.4845530140253,
444
+ "p05": 1315.4845530140253,
445
+ "p95": 1315.4845530140253
446
+ },
447
+ "rms_jump_db_p95": {
448
+ "mean": 7.494379043579102,
449
+ "median": 7.494379043579102,
450
+ "p05": 7.494379043579102,
451
+ "p95": 7.494379043579102
452
+ },
453
+ "voiced_fraction": {
454
+ "mean": 0.8561377971858322,
455
+ "median": 0.8561377971858322,
456
+ "p05": 0.8561377971858322,
457
+ "p95": 0.8561377971858322
458
+ },
459
+ "f0_median_hz": {
460
+ "mean": 107.39862455247871,
461
+ "median": 107.39862455247871,
462
+ "p05": 107.39862455247871,
463
+ "p95": 107.39862455247871
464
+ },
465
+ "f0_range_semitones_p05_p95": {
466
+ "mean": 24.13550808891641,
467
+ "median": 24.13550808891641,
468
+ "p05": 24.13550808891641,
469
+ "p95": 24.13550808891641
470
+ },
471
+ "f0_jump_cents_p95": {
472
+ "mean": 1733.9331321194263,
473
+ "median": 1733.9331321194263,
474
+ "p05": 1733.9331321194263,
475
+ "p95": 1733.9331321194263
476
+ },
477
+ "f0_large_jump_fraction": {
478
+ "mean": 0.23409817020040663,
479
+ "median": 0.23409817020040663,
480
+ "p05": 0.23409817020040663,
481
+ "p95": 0.23409817020040663
482
+ }
483
+ }
484
+ }
485
+ }
evaluation/multiseed_robustness.json ADDED
@@ -0,0 +1,780 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_v2_multiseed_robustness_v1",
3
+ "created_utc": "2026-07-21T08:20:18.083821+00:00",
4
+ "systems": {
5
+ "inflect-micro-v2-finalist": {
6
+ "prompts": 24,
7
+ "seeds_per_prompt": [
8
+ 3
9
+ ],
10
+ "mean_seed_utterance_wer": 0.01917989417989418,
11
+ "mean_prompt_worst_seed_wer": 0.024735449735449735,
12
+ "every_seed_exact_prompt_rate": 0.8333333333333334,
13
+ "any_seed_exact_prompt_rate": 0.875,
14
+ "utmos22": {
15
+ "count": 72,
16
+ "mean": 4.4135655826992455,
17
+ "mean_bootstrap_95_ci": [
18
+ 4.382303592231538,
19
+ 4.439516715705395
20
+ ],
21
+ "median": 4.458602428436279,
22
+ "population_stddev": 0.12306422365741825,
23
+ "minimum": 3.8417863845825195,
24
+ "p10": 4.2751964092254635,
25
+ "p90": 4.491524410247803,
26
+ "maximum": 4.5073137283325195,
27
+ "rows": [
28
+ {
29
+ "id": "utmos200_001__seed1",
30
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_001__seed1.wav",
31
+ "predicted_mos": 4.479095935821533
32
+ },
33
+ {
34
+ "id": "utmos200_015__seed1",
35
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_015__seed1.wav",
36
+ "predicted_mos": 4.464743614196777
37
+ },
38
+ {
39
+ "id": "utmos200_029__seed1",
40
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_029__seed1.wav",
41
+ "predicted_mos": 4.442873477935791
42
+ },
43
+ {
44
+ "id": "utmos200_002__seed1",
45
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_002__seed1.wav",
46
+ "predicted_mos": 4.465550422668457
47
+ },
48
+ {
49
+ "id": "utmos200_016__seed1",
50
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_016__seed1.wav",
51
+ "predicted_mos": 4.437236785888672
52
+ },
53
+ {
54
+ "id": "utmos200_030__seed1",
55
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_030__seed1.wav",
56
+ "predicted_mos": 4.459320068359375
57
+ },
58
+ {
59
+ "id": "utmos200_003__seed1",
60
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_003__seed1.wav",
61
+ "predicted_mos": 4.466009140014648
62
+ },
63
+ {
64
+ "id": "utmos200_017__seed1",
65
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_017__seed1.wav",
66
+ "predicted_mos": 4.453671455383301
67
+ },
68
+ {
69
+ "id": "utmos200_031__seed1",
70
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_031__seed1.wav",
71
+ "predicted_mos": 4.477704048156738
72
+ },
73
+ {
74
+ "id": "utmos200_004__seed1",
75
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_004__seed1.wav",
76
+ "predicted_mos": 4.462135314941406
77
+ },
78
+ {
79
+ "id": "utmos200_018__seed1",
80
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_018__seed1.wav",
81
+ "predicted_mos": 4.452676296234131
82
+ },
83
+ {
84
+ "id": "utmos200_032__seed1",
85
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_032__seed1.wav",
86
+ "predicted_mos": 4.496460914611816
87
+ },
88
+ {
89
+ "id": "utmos200_005__seed1",
90
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_005__seed1.wav",
91
+ "predicted_mos": 4.472134113311768
92
+ },
93
+ {
94
+ "id": "utmos200_019__seed1",
95
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_019__seed1.wav",
96
+ "predicted_mos": 4.5073137283325195
97
+ },
98
+ {
99
+ "id": "utmos200_033__seed1",
100
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_033__seed1.wav",
101
+ "predicted_mos": 4.449575424194336
102
+ },
103
+ {
104
+ "id": "utmos200_006__seed1",
105
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_006__seed1.wav",
106
+ "predicted_mos": 4.430253505706787
107
+ },
108
+ {
109
+ "id": "utmos200_020__seed1",
110
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_020__seed1.wav",
111
+ "predicted_mos": 4.480719566345215
112
+ },
113
+ {
114
+ "id": "utmos200_034__seed1",
115
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_034__seed1.wav",
116
+ "predicted_mos": 4.179777145385742
117
+ },
118
+ {
119
+ "id": "utmos200_007__seed1",
120
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_007__seed1.wav",
121
+ "predicted_mos": 4.272939205169678
122
+ },
123
+ {
124
+ "id": "utmos200_021__seed1",
125
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_021__seed1.wav",
126
+ "predicted_mos": 4.438465118408203
127
+ },
128
+ {
129
+ "id": "utmos200_035__seed1",
130
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_035__seed1.wav",
131
+ "predicted_mos": 4.481887340545654
132
+ },
133
+ {
134
+ "id": "utmos200_008__seed1",
135
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_008__seed1.wav",
136
+ "predicted_mos": 4.464724063873291
137
+ },
138
+ {
139
+ "id": "utmos200_022__seed1",
140
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_022__seed1.wav",
141
+ "predicted_mos": 4.458331108093262
142
+ },
143
+ {
144
+ "id": "utmos200_036__seed1",
145
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_036__seed1.wav",
146
+ "predicted_mos": 4.492228031158447
147
+ },
148
+ {
149
+ "id": "utmos200_001__seed2",
150
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_001__seed2.wav",
151
+ "predicted_mos": 4.4713592529296875
152
+ },
153
+ {
154
+ "id": "utmos200_015__seed2",
155
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_015__seed2.wav",
156
+ "predicted_mos": 4.431799411773682
157
+ },
158
+ {
159
+ "id": "utmos200_029__seed2",
160
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_029__seed2.wav",
161
+ "predicted_mos": 4.388747692108154
162
+ },
163
+ {
164
+ "id": "utmos200_002__seed2",
165
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_002__seed2.wav",
166
+ "predicted_mos": 4.44416618347168
167
+ },
168
+ {
169
+ "id": "utmos200_016__seed2",
170
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_016__seed2.wav",
171
+ "predicted_mos": 4.376438140869141
172
+ },
173
+ {
174
+ "id": "utmos200_030__seed2",
175
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_030__seed2.wav",
176
+ "predicted_mos": 4.410470485687256
177
+ },
178
+ {
179
+ "id": "utmos200_003__seed2",
180
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_003__seed2.wav",
181
+ "predicted_mos": 4.48537540435791
182
+ },
183
+ {
184
+ "id": "utmos200_017__seed2",
185
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_017__seed2.wav",
186
+ "predicted_mos": 4.378164291381836
187
+ },
188
+ {
189
+ "id": "utmos200_031__seed2",
190
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_031__seed2.wav",
191
+ "predicted_mos": 4.458873748779297
192
+ },
193
+ {
194
+ "id": "utmos200_004__seed2",
195
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_004__seed2.wav",
196
+ "predicted_mos": 4.491084098815918
197
+ },
198
+ {
199
+ "id": "utmos200_018__seed2",
200
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_018__seed2.wav",
201
+ "predicted_mos": 4.481396675109863
202
+ },
203
+ {
204
+ "id": "utmos200_032__seed2",
205
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_032__seed2.wav",
206
+ "predicted_mos": 4.491573333740234
207
+ },
208
+ {
209
+ "id": "utmos200_005__seed2",
210
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_005__seed2.wav",
211
+ "predicted_mos": 4.211251735687256
212
+ },
213
+ {
214
+ "id": "utmos200_019__seed2",
215
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_019__seed2.wav",
216
+ "predicted_mos": 4.444100379943848
217
+ },
218
+ {
219
+ "id": "utmos200_033__seed2",
220
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_033__seed2.wav",
221
+ "predicted_mos": 4.394369125366211
222
+ },
223
+ {
224
+ "id": "utmos200_006__seed2",
225
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_006__seed2.wav",
226
+ "predicted_mos": 4.440512657165527
227
+ },
228
+ {
229
+ "id": "utmos200_020__seed2",
230
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_020__seed2.wav",
231
+ "predicted_mos": 4.295511245727539
232
+ },
233
+ {
234
+ "id": "utmos200_034__seed2",
235
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_034__seed2.wav",
236
+ "predicted_mos": 4.480815887451172
237
+ },
238
+ {
239
+ "id": "utmos200_007__seed2",
240
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_007__seed2.wav",
241
+ "predicted_mos": 4.1143903732299805
242
+ },
243
+ {
244
+ "id": "utmos200_021__seed2",
245
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_021__seed2.wav",
246
+ "predicted_mos": 4.363529205322266
247
+ },
248
+ {
249
+ "id": "utmos200_035__seed2",
250
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_035__seed2.wav",
251
+ "predicted_mos": 4.498285293579102
252
+ },
253
+ {
254
+ "id": "utmos200_008__seed2",
255
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_008__seed2.wav",
256
+ "predicted_mos": 4.207676887512207
257
+ },
258
+ {
259
+ "id": "utmos200_022__seed2",
260
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_022__seed2.wav",
261
+ "predicted_mos": 4.459481239318848
262
+ },
263
+ {
264
+ "id": "utmos200_036__seed2",
265
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_036__seed2.wav",
266
+ "predicted_mos": 4.419037342071533
267
+ },
268
+ {
269
+ "id": "utmos200_001__seed3",
270
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_001__seed3.wav",
271
+ "predicted_mos": 4.466662406921387
272
+ },
273
+ {
274
+ "id": "utmos200_015__seed3",
275
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_015__seed3.wav",
276
+ "predicted_mos": 4.47134256362915
277
+ },
278
+ {
279
+ "id": "utmos200_029__seed3",
280
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_029__seed3.wav",
281
+ "predicted_mos": 4.4083757400512695
282
+ },
283
+ {
284
+ "id": "utmos200_002__seed3",
285
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_002__seed3.wav",
286
+ "predicted_mos": 4.474235534667969
287
+ },
288
+ {
289
+ "id": "utmos200_016__seed3",
290
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_016__seed3.wav",
291
+ "predicted_mos": 4.422906875610352
292
+ },
293
+ {
294
+ "id": "utmos200_030__seed3",
295
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_030__seed3.wav",
296
+ "predicted_mos": 3.8417863845825195
297
+ },
298
+ {
299
+ "id": "utmos200_003__seed3",
300
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_003__seed3.wav",
301
+ "predicted_mos": 4.448728561401367
302
+ },
303
+ {
304
+ "id": "utmos200_017__seed3",
305
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_017__seed3.wav",
306
+ "predicted_mos": 4.433065414428711
307
+ },
308
+ {
309
+ "id": "utmos200_031__seed3",
310
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_031__seed3.wav",
311
+ "predicted_mos": 4.487939834594727
312
+ },
313
+ {
314
+ "id": "utmos200_004__seed3",
315
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_004__seed3.wav",
316
+ "predicted_mos": 4.489143371582031
317
+ },
318
+ {
319
+ "id": "utmos200_018__seed3",
320
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_018__seed3.wav",
321
+ "predicted_mos": 4.462905406951904
322
+ },
323
+ {
324
+ "id": "utmos200_032__seed3",
325
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_032__seed3.wav",
326
+ "predicted_mos": 4.034055233001709
327
+ },
328
+ {
329
+ "id": "utmos200_005__seed3",
330
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_005__seed3.wav",
331
+ "predicted_mos": 4.493489742279053
332
+ },
333
+ {
334
+ "id": "utmos200_019__seed3",
335
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_019__seed3.wav",
336
+ "predicted_mos": 4.3289031982421875
337
+ },
338
+ {
339
+ "id": "utmos200_033__seed3",
340
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_033__seed3.wav",
341
+ "predicted_mos": 4.384283542633057
342
+ },
343
+ {
344
+ "id": "utmos200_006__seed3",
345
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_006__seed3.wav",
346
+ "predicted_mos": 4.450536251068115
347
+ },
348
+ {
349
+ "id": "utmos200_020__seed3",
350
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_020__seed3.wav",
351
+ "predicted_mos": 4.48296594619751
352
+ },
353
+ {
354
+ "id": "utmos200_034__seed3",
355
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_034__seed3.wav",
356
+ "predicted_mos": 4.5004472732543945
357
+ },
358
+ {
359
+ "id": "utmos200_007__seed3",
360
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_007__seed3.wav",
361
+ "predicted_mos": 4.473709583282471
362
+ },
363
+ {
364
+ "id": "utmos200_021__seed3",
365
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_021__seed3.wav",
366
+ "predicted_mos": 4.41731595993042
367
+ },
368
+ {
369
+ "id": "utmos200_035__seed3",
370
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_035__seed3.wav",
371
+ "predicted_mos": 4.485398292541504
372
+ },
373
+ {
374
+ "id": "utmos200_008__seed3",
375
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_008__seed3.wav",
376
+ "predicted_mos": 4.00593900680542
377
+ },
378
+ {
379
+ "id": "utmos200_022__seed3",
380
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_022__seed3.wav",
381
+ "predicted_mos": 4.498015403747559
382
+ },
383
+ {
384
+ "id": "utmos200_036__seed3",
385
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-micro-v2-finalist/utmos200_036__seed3.wav",
386
+ "predicted_mos": 4.490334510803223
387
+ }
388
+ ]
389
+ }
390
+ },
391
+ "inflect-nano-v2-finalist": {
392
+ "prompts": 24,
393
+ "seeds_per_prompt": [
394
+ 3
395
+ ],
396
+ "mean_seed_utterance_wer": 0.023434744268077602,
397
+ "mean_prompt_worst_seed_wer": 0.03574735449735449,
398
+ "every_seed_exact_prompt_rate": 0.7083333333333334,
399
+ "any_seed_exact_prompt_rate": 0.875,
400
+ "utmos22": {
401
+ "count": 72,
402
+ "mean": 4.400220692157745,
403
+ "mean_bootstrap_95_ci": [
404
+ 4.364260655475987,
405
+ 4.432265907691584
406
+ ],
407
+ "median": 4.45754075050354,
408
+ "population_stddev": 0.14739345703662027,
409
+ "minimum": 3.8460259437561035,
410
+ "p10": 4.210692977905273,
411
+ "p90": 4.497595262527466,
412
+ "maximum": 4.517411231994629,
413
+ "rows": [
414
+ {
415
+ "id": "utmos200_001__seed1",
416
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_001__seed1.wav",
417
+ "predicted_mos": 4.470656394958496
418
+ },
419
+ {
420
+ "id": "utmos200_015__seed1",
421
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_015__seed1.wav",
422
+ "predicted_mos": 4.481729030609131
423
+ },
424
+ {
425
+ "id": "utmos200_029__seed1",
426
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_029__seed1.wav",
427
+ "predicted_mos": 4.423151969909668
428
+ },
429
+ {
430
+ "id": "utmos200_002__seed1",
431
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_002__seed1.wav",
432
+ "predicted_mos": 4.426032066345215
433
+ },
434
+ {
435
+ "id": "utmos200_016__seed1",
436
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_016__seed1.wav",
437
+ "predicted_mos": 4.440719127655029
438
+ },
439
+ {
440
+ "id": "utmos200_030__seed1",
441
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_030__seed1.wav",
442
+ "predicted_mos": 4.457940101623535
443
+ },
444
+ {
445
+ "id": "utmos200_003__seed1",
446
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_003__seed1.wav",
447
+ "predicted_mos": 4.460284233093262
448
+ },
449
+ {
450
+ "id": "utmos200_017__seed1",
451
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_017__seed1.wav",
452
+ "predicted_mos": 4.345141410827637
453
+ },
454
+ {
455
+ "id": "utmos200_031__seed1",
456
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_031__seed1.wav",
457
+ "predicted_mos": 4.147719383239746
458
+ },
459
+ {
460
+ "id": "utmos200_004__seed1",
461
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_004__seed1.wav",
462
+ "predicted_mos": 4.4947710037231445
463
+ },
464
+ {
465
+ "id": "utmos200_018__seed1",
466
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_018__seed1.wav",
467
+ "predicted_mos": 4.453065395355225
468
+ },
469
+ {
470
+ "id": "utmos200_032__seed1",
471
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_032__seed1.wav",
472
+ "predicted_mos": 4.252050399780273
473
+ },
474
+ {
475
+ "id": "utmos200_005__seed1",
476
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_005__seed1.wav",
477
+ "predicted_mos": 4.499449729919434
478
+ },
479
+ {
480
+ "id": "utmos200_019__seed1",
481
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_019__seed1.wav",
482
+ "predicted_mos": 4.0041351318359375
483
+ },
484
+ {
485
+ "id": "utmos200_033__seed1",
486
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_033__seed1.wav",
487
+ "predicted_mos": 4.467413902282715
488
+ },
489
+ {
490
+ "id": "utmos200_006__seed1",
491
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_006__seed1.wav",
492
+ "predicted_mos": 4.457907199859619
493
+ },
494
+ {
495
+ "id": "utmos200_020__seed1",
496
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_020__seed1.wav",
497
+ "predicted_mos": 4.439480304718018
498
+ },
499
+ {
500
+ "id": "utmos200_034__seed1",
501
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_034__seed1.wav",
502
+ "predicted_mos": 4.427018165588379
503
+ },
504
+ {
505
+ "id": "utmos200_007__seed1",
506
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_007__seed1.wav",
507
+ "predicted_mos": 4.497909069061279
508
+ },
509
+ {
510
+ "id": "utmos200_021__seed1",
511
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_021__seed1.wav",
512
+ "predicted_mos": 3.8460259437561035
513
+ },
514
+ {
515
+ "id": "utmos200_035__seed1",
516
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_035__seed1.wav",
517
+ "predicted_mos": 4.462929725646973
518
+ },
519
+ {
520
+ "id": "utmos200_008__seed1",
521
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_008__seed1.wav",
522
+ "predicted_mos": 4.5093841552734375
523
+ },
524
+ {
525
+ "id": "utmos200_022__seed1",
526
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_022__seed1.wav",
527
+ "predicted_mos": 4.457174301147461
528
+ },
529
+ {
530
+ "id": "utmos200_036__seed1",
531
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_036__seed1.wav",
532
+ "predicted_mos": 4.4644694328308105
533
+ },
534
+ {
535
+ "id": "utmos200_001__seed2",
536
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_001__seed2.wav",
537
+ "predicted_mos": 4.474266052246094
538
+ },
539
+ {
540
+ "id": "utmos200_015__seed2",
541
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_015__seed2.wav",
542
+ "predicted_mos": 4.483236789703369
543
+ },
544
+ {
545
+ "id": "utmos200_029__seed2",
546
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_029__seed2.wav",
547
+ "predicted_mos": 4.366954326629639
548
+ },
549
+ {
550
+ "id": "utmos200_002__seed2",
551
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_002__seed2.wav",
552
+ "predicted_mos": 4.471959590911865
553
+ },
554
+ {
555
+ "id": "utmos200_016__seed2",
556
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_016__seed2.wav",
557
+ "predicted_mos": 4.386756896972656
558
+ },
559
+ {
560
+ "id": "utmos200_030__seed2",
561
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_030__seed2.wav",
562
+ "predicted_mos": 4.451584815979004
563
+ },
564
+ {
565
+ "id": "utmos200_003__seed2",
566
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_003__seed2.wav",
567
+ "predicted_mos": 4.479098320007324
568
+ },
569
+ {
570
+ "id": "utmos200_017__seed2",
571
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_017__seed2.wav",
572
+ "predicted_mos": 4.388742923736572
573
+ },
574
+ {
575
+ "id": "utmos200_031__seed2",
576
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_031__seed2.wav",
577
+ "predicted_mos": 4.422547340393066
578
+ },
579
+ {
580
+ "id": "utmos200_004__seed2",
581
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_004__seed2.wav",
582
+ "predicted_mos": 4.492393970489502
583
+ },
584
+ {
585
+ "id": "utmos200_018__seed2",
586
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_018__seed2.wav",
587
+ "predicted_mos": 4.430690288543701
588
+ },
589
+ {
590
+ "id": "utmos200_032__seed2",
591
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_032__seed2.wav",
592
+ "predicted_mos": 4.508492946624756
593
+ },
594
+ {
595
+ "id": "utmos200_005__seed2",
596
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_005__seed2.wav",
597
+ "predicted_mos": 4.468206882476807
598
+ },
599
+ {
600
+ "id": "utmos200_019__seed2",
601
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_019__seed2.wav",
602
+ "predicted_mos": 4.489481449127197
603
+ },
604
+ {
605
+ "id": "utmos200_033__seed2",
606
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_033__seed2.wav",
607
+ "predicted_mos": 4.323983669281006
608
+ },
609
+ {
610
+ "id": "utmos200_006__seed2",
611
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_006__seed2.wav",
612
+ "predicted_mos": 4.459604263305664
613
+ },
614
+ {
615
+ "id": "utmos200_020__seed2",
616
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_020__seed2.wav",
617
+ "predicted_mos": 4.206554412841797
618
+ },
619
+ {
620
+ "id": "utmos200_034__seed2",
621
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_034__seed2.wav",
622
+ "predicted_mos": 4.489374160766602
623
+ },
624
+ {
625
+ "id": "utmos200_007__seed2",
626
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_007__seed2.wav",
627
+ "predicted_mos": 4.48223876953125
628
+ },
629
+ {
630
+ "id": "utmos200_021__seed2",
631
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_021__seed2.wav",
632
+ "predicted_mos": 4.320951461791992
633
+ },
634
+ {
635
+ "id": "utmos200_035__seed2",
636
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_035__seed2.wav",
637
+ "predicted_mos": 4.4568071365356445
638
+ },
639
+ {
640
+ "id": "utmos200_008__seed2",
641
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_008__seed2.wav",
642
+ "predicted_mos": 4.50920295715332
643
+ },
644
+ {
645
+ "id": "utmos200_022__seed2",
646
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_022__seed2.wav",
647
+ "predicted_mos": 3.9364013671875
648
+ },
649
+ {
650
+ "id": "utmos200_036__seed2",
651
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_036__seed2.wav",
652
+ "predicted_mos": 4.484243392944336
653
+ },
654
+ {
655
+ "id": "utmos200_001__seed3",
656
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_001__seed3.wav",
657
+ "predicted_mos": 4.443660736083984
658
+ },
659
+ {
660
+ "id": "utmos200_015__seed3",
661
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_015__seed3.wav",
662
+ "predicted_mos": 4.5000810623168945
663
+ },
664
+ {
665
+ "id": "utmos200_029__seed3",
666
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_029__seed3.wav",
667
+ "predicted_mos": 4.402558326721191
668
+ },
669
+ {
670
+ "id": "utmos200_002__seed3",
671
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_002__seed3.wav",
672
+ "predicted_mos": 4.412972450256348
673
+ },
674
+ {
675
+ "id": "utmos200_016__seed3",
676
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_016__seed3.wav",
677
+ "predicted_mos": 4.423831939697266
678
+ },
679
+ {
680
+ "id": "utmos200_030__seed3",
681
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_030__seed3.wav",
682
+ "predicted_mos": 4.4557976722717285
683
+ },
684
+ {
685
+ "id": "utmos200_003__seed3",
686
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_003__seed3.wav",
687
+ "predicted_mos": 4.485733985900879
688
+ },
689
+ {
690
+ "id": "utmos200_017__seed3",
691
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_017__seed3.wav",
692
+ "predicted_mos": 4.366256237030029
693
+ },
694
+ {
695
+ "id": "utmos200_031__seed3",
696
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_031__seed3.wav",
697
+ "predicted_mos": 4.488124847412109
698
+ },
699
+ {
700
+ "id": "utmos200_004__seed3",
701
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_004__seed3.wav",
702
+ "predicted_mos": 4.489302158355713
703
+ },
704
+ {
705
+ "id": "utmos200_018__seed3",
706
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_018__seed3.wav",
707
+ "predicted_mos": 4.480629920959473
708
+ },
709
+ {
710
+ "id": "utmos200_032__seed3",
711
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_032__seed3.wav",
712
+ "predicted_mos": 4.489974498748779
713
+ },
714
+ {
715
+ "id": "utmos200_005__seed3",
716
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_005__seed3.wav",
717
+ "predicted_mos": 4.097378730773926
718
+ },
719
+ {
720
+ "id": "utmos200_019__seed3",
721
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_019__seed3.wav",
722
+ "predicted_mos": 4.392618179321289
723
+ },
724
+ {
725
+ "id": "utmos200_033__seed3",
726
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_033__seed3.wav",
727
+ "predicted_mos": 4.492916584014893
728
+ },
729
+ {
730
+ "id": "utmos200_006__seed3",
731
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_006__seed3.wav",
732
+ "predicted_mos": 4.4339423179626465
733
+ },
734
+ {
735
+ "id": "utmos200_020__seed3",
736
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_020__seed3.wav",
737
+ "predicted_mos": 4.09462308883667
738
+ },
739
+ {
740
+ "id": "utmos200_034__seed3",
741
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_034__seed3.wav",
742
+ "predicted_mos": 4.2479400634765625
743
+ },
744
+ {
745
+ "id": "utmos200_007__seed3",
746
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_007__seed3.wav",
747
+ "predicted_mos": 4.473614692687988
748
+ },
749
+ {
750
+ "id": "utmos200_021__seed3",
751
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_021__seed3.wav",
752
+ "predicted_mos": 4.390239238739014
753
+ },
754
+ {
755
+ "id": "utmos200_035__seed3",
756
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_035__seed3.wav",
757
+ "predicted_mos": 4.501547813415527
758
+ },
759
+ {
760
+ "id": "utmos200_008__seed3",
761
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_008__seed3.wav",
762
+ "predicted_mos": 4.517411231994629
763
+ },
764
+ {
765
+ "id": "utmos200_022__seed3",
766
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_022__seed3.wav",
767
+ "predicted_mos": 3.8979973793029785
768
+ },
769
+ {
770
+ "id": "utmos200_036__seed3",
771
+ "file_path": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/audio/inflect-nano-v2-finalist/utmos200_036__seed3.wav",
772
+ "predicted_mos": 4.466404914855957
773
+ }
774
+ ]
775
+ }
776
+ }
777
+ },
778
+ "asr_report": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/asr/report.json",
779
+ "utmos_report": "release_polish_overnight_20260720/extended_benchmarks/multiseed_robustness/utmos22/report.json"
780
+ }
evaluation/nisqa.json ADDED
@@ -0,0 +1,1997 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_nisqa_v2",
3
+ "manifest": "release_polish_overnight_20260720/final_large200/combined_manifest.jsonl",
4
+ "sample_rate": 48000,
5
+ "dimensions": [
6
+ "mos",
7
+ "noisiness",
8
+ "discontinuity",
9
+ "coloration",
10
+ "loudness"
11
+ ],
12
+ "scope_note": "NISQA is an automated diagnostic and does not replace human TTS MOS.",
13
+ "systems": {
14
+ "inflect-micro-v2-finalist": {
15
+ "count": 200,
16
+ "mos": {
17
+ "mean": 5.066970911026001,
18
+ "median": 5.078833341598511,
19
+ "p05": 4.961752128601074,
20
+ "p95": 5.1485018014907835
21
+ },
22
+ "noisiness": {
23
+ "mean": 4.676522171497345,
24
+ "median": 4.6842615604400635,
25
+ "p05": 4.595613098144531,
26
+ "p95": 4.7530937671661375
27
+ },
28
+ "discontinuity": {
29
+ "mean": 4.893943982124329,
30
+ "median": 4.903385639190674,
31
+ "p05": 4.811065721511841,
32
+ "p95": 4.94633162021637
33
+ },
34
+ "coloration": {
35
+ "mean": 4.627148995399475,
36
+ "median": 4.634049654006958,
37
+ "p05": 4.566201853752136,
38
+ "p95": 4.674837756156921
39
+ },
40
+ "loudness": {
41
+ "mean": 4.75942345380783,
42
+ "median": 4.76876163482666,
43
+ "p05": 4.671535444259644,
44
+ "p95": 4.816184568405151
45
+ }
46
+ },
47
+ "inflect-nano-v2-finalist": {
48
+ "count": 200,
49
+ "mos": {
50
+ "mean": 5.05525309085846,
51
+ "median": 5.075676441192627,
52
+ "p05": 4.897062230110168,
53
+ "p95": 5.164716577529907
54
+ },
55
+ "noisiness": {
56
+ "mean": 4.667827854156494,
57
+ "median": 4.6796605587005615,
58
+ "p05": 4.581105875968933,
59
+ "p95": 4.7437347888946535
60
+ },
61
+ "discontinuity": {
62
+ "mean": 4.877564997673034,
63
+ "median": 4.899646997451782,
64
+ "p05": 4.796159672737121,
65
+ "p95": 4.948808050155639
66
+ },
67
+ "coloration": {
68
+ "mean": 4.615852819681168,
69
+ "median": 4.630635738372803,
70
+ "p05": 4.554482650756836,
71
+ "p95": 4.682383918762207
72
+ },
73
+ "loudness": {
74
+ "mean": 4.752314190864563,
75
+ "median": 4.773461818695068,
76
+ "p05": 4.634638261795044,
77
+ "p95": 4.819168114662171
78
+ }
79
+ },
80
+ "kitten-nano-bruno": {
81
+ "count": 200,
82
+ "mos": {
83
+ "mean": 4.296343866586685,
84
+ "median": 4.382935047149658,
85
+ "p05": 3.6946617722511292,
86
+ "p95": 4.641563630104065
87
+ },
88
+ "noisiness": {
89
+ "mean": 4.217127414941788,
90
+ "median": 4.269944429397583,
91
+ "p05": 3.7426937341690065,
92
+ "p95": 4.475915861129761
93
+ },
94
+ "discontinuity": {
95
+ "mean": 4.458463145494461,
96
+ "median": 4.521968603134155,
97
+ "p05": 4.075259256362915,
98
+ "p95": 4.675390267372131
99
+ },
100
+ "coloration": {
101
+ "mean": 4.04601433634758,
102
+ "median": 4.130239486694336,
103
+ "p05": 3.3240675568580627,
104
+ "p95": 4.339664316177368
105
+ },
106
+ "loudness": {
107
+ "mean": 4.311446378231048,
108
+ "median": 4.352288484573364,
109
+ "p05": 3.933194947242737,
110
+ "p95": 4.506394481658935
111
+ }
112
+ },
113
+ "piper-ryan-low": {
114
+ "count": 200,
115
+ "mos": {
116
+ "mean": 4.677609285116196,
117
+ "median": 4.746471166610718,
118
+ "p05": 4.175184011459351,
119
+ "p95": 4.969823598861694
120
+ },
121
+ "noisiness": {
122
+ "mean": 4.21767549276352,
123
+ "median": 4.272319793701172,
124
+ "p05": 3.704395222663879,
125
+ "p95": 4.5846161365509035
126
+ },
127
+ "discontinuity": {
128
+ "mean": 4.74571726322174,
129
+ "median": 4.798771619796753,
130
+ "p05": 4.451419758796692,
131
+ "p95": 4.914640951156616
132
+ },
133
+ "coloration": {
134
+ "mean": 4.336950881481171,
135
+ "median": 4.390848875045776,
136
+ "p05": 3.937146234512329,
137
+ "p95": 4.5602212905883786
138
+ },
139
+ "loudness": {
140
+ "mean": 4.334026387929916,
141
+ "median": 4.40546989440918,
142
+ "p05": 3.8327621936798097,
143
+ "p95": 4.62636170387268
144
+ }
145
+ }
146
+ },
147
+ "systems_by_category": {
148
+ "inflect-micro-v2-finalist::conversational": {
149
+ "count": 25,
150
+ "mos": {
151
+ "mean": 5.084625129699707,
152
+ "median": 5.088410377502441,
153
+ "p05": 5.009137058258057,
154
+ "p95": 5.160932826995849
155
+ },
156
+ "noisiness": {
157
+ "mean": 4.681895160675049,
158
+ "median": 4.686830997467041,
159
+ "p05": 4.587554836273194,
160
+ "p95": 4.76609468460083
161
+ },
162
+ "discontinuity": {
163
+ "mean": 4.904483070373535,
164
+ "median": 4.916714668273926,
165
+ "p05": 4.835331153869629,
166
+ "p95": 4.954121780395508
167
+ },
168
+ "coloration": {
169
+ "mean": 4.632850875854492,
170
+ "median": 4.62752628326416,
171
+ "p05": 4.59243221282959,
172
+ "p95": 4.674702262878418
173
+ },
174
+ "loudness": {
175
+ "mean": 4.751417484283447,
176
+ "median": 4.757721424102783,
177
+ "p05": 4.657126331329346,
178
+ "p95": 4.8176648139953615
179
+ }
180
+ },
181
+ "inflect-micro-v2-finalist::descriptive": {
182
+ "count": 16,
183
+ "mos": {
184
+ "mean": 5.080087423324585,
185
+ "median": 5.08701229095459,
186
+ "p05": 4.986552119255066,
187
+ "p95": 5.145286917686462
188
+ },
189
+ "noisiness": {
190
+ "mean": 4.681358724832535,
191
+ "median": 4.681260824203491,
192
+ "p05": 4.6196911334991455,
193
+ "p95": 4.759960651397705
194
+ },
195
+ "discontinuity": {
196
+ "mean": 4.892662018537521,
197
+ "median": 4.897983551025391,
198
+ "p05": 4.813859820365906,
199
+ "p95": 4.935849905014038
200
+ },
201
+ "coloration": {
202
+ "mean": 4.645889520645142,
203
+ "median": 4.651722431182861,
204
+ "p05": 4.59220552444458,
205
+ "p95": 4.679877758026123
206
+ },
207
+ "loudness": {
208
+ "mean": 4.780287712812424,
209
+ "median": 4.789277791976929,
210
+ "p05": 4.726202368736267,
211
+ "p95": 4.8107863664627075
212
+ }
213
+ },
214
+ "inflect-micro-v2-finalist::emotional": {
215
+ "count": 24,
216
+ "mos": {
217
+ "mean": 5.088000257809957,
218
+ "median": 5.0938146114349365,
219
+ "p05": 5.01492748260498,
220
+ "p95": 5.164720225334167
221
+ },
222
+ "noisiness": {
223
+ "mean": 4.688186625639598,
224
+ "median": 4.704174041748047,
225
+ "p05": 4.627037310600281,
226
+ "p95": 4.7350623369216915
227
+ },
228
+ "discontinuity": {
229
+ "mean": 4.915786584218343,
230
+ "median": 4.918968439102173,
231
+ "p05": 4.872726726531982,
232
+ "p95": 4.954227328300476
233
+ },
234
+ "coloration": {
235
+ "mean": 4.645064155260722,
236
+ "median": 4.647671222686768,
237
+ "p05": 4.613062524795533,
238
+ "p95": 4.6709935665130615
239
+ },
240
+ "loudness": {
241
+ "mean": 4.77682501077652,
242
+ "median": 4.781891107559204,
243
+ "p05": 4.7116050004959105,
244
+ "p95": 4.816433620452881
245
+ }
246
+ },
247
+ "inflect-micro-v2-finalist::homographs": {
248
+ "count": 6,
249
+ "mos": {
250
+ "mean": 5.071512937545776,
251
+ "median": 5.063185214996338,
252
+ "p05": 5.032201647758484,
253
+ "p95": 5.133068561553955
254
+ },
255
+ "noisiness": {
256
+ "mean": 4.6850950717926025,
257
+ "median": 4.690298557281494,
258
+ "p05": 4.648426294326782,
259
+ "p95": 4.7215656042099
260
+ },
261
+ "discontinuity": {
262
+ "mean": 4.8697404861450195,
263
+ "median": 4.881919860839844,
264
+ "p05": 4.785102367401123,
265
+ "p95": 4.932027578353882
266
+ },
267
+ "coloration": {
268
+ "mean": 4.63677438100179,
269
+ "median": 4.637820243835449,
270
+ "p05": 4.597443103790283,
271
+ "p95": 4.6673994064331055
272
+ },
273
+ "loudness": {
274
+ "mean": 4.751783529917399,
275
+ "median": 4.763185262680054,
276
+ "p05": 4.691569805145264,
277
+ "p95": 4.788424849510193
278
+ }
279
+ },
280
+ "inflect-micro-v2-finalist::long": {
281
+ "count": 15,
282
+ "mos": {
283
+ "mean": 5.060258356730143,
284
+ "median": 5.054421901702881,
285
+ "p05": 5.0101508617401125,
286
+ "p95": 5.117084503173828
287
+ },
288
+ "noisiness": {
289
+ "mean": 4.654302851359049,
290
+ "median": 4.660305976867676,
291
+ "p05": 4.600639009475708,
292
+ "p95": 4.6997123718261715
293
+ },
294
+ "discontinuity": {
295
+ "mean": 4.8977326075236,
296
+ "median": 4.895064830780029,
297
+ "p05": 4.8771138191223145,
298
+ "p95": 4.929110908508301
299
+ },
300
+ "coloration": {
301
+ "mean": 4.637342166900635,
302
+ "median": 4.638521671295166,
303
+ "p05": 4.607419109344482,
304
+ "p95": 4.663017654418946
305
+ },
306
+ "loudness": {
307
+ "mean": 4.76460796991984,
308
+ "median": 4.760266304016113,
309
+ "p05": 4.734184217453003,
310
+ "p95": 4.801061058044434
311
+ }
312
+ },
313
+ "inflect-micro-v2-finalist::long_range": {
314
+ "count": 6,
315
+ "mos": {
316
+ "mean": 5.100514650344849,
317
+ "median": 5.100477695465088,
318
+ "p05": 5.071790814399719,
319
+ "p95": 5.1220245361328125
320
+ },
321
+ "noisiness": {
322
+ "mean": 4.6899623076121015,
323
+ "median": 4.685410261154175,
324
+ "p05": 4.653762936592102,
325
+ "p95": 4.731876730918884
326
+ },
327
+ "discontinuity": {
328
+ "mean": 4.905282735824585,
329
+ "median": 4.907660722732544,
330
+ "p05": 4.873275279998779,
331
+ "p95": 4.9310362339019775
332
+ },
333
+ "coloration": {
334
+ "mean": 4.64597765604655,
335
+ "median": 4.651540756225586,
336
+ "p05": 4.622016668319702,
337
+ "p95": 4.662797212600708
338
+ },
339
+ "loudness": {
340
+ "mean": 4.777456760406494,
341
+ "median": 4.7702436447143555,
342
+ "p05": 4.7586283683776855,
343
+ "p95": 4.809190273284912
344
+ }
345
+ },
346
+ "inflect-micro-v2-finalist::names_places": {
347
+ "count": 6,
348
+ "mos": {
349
+ "mean": 5.066026131312053,
350
+ "median": 5.075019598007202,
351
+ "p05": 4.996745944023132,
352
+ "p95": 5.114146590232849
353
+ },
354
+ "noisiness": {
355
+ "mean": 4.686958074569702,
356
+ "median": 4.696692228317261,
357
+ "p05": 4.6366798877716064,
358
+ "p95": 4.726277112960815
359
+ },
360
+ "discontinuity": {
361
+ "mean": 4.901586612065633,
362
+ "median": 4.896145343780518,
363
+ "p05": 4.8806774616241455,
364
+ "p95": 4.926874995231628
365
+ },
366
+ "coloration": {
367
+ "mean": 4.630800088246663,
368
+ "median": 4.639263868331909,
369
+ "p05": 4.6018781661987305,
370
+ "p95": 4.64354145526886
371
+ },
372
+ "loudness": {
373
+ "mean": 4.764280796051025,
374
+ "median": 4.76242208480835,
375
+ "p05": 4.734339952468872,
376
+ "p95": 4.793020725250244
377
+ }
378
+ },
379
+ "inflect-micro-v2-finalist::narrative": {
380
+ "count": 24,
381
+ "mos": {
382
+ "mean": 5.087787350018819,
383
+ "median": 5.085803747177124,
384
+ "p05": 5.032889986038208,
385
+ "p95": 5.146023249626159
386
+ },
387
+ "noisiness": {
388
+ "mean": 4.690195957819621,
389
+ "median": 4.686437606811523,
390
+ "p05": 4.6295722961425785,
391
+ "p95": 4.769657254219055
392
+ },
393
+ "discontinuity": {
394
+ "mean": 4.902777910232544,
395
+ "median": 4.909550666809082,
396
+ "p05": 4.856229662895203,
397
+ "p95": 4.940158390998841
398
+ },
399
+ "coloration": {
400
+ "mean": 4.635043104489644,
401
+ "median": 4.634787321090698,
402
+ "p05": 4.597193908691406,
403
+ "p95": 4.667031073570252
404
+ },
405
+ "loudness": {
406
+ "mean": 4.767695367336273,
407
+ "median": 4.772120952606201,
408
+ "p05": 4.696179842948913,
409
+ "p95": 4.811451125144958
410
+ }
411
+ },
412
+ "inflect-micro-v2-finalist::numbers": {
413
+ "count": 6,
414
+ "mos": {
415
+ "mean": 5.027142604192098,
416
+ "median": 5.0750086307525635,
417
+ "p05": 4.768957138061523,
418
+ "p95": 5.158122301101685
419
+ },
420
+ "noisiness": {
421
+ "mean": 4.676971356074016,
422
+ "median": 4.707132339477539,
423
+ "p05": 4.529569625854492,
424
+ "p95": 4.754891514778137
425
+ },
426
+ "discontinuity": {
427
+ "mean": 4.855656226476033,
428
+ "median": 4.8860182762146,
429
+ "p05": 4.728206396102905,
430
+ "p95": 4.909510493278503
431
+ },
432
+ "coloration": {
433
+ "mean": 4.622106154759725,
434
+ "median": 4.644842147827148,
435
+ "p05": 4.52558708190918,
436
+ "p95": 4.668639302253723
437
+ },
438
+ "loudness": {
439
+ "mean": 4.763143301010132,
440
+ "median": 4.784612417221069,
441
+ "p05": 4.658777713775635,
442
+ "p95": 4.814141750335693
443
+ }
444
+ },
445
+ "inflect-micro-v2-finalist::punctuation": {
446
+ "count": 6,
447
+ "mos": {
448
+ "mean": 5.088138818740845,
449
+ "median": 5.094591856002808,
450
+ "p05": 5.051167130470276,
451
+ "p95": 5.1222697496414185
452
+ },
453
+ "noisiness": {
454
+ "mean": 4.704684654871623,
455
+ "median": 4.7150719165802,
456
+ "p05": 4.6764914989471436,
457
+ "p95": 4.72073769569397
458
+ },
459
+ "discontinuity": {
460
+ "mean": 4.90296729405721,
461
+ "median": 4.898035764694214,
462
+ "p05": 4.857134699821472,
463
+ "p95": 4.952345132827759
464
+ },
465
+ "coloration": {
466
+ "mean": 4.64106289545695,
467
+ "median": 4.6401262283325195,
468
+ "p05": 4.619646906852722,
469
+ "p95": 4.660913825035095
470
+ },
471
+ "loudness": {
472
+ "mean": 4.788663466771443,
473
+ "median": 4.781702518463135,
474
+ "p05": 4.768738746643066,
475
+ "p95": 4.814196944236755
476
+ }
477
+ },
478
+ "inflect-micro-v2-finalist::question": {
479
+ "count": 15,
480
+ "mos": {
481
+ "mean": 5.032029183705648,
482
+ "median": 5.039788722991943,
483
+ "p05": 4.93597674369812,
484
+ "p95": 5.123143720626831
485
+ },
486
+ "noisiness": {
487
+ "mean": 4.651882966359456,
488
+ "median": 4.659022331237793,
489
+ "p05": 4.59098072052002,
490
+ "p95": 4.698281526565552
491
+ },
492
+ "discontinuity": {
493
+ "mean": 4.8836393038431805,
494
+ "median": 4.8888983726501465,
495
+ "p05": 4.814854621887207,
496
+ "p95": 4.928069686889648
497
+ },
498
+ "coloration": {
499
+ "mean": 4.622194321950277,
500
+ "median": 4.621955871582031,
501
+ "p05": 4.573028326034546,
502
+ "p95": 4.69516134262085
503
+ },
504
+ "loudness": {
505
+ "mean": 4.736126931508382,
506
+ "median": 4.732144355773926,
507
+ "p05": 4.695382118225098,
508
+ "p95": 4.786236143112182
509
+ }
510
+ },
511
+ "inflect-micro-v2-finalist::rare_words": {
512
+ "count": 6,
513
+ "mos": {
514
+ "mean": 5.094142913818359,
515
+ "median": 5.094696283340454,
516
+ "p05": 5.068721175193787,
517
+ "p95": 5.115187883377075
518
+ },
519
+ "noisiness": {
520
+ "mean": 4.659267028172811,
521
+ "median": 4.673528671264648,
522
+ "p05": 4.602387070655823,
523
+ "p95": 4.70691704750061
524
+ },
525
+ "discontinuity": {
526
+ "mean": 4.917672395706177,
527
+ "median": 4.92179536819458,
528
+ "p05": 4.896824479103088,
529
+ "p95": 4.933650255203247
530
+ },
531
+ "coloration": {
532
+ "mean": 4.63420049349467,
533
+ "median": 4.6322290897369385,
534
+ "p05": 4.610973834991455,
535
+ "p95": 4.656691789627075
536
+ },
537
+ "loudness": {
538
+ "mean": 4.7646942138671875,
539
+ "median": 4.759293794631958,
540
+ "p05": 4.7546844482421875,
541
+ "p95": 4.784469723701477
542
+ }
543
+ },
544
+ "inflect-micro-v2-finalist::short": {
545
+ "count": 24,
546
+ "mos": {
547
+ "mean": 5.00382645924886,
548
+ "median": 5.0558905601501465,
549
+ "p05": 4.7033586502075195,
550
+ "p95": 5.122596263885498
551
+ },
552
+ "noisiness": {
553
+ "mean": 4.648739496866862,
554
+ "median": 4.684486627578735,
555
+ "p05": 4.342646741867066,
556
+ "p95": 4.755645680427551
557
+ },
558
+ "discontinuity": {
559
+ "mean": 4.857406497001648,
560
+ "median": 4.895836591720581,
561
+ "p05": 4.6450162649154665,
562
+ "p95": 4.954412913322448
563
+ },
564
+ "coloration": {
565
+ "mean": 4.56047276655833,
566
+ "median": 4.580313682556152,
567
+ "p05": 4.3241647481918335,
568
+ "p95": 4.665554308891297
569
+ },
570
+ "loudness": {
571
+ "mean": 4.7179668347040815,
572
+ "median": 4.747915506362915,
573
+ "p05": 4.540653777122498,
574
+ "p95": 4.818449997901917
575
+ }
576
+ },
577
+ "inflect-micro-v2-finalist::technical": {
578
+ "count": 21,
579
+ "mos": {
580
+ "mean": 5.077011244637625,
581
+ "median": 5.080066680908203,
582
+ "p05": 5.010731220245361,
583
+ "p95": 5.1484761238098145
584
+ },
585
+ "noisiness": {
586
+ "mean": 4.69018893014817,
587
+ "median": 4.693188190460205,
588
+ "p05": 4.631587505340576,
589
+ "p95": 4.7528228759765625
590
+ },
591
+ "discontinuity": {
592
+ "mean": 4.896800495329357,
593
+ "median": 4.901136875152588,
594
+ "p05": 4.8606648445129395,
595
+ "p95": 4.933905601501465
596
+ },
597
+ "coloration": {
598
+ "mean": 4.635323660714286,
599
+ "median": 4.639402389526367,
600
+ "p05": 4.605711936950684,
601
+ "p95": 4.683533668518066
602
+ },
603
+ "loudness": {
604
+ "mean": 4.768752438681466,
605
+ "median": 4.7783637046813965,
606
+ "p05": 4.717595100402832,
607
+ "p95": 4.8210554122924805
608
+ }
609
+ },
610
+ "inflect-nano-v2-finalist::conversational": {
611
+ "count": 25,
612
+ "mos": {
613
+ "mean": 5.096280899047851,
614
+ "median": 5.107004642486572,
615
+ "p05": 4.997963905334473,
616
+ "p95": 5.15976095199585
617
+ },
618
+ "noisiness": {
619
+ "mean": 4.687820911407471,
620
+ "median": 4.695287227630615,
621
+ "p05": 4.617572975158692,
622
+ "p95": 4.746697044372558
623
+ },
624
+ "discontinuity": {
625
+ "mean": 4.9022172164916995,
626
+ "median": 4.909136772155762,
627
+ "p05": 4.848705577850342,
628
+ "p95": 4.953138160705566
629
+ },
630
+ "coloration": {
631
+ "mean": 4.638227558135986,
632
+ "median": 4.635822296142578,
633
+ "p05": 4.595337581634522,
634
+ "p95": 4.6981409072875975
635
+ },
636
+ "loudness": {
637
+ "mean": 4.770219554901123,
638
+ "median": 4.775851726531982,
639
+ "p05": 4.677781009674073,
640
+ "p95": 4.831088256835938
641
+ }
642
+ },
643
+ "inflect-nano-v2-finalist::descriptive": {
644
+ "count": 16,
645
+ "mos": {
646
+ "mean": 5.080873131752014,
647
+ "median": 5.076714754104614,
648
+ "p05": 4.968343496322632,
649
+ "p95": 5.1620402336120605
650
+ },
651
+ "noisiness": {
652
+ "mean": 4.676590383052826,
653
+ "median": 4.682937383651733,
654
+ "p05": 4.589970350265503,
655
+ "p95": 4.762011528015137
656
+ },
657
+ "discontinuity": {
658
+ "mean": 4.890090584754944,
659
+ "median": 4.88960075378418,
660
+ "p05": 4.825415372848511,
661
+ "p95": 4.93328583240509
662
+ },
663
+ "coloration": {
664
+ "mean": 4.645678818225861,
665
+ "median": 4.652896165847778,
666
+ "p05": 4.596825480461121,
667
+ "p95": 4.675348997116089
668
+ },
669
+ "loudness": {
670
+ "mean": 4.7767637968063354,
671
+ "median": 4.792876958847046,
672
+ "p05": 4.6829081773757935,
673
+ "p95": 4.8231565952301025
674
+ }
675
+ },
676
+ "inflect-nano-v2-finalist::emotional": {
677
+ "count": 24,
678
+ "mos": {
679
+ "mean": 5.086991290251414,
680
+ "median": 5.082931995391846,
681
+ "p05": 5.011798572540283,
682
+ "p95": 5.184224057197571
683
+ },
684
+ "noisiness": {
685
+ "mean": 4.687529106934865,
686
+ "median": 4.690556764602661,
687
+ "p05": 4.652610564231873,
688
+ "p95": 4.7341481924057005
689
+ },
690
+ "discontinuity": {
691
+ "mean": 4.905580421288808,
692
+ "median": 4.907684564590454,
693
+ "p05": 4.844750595092774,
694
+ "p95": 4.955935835838318
695
+ },
696
+ "coloration": {
697
+ "mean": 4.6388090054194135,
698
+ "median": 4.638544797897339,
699
+ "p05": 4.582046365737915,
700
+ "p95": 4.678829598426819
701
+ },
702
+ "loudness": {
703
+ "mean": 4.771471639474233,
704
+ "median": 4.7630956172943115,
705
+ "p05": 4.732297706604004,
706
+ "p95": 4.81437463760376
707
+ }
708
+ },
709
+ "inflect-nano-v2-finalist::homographs": {
710
+ "count": 6,
711
+ "mos": {
712
+ "mean": 5.105078140894572,
713
+ "median": 5.101407051086426,
714
+ "p05": 5.05771005153656,
715
+ "p95": 5.166211366653442
716
+ },
717
+ "noisiness": {
718
+ "mean": 4.680643399556478,
719
+ "median": 4.714547395706177,
720
+ "p05": 4.599217414855957,
721
+ "p95": 4.730640530586243
722
+ },
723
+ "discontinuity": {
724
+ "mean": 4.894648313522339,
725
+ "median": 4.91188645362854,
726
+ "p05": 4.819316625595093,
727
+ "p95": 4.931559801101685
728
+ },
729
+ "coloration": {
730
+ "mean": 4.641849120457967,
731
+ "median": 4.6365134716033936,
732
+ "p05": 4.605284333229065,
733
+ "p95": 4.69017231464386
734
+ },
735
+ "loudness": {
736
+ "mean": 4.751724720001221,
737
+ "median": 4.740878582000732,
738
+ "p05": 4.723875880241394,
739
+ "p95": 4.797453761100769
740
+ }
741
+ },
742
+ "inflect-nano-v2-finalist::long": {
743
+ "count": 15,
744
+ "mos": {
745
+ "mean": 5.069772402445476,
746
+ "median": 5.073033809661865,
747
+ "p05": 5.036215829849243,
748
+ "p95": 5.104828643798828
749
+ },
750
+ "noisiness": {
751
+ "mean": 4.658925914764405,
752
+ "median": 4.658283233642578,
753
+ "p05": 4.625529336929321,
754
+ "p95": 4.685673522949219
755
+ },
756
+ "discontinuity": {
757
+ "mean": 4.893540032704672,
758
+ "median": 4.8910698890686035,
759
+ "p05": 4.875516033172607,
760
+ "p95": 4.91028470993042
761
+ },
762
+ "coloration": {
763
+ "mean": 4.634574890136719,
764
+ "median": 4.63601016998291,
765
+ "p05": 4.614579534530639,
766
+ "p95": 4.657125854492188
767
+ },
768
+ "loudness": {
769
+ "mean": 4.767716916402181,
770
+ "median": 4.775877475738525,
771
+ "p05": 4.734948587417603,
772
+ "p95": 4.792448711395264
773
+ }
774
+ },
775
+ "inflect-nano-v2-finalist::long_range": {
776
+ "count": 6,
777
+ "mos": {
778
+ "mean": 5.098030010859172,
779
+ "median": 5.107767343521118,
780
+ "p05": 5.051172614097595,
781
+ "p95": 5.140203595161438
782
+ },
783
+ "noisiness": {
784
+ "mean": 4.674017906188965,
785
+ "median": 4.665566921234131,
786
+ "p05": 4.6271902322769165,
787
+ "p95": 4.730582594871521
788
+ },
789
+ "discontinuity": {
790
+ "mean": 4.900173107783,
791
+ "median": 4.902195453643799,
792
+ "p05": 4.852349042892456,
793
+ "p95": 4.937187314033508
794
+ },
795
+ "coloration": {
796
+ "mean": 4.644658168156941,
797
+ "median": 4.6470630168914795,
798
+ "p05": 4.5962419509887695,
799
+ "p95": 4.689153432846069
800
+ },
801
+ "loudness": {
802
+ "mean": 4.755328257878621,
803
+ "median": 4.753864049911499,
804
+ "p05": 4.712657570838928,
805
+ "p95": 4.808353066444397
806
+ }
807
+ },
808
+ "inflect-nano-v2-finalist::names_places": {
809
+ "count": 6,
810
+ "mos": {
811
+ "mean": 5.064853111902873,
812
+ "median": 5.065268039703369,
813
+ "p05": 4.982016205787659,
814
+ "p95": 5.145555019378662
815
+ },
816
+ "noisiness": {
817
+ "mean": 4.667881488800049,
818
+ "median": 4.679285049438477,
819
+ "p05": 4.631013512611389,
820
+ "p95": 4.693566679954529
821
+ },
822
+ "discontinuity": {
823
+ "mean": 4.90459680557251,
824
+ "median": 4.908649206161499,
825
+ "p05": 4.873905539512634,
826
+ "p95": 4.930853366851807
827
+ },
828
+ "coloration": {
829
+ "mean": 4.628645420074463,
830
+ "median": 4.624447822570801,
831
+ "p05": 4.599899768829346,
832
+ "p95": 4.672908306121826
833
+ },
834
+ "loudness": {
835
+ "mean": 4.75518012046814,
836
+ "median": 4.750007629394531,
837
+ "p05": 4.713192820549011,
838
+ "p95": 4.8045361042022705
839
+ }
840
+ },
841
+ "inflect-nano-v2-finalist::narrative": {
842
+ "count": 24,
843
+ "mos": {
844
+ "mean": 5.045566161473592,
845
+ "median": 5.0831968784332275,
846
+ "p05": 5.014375329017639,
847
+ "p95": 5.1646970987319945
848
+ },
849
+ "noisiness": {
850
+ "mean": 4.664055486520131,
851
+ "median": 4.690380573272705,
852
+ "p05": 4.606567311286926,
853
+ "p95": 4.73886616230011
854
+ },
855
+ "discontinuity": {
856
+ "mean": 4.82183160384496,
857
+ "median": 4.902927398681641,
858
+ "p05": 4.848869848251343,
859
+ "p95": 4.942612719535828
860
+ },
861
+ "coloration": {
862
+ "mean": 4.604200392961502,
863
+ "median": 4.628083944320679,
864
+ "p05": 4.590324902534485,
865
+ "p95": 4.672721028327942
866
+ },
867
+ "loudness": {
868
+ "mean": 4.749283274014791,
869
+ "median": 4.772930860519409,
870
+ "p05": 4.7082852602005,
871
+ "p95": 4.806641840934754
872
+ }
873
+ },
874
+ "inflect-nano-v2-finalist::numbers": {
875
+ "count": 6,
876
+ "mos": {
877
+ "mean": 5.072862148284912,
878
+ "median": 5.077731609344482,
879
+ "p05": 5.019850969314575,
880
+ "p95": 5.106603622436523
881
+ },
882
+ "noisiness": {
883
+ "mean": 4.686765670776367,
884
+ "median": 4.68359637260437,
885
+ "p05": 4.616840839385986,
886
+ "p95": 4.766324877738953
887
+ },
888
+ "discontinuity": {
889
+ "mean": 4.886892000834147,
890
+ "median": 4.892426252365112,
891
+ "p05": 4.855258941650391,
892
+ "p95": 4.911754012107849
893
+ },
894
+ "coloration": {
895
+ "mean": 4.63871709505717,
896
+ "median": 4.637871742248535,
897
+ "p05": 4.6176005601882935,
898
+ "p95": 4.6588969230651855
899
+ },
900
+ "loudness": {
901
+ "mean": 4.781726042429606,
902
+ "median": 4.787912607192993,
903
+ "p05": 4.751368880271912,
904
+ "p95": 4.795805215835571
905
+ }
906
+ },
907
+ "inflect-nano-v2-finalist::punctuation": {
908
+ "count": 6,
909
+ "mos": {
910
+ "mean": 5.085851351420085,
911
+ "median": 5.0631513595581055,
912
+ "p05": 5.024835228919983,
913
+ "p95": 5.171986937522888
914
+ },
915
+ "noisiness": {
916
+ "mean": 4.703969558080037,
917
+ "median": 4.703524351119995,
918
+ "p05": 4.657694220542908,
919
+ "p95": 4.747106671333313
920
+ },
921
+ "discontinuity": {
922
+ "mean": 4.903408765792847,
923
+ "median": 4.898129224777222,
924
+ "p05": 4.876668572425842,
925
+ "p95": 4.934781432151794
926
+ },
927
+ "coloration": {
928
+ "mean": 4.637060165405273,
929
+ "median": 4.634654521942139,
930
+ "p05": 4.605042099952698,
931
+ "p95": 4.669329524040222
932
+ },
933
+ "loudness": {
934
+ "mean": 4.78837776184082,
935
+ "median": 4.79640531539917,
936
+ "p05": 4.761211514472961,
937
+ "p95": 4.803242802619934
938
+ }
939
+ },
940
+ "inflect-nano-v2-finalist::question": {
941
+ "count": 15,
942
+ "mos": {
943
+ "mean": 4.979924805959066,
944
+ "median": 5.0182952880859375,
945
+ "p05": 4.741870784759522,
946
+ "p95": 5.1213373184204105
947
+ },
948
+ "noisiness": {
949
+ "mean": 4.628494071960449,
950
+ "median": 4.635858058929443,
951
+ "p05": 4.521486711502075,
952
+ "p95": 4.701609420776367
953
+ },
954
+ "discontinuity": {
955
+ "mean": 4.85793924331665,
956
+ "median": 4.885674476623535,
957
+ "p05": 4.738079690933228,
958
+ "p95": 4.917272090911865
959
+ },
960
+ "coloration": {
961
+ "mean": 4.5775071144104,
962
+ "median": 4.617051601409912,
963
+ "p05": 4.444387197494507,
964
+ "p95": 4.643242597579956
965
+ },
966
+ "loudness": {
967
+ "mean": 4.703190549214681,
968
+ "median": 4.73654317855835,
969
+ "p05": 4.535270166397095,
970
+ "p95": 4.78399429321289
971
+ }
972
+ },
973
+ "inflect-nano-v2-finalist::rare_words": {
974
+ "count": 6,
975
+ "mos": {
976
+ "mean": 5.107121388117473,
977
+ "median": 5.117914915084839,
978
+ "p05": 5.063977837562561,
979
+ "p95": 5.129244446754456
980
+ },
981
+ "noisiness": {
982
+ "mean": 4.673150142033895,
983
+ "median": 4.663188695907593,
984
+ "p05": 4.640535593032837,
985
+ "p95": 4.726982116699219
986
+ },
987
+ "discontinuity": {
988
+ "mean": 4.929641803105672,
989
+ "median": 4.927665710449219,
990
+ "p05": 4.906194806098938,
991
+ "p95": 4.954469442367554
992
+ },
993
+ "coloration": {
994
+ "mean": 4.630059321721395,
995
+ "median": 4.638365030288696,
996
+ "p05": 4.594162583351135,
997
+ "p95": 4.654105544090271
998
+ },
999
+ "loudness": {
1000
+ "mean": 4.7749260266621905,
1001
+ "median": 4.776717901229858,
1002
+ "p05": 4.744807958602905,
1003
+ "p95": 4.799864172935486
1004
+ }
1005
+ },
1006
+ "inflect-nano-v2-finalist::short": {
1007
+ "count": 24,
1008
+ "mos": {
1009
+ "mean": 4.935086131095886,
1010
+ "median": 5.009885549545288,
1011
+ "p05": 4.485897254943848,
1012
+ "p95": 5.139957475662231
1013
+ },
1014
+ "noisiness": {
1015
+ "mean": 4.620879312356313,
1016
+ "median": 4.650858163833618,
1017
+ "p05": 4.42651948928833,
1018
+ "p95": 4.743213105201721
1019
+ },
1020
+ "discontinuity": {
1021
+ "mean": 4.819106638431549,
1022
+ "median": 4.871162176132202,
1023
+ "p05": 4.628170323371887,
1024
+ "p95": 4.954963111877442
1025
+ },
1026
+ "coloration": {
1027
+ "mean": 4.527366419633229,
1028
+ "median": 4.593937635421753,
1029
+ "p05": 4.329446601867676,
1030
+ "p95": 4.632969546318054
1031
+ },
1032
+ "loudness": {
1033
+ "mean": 4.681465268135071,
1034
+ "median": 4.726132154464722,
1035
+ "p05": 4.3697028160095215,
1036
+ "p95": 4.821282315254211
1037
+ }
1038
+ },
1039
+ "inflect-nano-v2-finalist::technical": {
1040
+ "count": 21,
1041
+ "mos": {
1042
+ "mean": 5.084664026896159,
1043
+ "median": 5.1049346923828125,
1044
+ "p05": 5.009692192077637,
1045
+ "p95": 5.1404852867126465
1046
+ },
1047
+ "noisiness": {
1048
+ "mean": 4.684552351633708,
1049
+ "median": 4.689305305480957,
1050
+ "p05": 4.618290901184082,
1051
+ "p95": 4.734136581420898
1052
+ },
1053
+ "discontinuity": {
1054
+ "mean": 4.895777043842134,
1055
+ "median": 4.899458408355713,
1056
+ "p05": 4.872351169586182,
1057
+ "p95": 4.929137229919434
1058
+ },
1059
+ "coloration": {
1060
+ "mean": 4.632753735496884,
1061
+ "median": 4.645188331604004,
1062
+ "p05": 4.5678019523620605,
1063
+ "p95": 4.675919532775879
1064
+ },
1065
+ "loudness": {
1066
+ "mean": 4.77231688726516,
1067
+ "median": 4.777512073516846,
1068
+ "p05": 4.6978583335876465,
1069
+ "p95": 4.826922416687012
1070
+ }
1071
+ },
1072
+ "kitten-nano-bruno::conversational": {
1073
+ "count": 25,
1074
+ "mos": {
1075
+ "mean": 4.268109455108642,
1076
+ "median": 4.365891933441162,
1077
+ "p05": 3.724268579483032,
1078
+ "p95": 4.5813354492187495
1079
+ },
1080
+ "noisiness": {
1081
+ "mean": 4.206264238357544,
1082
+ "median": 4.268477439880371,
1083
+ "p05": 3.781935453414917,
1084
+ "p95": 4.451886940002441
1085
+ },
1086
+ "discontinuity": {
1087
+ "mean": 4.43425760269165,
1088
+ "median": 4.476420879364014,
1089
+ "p05": 4.12585220336914,
1090
+ "p95": 4.643235874176026
1091
+ },
1092
+ "coloration": {
1093
+ "mean": 3.9630802345275877,
1094
+ "median": 4.025370121002197,
1095
+ "p05": 3.352046060562134,
1096
+ "p95": 4.303129863739014
1097
+ },
1098
+ "loudness": {
1099
+ "mean": 4.284803619384766,
1100
+ "median": 4.315358638763428,
1101
+ "p05": 3.9501728057861327,
1102
+ "p95": 4.480254650115967
1103
+ }
1104
+ },
1105
+ "kitten-nano-bruno::descriptive": {
1106
+ "count": 16,
1107
+ "mos": {
1108
+ "mean": 4.337514206767082,
1109
+ "median": 4.481396675109863,
1110
+ "p05": 3.7846506237983704,
1111
+ "p95": 4.6030203104019165
1112
+ },
1113
+ "noisiness": {
1114
+ "mean": 4.246744692325592,
1115
+ "median": 4.249030590057373,
1116
+ "p05": 3.911725401878357,
1117
+ "p95": 4.49030876159668
1118
+ },
1119
+ "discontinuity": {
1120
+ "mean": 4.498975157737732,
1121
+ "median": 4.531914949417114,
1122
+ "p05": 4.22223973274231,
1123
+ "p95": 4.714626669883728
1124
+ },
1125
+ "coloration": {
1126
+ "mean": 4.064449533820152,
1127
+ "median": 4.194642543792725,
1128
+ "p05": 3.42701518535614,
1129
+ "p95": 4.360018372535706
1130
+ },
1131
+ "loudness": {
1132
+ "mean": 4.313280254602432,
1133
+ "median": 4.363183498382568,
1134
+ "p05": 4.054816246032715,
1135
+ "p95": 4.472912549972534
1136
+ }
1137
+ },
1138
+ "kitten-nano-bruno::emotional": {
1139
+ "count": 24,
1140
+ "mos": {
1141
+ "mean": 4.236473699410756,
1142
+ "median": 4.346853256225586,
1143
+ "p05": 3.704057478904724,
1144
+ "p95": 4.672033452987671
1145
+ },
1146
+ "noisiness": {
1147
+ "mean": 4.175979008277257,
1148
+ "median": 4.2271201610565186,
1149
+ "p05": 3.8793925404548646,
1150
+ "p95": 4.410620450973511
1151
+ },
1152
+ "discontinuity": {
1153
+ "mean": 4.341713180144628,
1154
+ "median": 4.4773268699646,
1155
+ "p05": 3.63242826461792,
1156
+ "p95": 4.699916076660156
1157
+ },
1158
+ "coloration": {
1159
+ "mean": 4.048004696766536,
1160
+ "median": 4.0794007778167725,
1161
+ "p05": 3.7543776750564577,
1162
+ "p95": 4.3167815685272215
1163
+ },
1164
+ "loudness": {
1165
+ "mean": 4.310027033090591,
1166
+ "median": 4.314358949661255,
1167
+ "p05": 4.0880649328231815,
1168
+ "p95": 4.5249312162399296
1169
+ }
1170
+ },
1171
+ "kitten-nano-bruno::homographs": {
1172
+ "count": 6,
1173
+ "mos": {
1174
+ "mean": 4.515197118123372,
1175
+ "median": 4.531957626342773,
1176
+ "p05": 4.369951367378235,
1177
+ "p95": 4.628189921379089
1178
+ },
1179
+ "noisiness": {
1180
+ "mean": 4.410176515579224,
1181
+ "median": 4.436787366867065,
1182
+ "p05": 4.270847797393799,
1183
+ "p95": 4.505735397338867
1184
+ },
1185
+ "discontinuity": {
1186
+ "mean": 4.575532118479411,
1187
+ "median": 4.645455598831177,
1188
+ "p05": 4.4101516008377075,
1189
+ "p95": 4.667983055114746
1190
+ },
1191
+ "coloration": {
1192
+ "mean": 4.233264247576396,
1193
+ "median": 4.293304681777954,
1194
+ "p05": 3.989873945713043,
1195
+ "p95": 4.366684794425964
1196
+ },
1197
+ "loudness": {
1198
+ "mean": 4.433592478434245,
1199
+ "median": 4.456871032714844,
1200
+ "p05": 4.31841254234314,
1201
+ "p95": 4.521695613861084
1202
+ }
1203
+ },
1204
+ "kitten-nano-bruno::long": {
1205
+ "count": 15,
1206
+ "mos": {
1207
+ "mean": 4.36791795094808,
1208
+ "median": 4.38620138168335,
1209
+ "p05": 4.132020378112793,
1210
+ "p95": 4.565616655349731
1211
+ },
1212
+ "noisiness": {
1213
+ "mean": 4.249105930328369,
1214
+ "median": 4.253856182098389,
1215
+ "p05": 4.114522647857666,
1216
+ "p95": 4.375577020645141
1217
+ },
1218
+ "discontinuity": {
1219
+ "mean": 4.520841630299886,
1220
+ "median": 4.542236804962158,
1221
+ "p05": 4.3042370796203615,
1222
+ "p95": 4.662956047058105
1223
+ },
1224
+ "coloration": {
1225
+ "mean": 4.070761378606161,
1226
+ "median": 4.074793815612793,
1227
+ "p05": 3.8232643604278564,
1228
+ "p95": 4.270243358612061
1229
+ },
1230
+ "loudness": {
1231
+ "mean": 4.31005490620931,
1232
+ "median": 4.333577632904053,
1233
+ "p05": 4.141245031356812,
1234
+ "p95": 4.459735298156738
1235
+ }
1236
+ },
1237
+ "kitten-nano-bruno::long_range": {
1238
+ "count": 6,
1239
+ "mos": {
1240
+ "mean": 4.384116888046265,
1241
+ "median": 4.331946134567261,
1242
+ "p05": 4.258500933647156,
1243
+ "p95": 4.620538115501404
1244
+ },
1245
+ "noisiness": {
1246
+ "mean": 4.247405370076497,
1247
+ "median": 4.247298717498779,
1248
+ "p05": 4.1250319480896,
1249
+ "p95": 4.392456293106079
1250
+ },
1251
+ "discontinuity": {
1252
+ "mean": 4.519463777542114,
1253
+ "median": 4.500611782073975,
1254
+ "p05": 4.430265426635742,
1255
+ "p95": 4.656807541847229
1256
+ },
1257
+ "coloration": {
1258
+ "mean": 4.125454783439636,
1259
+ "median": 4.145297288894653,
1260
+ "p05": 3.961834490299225,
1261
+ "p95": 4.301606893539429
1262
+ },
1263
+ "loudness": {
1264
+ "mean": 4.354299783706665,
1265
+ "median": 4.348464012145996,
1266
+ "p05": 4.246163487434387,
1267
+ "p95": 4.494070291519165
1268
+ }
1269
+ },
1270
+ "kitten-nano-bruno::names_places": {
1271
+ "count": 6,
1272
+ "mos": {
1273
+ "mean": 4.3377305666605634,
1274
+ "median": 4.296597480773926,
1275
+ "p05": 4.132095217704773,
1276
+ "p95": 4.623205065727234
1277
+ },
1278
+ "noisiness": {
1279
+ "mean": 4.2723612785339355,
1280
+ "median": 4.21521782875061,
1281
+ "p05": 4.174685120582581,
1282
+ "p95": 4.449698209762573
1283
+ },
1284
+ "discontinuity": {
1285
+ "mean": 4.490620136260986,
1286
+ "median": 4.47933554649353,
1287
+ "p05": 4.330509066581726,
1288
+ "p95": 4.68049693107605
1289
+ },
1290
+ "coloration": {
1291
+ "mean": 4.108516176541646,
1292
+ "median": 4.118963241577148,
1293
+ "p05": 3.8788992762565613,
1294
+ "p95": 4.328705430030823
1295
+ },
1296
+ "loudness": {
1297
+ "mean": 4.319932619730632,
1298
+ "median": 4.335159778594971,
1299
+ "p05": 4.163914203643799,
1300
+ "p95": 4.487408638000488
1301
+ }
1302
+ },
1303
+ "kitten-nano-bruno::narrative": {
1304
+ "count": 24,
1305
+ "mos": {
1306
+ "mean": 4.341499249140422,
1307
+ "median": 4.40898585319519,
1308
+ "p05": 3.928095757961273,
1309
+ "p95": 4.632351756095886
1310
+ },
1311
+ "noisiness": {
1312
+ "mean": 4.276511361201604,
1313
+ "median": 4.305336952209473,
1314
+ "p05": 4.077909183502197,
1315
+ "p95": 4.424390602111816
1316
+ },
1317
+ "discontinuity": {
1318
+ "mean": 4.492856323719025,
1319
+ "median": 4.543771982192993,
1320
+ "p05": 4.328080081939698,
1321
+ "p95": 4.634611916542053
1322
+ },
1323
+ "coloration": {
1324
+ "mean": 4.059429377317429,
1325
+ "median": 4.1291587352752686,
1326
+ "p05": 3.869328033924103,
1327
+ "p95": 4.288502359390259
1328
+ },
1329
+ "loudness": {
1330
+ "mean": 4.317196319500606,
1331
+ "median": 4.3635547161102295,
1332
+ "p05": 4.1294492244720455,
1333
+ "p95": 4.472176361083984
1334
+ }
1335
+ },
1336
+ "kitten-nano-bruno::numbers": {
1337
+ "count": 6,
1338
+ "mos": {
1339
+ "mean": 4.490991989771525,
1340
+ "median": 4.500324726104736,
1341
+ "p05": 4.334450006484985,
1342
+ "p95": 4.601772665977478
1343
+ },
1344
+ "noisiness": {
1345
+ "mean": 4.35084851582845,
1346
+ "median": 4.356521129608154,
1347
+ "p05": 4.223582983016968,
1348
+ "p95": 4.4524102210998535
1349
+ },
1350
+ "discontinuity": {
1351
+ "mean": 4.5802295207977295,
1352
+ "median": 4.584545850753784,
1353
+ "p05": 4.5087326765060425,
1354
+ "p95": 4.6444796323776245
1355
+ },
1356
+ "coloration": {
1357
+ "mean": 4.193106333414714,
1358
+ "median": 4.179413318634033,
1359
+ "p05": 4.095273852348328,
1360
+ "p95": 4.313513875007629
1361
+ },
1362
+ "loudness": {
1363
+ "mean": 4.3892598152160645,
1364
+ "median": 4.393868446350098,
1365
+ "p05": 4.314112424850464,
1366
+ "p95": 4.456575393676758
1367
+ }
1368
+ },
1369
+ "kitten-nano-bruno::punctuation": {
1370
+ "count": 6,
1371
+ "mos": {
1372
+ "mean": 4.444781303405762,
1373
+ "median": 4.470665216445923,
1374
+ "p05": 4.245614409446716,
1375
+ "p95": 4.597299814224243
1376
+ },
1377
+ "noisiness": {
1378
+ "mean": 4.302037676175435,
1379
+ "median": 4.359004020690918,
1380
+ "p05": 3.9859930872917175,
1381
+ "p95": 4.48966372013092
1382
+ },
1383
+ "discontinuity": {
1384
+ "mean": 4.546312729517619,
1385
+ "median": 4.569594860076904,
1386
+ "p05": 4.3923163414001465,
1387
+ "p95": 4.6802650690078735
1388
+ },
1389
+ "coloration": {
1390
+ "mean": 4.184681256612142,
1391
+ "median": 4.184524297714233,
1392
+ "p05": 4.094428181648254,
1393
+ "p95": 4.266529321670532
1394
+ },
1395
+ "loudness": {
1396
+ "mean": 4.397162278493245,
1397
+ "median": 4.407179594039917,
1398
+ "p05": 4.298161149024963,
1399
+ "p95": 4.486984729766846
1400
+ }
1401
+ },
1402
+ "kitten-nano-bruno::question": {
1403
+ "count": 15,
1404
+ "mos": {
1405
+ "mean": 4.332177464167277,
1406
+ "median": 4.3222737312316895,
1407
+ "p05": 4.021507430076599,
1408
+ "p95": 4.56958212852478
1409
+ },
1410
+ "noisiness": {
1411
+ "mean": 4.289537938435872,
1412
+ "median": 4.275187969207764,
1413
+ "p05": 4.046637487411499,
1414
+ "p95": 4.495771837234497
1415
+ },
1416
+ "discontinuity": {
1417
+ "mean": 4.521408176422119,
1418
+ "median": 4.539500713348389,
1419
+ "p05": 4.275354957580566,
1420
+ "p95": 4.666641426086426
1421
+ },
1422
+ "coloration": {
1423
+ "mean": 4.084719880421956,
1424
+ "median": 4.127988338470459,
1425
+ "p05": 3.6590033531188966,
1426
+ "p95": 4.30285677909851
1427
+ },
1428
+ "loudness": {
1429
+ "mean": 4.327378718058268,
1430
+ "median": 4.333405017852783,
1431
+ "p05": 4.084225273132324,
1432
+ "p95": 4.475044012069702
1433
+ }
1434
+ },
1435
+ "kitten-nano-bruno::rare_words": {
1436
+ "count": 6,
1437
+ "mos": {
1438
+ "mean": 4.481317122777303,
1439
+ "median": 4.5381152629852295,
1440
+ "p05": 4.20686674118042,
1441
+ "p95": 4.621187210083008
1442
+ },
1443
+ "noisiness": {
1444
+ "mean": 4.321086645126343,
1445
+ "median": 4.344420909881592,
1446
+ "p05": 4.198361873626709,
1447
+ "p95": 4.388173937797546
1448
+ },
1449
+ "discontinuity": {
1450
+ "mean": 4.587893724441528,
1451
+ "median": 4.613213777542114,
1452
+ "p05": 4.445345520973206,
1453
+ "p95": 4.675289750099182
1454
+ },
1455
+ "coloration": {
1456
+ "mean": 4.175944407780965,
1457
+ "median": 4.221080780029297,
1458
+ "p05": 3.944853186607361,
1459
+ "p95": 4.305307149887085
1460
+ },
1461
+ "loudness": {
1462
+ "mean": 4.419040679931641,
1463
+ "median": 4.457917213439941,
1464
+ "p05": 4.27720308303833,
1465
+ "p95": 4.492039918899536
1466
+ }
1467
+ },
1468
+ "kitten-nano-bruno::short": {
1469
+ "count": 24,
1470
+ "mos": {
1471
+ "mean": 3.9046946863333383,
1472
+ "median": 4.064854860305786,
1473
+ "p05": 3.0507349491119387,
1474
+ "p95": 4.409884333610535
1475
+ },
1476
+ "noisiness": {
1477
+ "mean": 3.8803602953751883,
1478
+ "median": 3.9190186262130737,
1479
+ "p05": 3.4029449939727785,
1480
+ "p95": 4.2835283279418945
1481
+ },
1482
+ "discontinuity": {
1483
+ "mean": 4.235527475674947,
1484
+ "median": 4.321232318878174,
1485
+ "p05": 3.500464606285095,
1486
+ "p95": 4.551818752288819
1487
+ },
1488
+ "coloration": {
1489
+ "mean": 3.7684244414170585,
1490
+ "median": 4.013571739196777,
1491
+ "p05": 2.789597249031067,
1492
+ "p95": 4.2459431171417235
1493
+ },
1494
+ "loudness": {
1495
+ "mean": 4.146879871686299,
1496
+ "median": 4.253454923629761,
1497
+ "p05": 3.5685810327529905,
1498
+ "p95": 4.415100407600403
1499
+ }
1500
+ },
1501
+ "kitten-nano-bruno::technical": {
1502
+ "count": 21,
1503
+ "mos": {
1504
+ "mean": 4.435978344508579,
1505
+ "median": 4.519176006317139,
1506
+ "p05": 4.158945083618164,
1507
+ "p95": 4.643588066101074
1508
+ },
1509
+ "noisiness": {
1510
+ "mean": 4.325209140777588,
1511
+ "median": 4.366355895996094,
1512
+ "p05": 4.123382091522217,
1513
+ "p95": 4.441181182861328
1514
+ },
1515
+ "discontinuity": {
1516
+ "mean": 4.558866659800212,
1517
+ "median": 4.5804924964904785,
1518
+ "p05": 4.4042816162109375,
1519
+ "p95": 4.658003330230713
1520
+ },
1521
+ "coloration": {
1522
+ "mean": 4.172192494074504,
1523
+ "median": 4.218852519989014,
1524
+ "p05": 3.8767950534820557,
1525
+ "p95": 4.370019912719727
1526
+ },
1527
+ "loudness": {
1528
+ "mean": 4.387475876581101,
1529
+ "median": 4.432989597320557,
1530
+ "p05": 4.208746433258057,
1531
+ "p95": 4.494574546813965
1532
+ }
1533
+ },
1534
+ "piper-ryan-low::conversational": {
1535
+ "count": 25,
1536
+ "mos": {
1537
+ "mean": 4.654668464660644,
1538
+ "median": 4.692073345184326,
1539
+ "p05": 4.184446239471436,
1540
+ "p95": 5.024080848693847
1541
+ },
1542
+ "noisiness": {
1543
+ "mean": 4.193416728973388,
1544
+ "median": 4.196901321411133,
1545
+ "p05": 3.7953391075134277,
1546
+ "p95": 4.59900016784668
1547
+ },
1548
+ "discontinuity": {
1549
+ "mean": 4.751036472320557,
1550
+ "median": 4.779134750366211,
1551
+ "p05": 4.466301727294922,
1552
+ "p95": 4.940692138671875
1553
+ },
1554
+ "coloration": {
1555
+ "mean": 4.321975021362305,
1556
+ "median": 4.331526756286621,
1557
+ "p05": 3.9654213905334474,
1558
+ "p95": 4.594906425476074
1559
+ },
1560
+ "loudness": {
1561
+ "mean": 4.316827392578125,
1562
+ "median": 4.353581428527832,
1563
+ "p05": 3.9170026779174805,
1564
+ "p95": 4.622183227539062
1565
+ }
1566
+ },
1567
+ "piper-ryan-low::descriptive": {
1568
+ "count": 16,
1569
+ "mos": {
1570
+ "mean": 4.697682768106461,
1571
+ "median": 4.654010534286499,
1572
+ "p05": 4.431982517242432,
1573
+ "p95": 4.934651255607605
1574
+ },
1575
+ "noisiness": {
1576
+ "mean": 4.193892315030098,
1577
+ "median": 4.202427864074707,
1578
+ "p05": 3.7581629157066345,
1579
+ "p95": 4.605378746986389
1580
+ },
1581
+ "discontinuity": {
1582
+ "mean": 4.752126306295395,
1583
+ "median": 4.771055698394775,
1584
+ "p05": 4.598942399024963,
1585
+ "p95": 4.876826524734497
1586
+ },
1587
+ "coloration": {
1588
+ "mean": 4.328488498926163,
1589
+ "median": 4.333678245544434,
1590
+ "p05": 4.077860951423645,
1591
+ "p95": 4.560897469520569
1592
+ },
1593
+ "loudness": {
1594
+ "mean": 4.340002968907356,
1595
+ "median": 4.398552417755127,
1596
+ "p05": 3.837493121623993,
1597
+ "p95": 4.593310475349426
1598
+ }
1599
+ },
1600
+ "piper-ryan-low::emotional": {
1601
+ "count": 24,
1602
+ "mos": {
1603
+ "mean": 4.719764590263367,
1604
+ "median": 4.709111452102661,
1605
+ "p05": 4.455312633514405,
1606
+ "p95": 4.959488725662231
1607
+ },
1608
+ "noisiness": {
1609
+ "mean": 4.243843754132588,
1610
+ "median": 4.317485332489014,
1611
+ "p05": 3.901565968990326,
1612
+ "p95": 4.546926045417786
1613
+ },
1614
+ "discontinuity": {
1615
+ "mean": 4.782371163368225,
1616
+ "median": 4.806643724441528,
1617
+ "p05": 4.639827466011047,
1618
+ "p95": 4.879727530479431
1619
+ },
1620
+ "coloration": {
1621
+ "mean": 4.361620903015137,
1622
+ "median": 4.40766978263855,
1623
+ "p05": 4.126323080062866,
1624
+ "p95": 4.530363917350769
1625
+ },
1626
+ "loudness": {
1627
+ "mean": 4.347679088513057,
1628
+ "median": 4.38455867767334,
1629
+ "p05": 4.039763450622559,
1630
+ "p95": 4.618425297737121
1631
+ }
1632
+ },
1633
+ "piper-ryan-low::homographs": {
1634
+ "count": 6,
1635
+ "mos": {
1636
+ "mean": 4.692897717158,
1637
+ "median": 4.758767604827881,
1638
+ "p05": 4.383318662643433,
1639
+ "p95": 4.899083256721497
1640
+ },
1641
+ "noisiness": {
1642
+ "mean": 4.185900688171387,
1643
+ "median": 4.152200698852539,
1644
+ "p05": 3.9394330978393555,
1645
+ "p95": 4.451714992523193
1646
+ },
1647
+ "discontinuity": {
1648
+ "mean": 4.782031615575154,
1649
+ "median": 4.801535129547119,
1650
+ "p05": 4.609615445137024,
1651
+ "p95": 4.92097544670105
1652
+ },
1653
+ "coloration": {
1654
+ "mean": 4.329089641571045,
1655
+ "median": 4.369808197021484,
1656
+ "p05": 4.0782365798950195,
1657
+ "p95": 4.477747917175293
1658
+ },
1659
+ "loudness": {
1660
+ "mean": 4.376166303952535,
1661
+ "median": 4.473013401031494,
1662
+ "p05": 4.039314329624176,
1663
+ "p95": 4.565522193908691
1664
+ }
1665
+ },
1666
+ "piper-ryan-low::long": {
1667
+ "count": 15,
1668
+ "mos": {
1669
+ "mean": 4.80869197845459,
1670
+ "median": 4.848377704620361,
1671
+ "p05": 4.483882761001587,
1672
+ "p95": 4.940733575820923
1673
+ },
1674
+ "noisiness": {
1675
+ "mean": 4.2974871635437015,
1676
+ "median": 4.354221343994141,
1677
+ "p05": 3.9808048725128176,
1678
+ "p95": 4.518116760253906
1679
+ },
1680
+ "discontinuity": {
1681
+ "mean": 4.840127786000569,
1682
+ "median": 4.840728759765625,
1683
+ "p05": 4.760170793533325,
1684
+ "p95": 4.909868764877319
1685
+ },
1686
+ "coloration": {
1687
+ "mean": 4.4312187194824215,
1688
+ "median": 4.4727349281311035,
1689
+ "p05": 4.18483304977417,
1690
+ "p95": 4.54548921585083
1691
+ },
1692
+ "loudness": {
1693
+ "mean": 4.4669421195983885,
1694
+ "median": 4.497457027435303,
1695
+ "p05": 4.2082109451293945,
1696
+ "p95": 4.63002724647522
1697
+ }
1698
+ },
1699
+ "piper-ryan-low::long_range": {
1700
+ "count": 6,
1701
+ "mos": {
1702
+ "mean": 4.930895169576009,
1703
+ "median": 4.944577932357788,
1704
+ "p05": 4.8467124700546265,
1705
+ "p95": 4.971932411193848
1706
+ },
1707
+ "noisiness": {
1708
+ "mean": 4.457035144170125,
1709
+ "median": 4.476535320281982,
1710
+ "p05": 4.3066534996032715,
1711
+ "p95": 4.588317275047302
1712
+ },
1713
+ "discontinuity": {
1714
+ "mean": 4.8793595631917315,
1715
+ "median": 4.877874135971069,
1716
+ "p05": 4.84382426738739,
1717
+ "p95": 4.915496110916138
1718
+ },
1719
+ "coloration": {
1720
+ "mean": 4.535036166508992,
1721
+ "median": 4.538049221038818,
1722
+ "p05": 4.491033673286438,
1723
+ "p95": 4.584642171859741
1724
+ },
1725
+ "loudness": {
1726
+ "mean": 4.5655380090077715,
1727
+ "median": 4.5574610233306885,
1728
+ "p05": 4.4656243324279785,
1729
+ "p95": 4.68453574180603
1730
+ }
1731
+ },
1732
+ "piper-ryan-low::names_places": {
1733
+ "count": 6,
1734
+ "mos": {
1735
+ "mean": 4.7072140375773115,
1736
+ "median": 4.796809196472168,
1737
+ "p05": 4.30429208278656,
1738
+ "p95": 4.9243165254592896
1739
+ },
1740
+ "noisiness": {
1741
+ "mean": 4.2477126121521,
1742
+ "median": 4.33577036857605,
1743
+ "p05": 3.7818233966827393,
1744
+ "p95": 4.517517924308777
1745
+ },
1746
+ "discontinuity": {
1747
+ "mean": 4.770273605982463,
1748
+ "median": 4.815858602523804,
1749
+ "p05": 4.568361163139343,
1750
+ "p95": 4.864709258079529
1751
+ },
1752
+ "coloration": {
1753
+ "mean": 4.356080810228984,
1754
+ "median": 4.430967807769775,
1755
+ "p05": 4.043894469738007,
1756
+ "p95": 4.509103417396545
1757
+ },
1758
+ "loudness": {
1759
+ "mean": 4.3984503746032715,
1760
+ "median": 4.465851306915283,
1761
+ "p05": 4.12934935092926,
1762
+ "p95": 4.550064206123352
1763
+ }
1764
+ },
1765
+ "piper-ryan-low::narrative": {
1766
+ "count": 24,
1767
+ "mos": {
1768
+ "mean": 4.748206456502278,
1769
+ "median": 4.777817249298096,
1770
+ "p05": 4.467332792282105,
1771
+ "p95": 4.990657329559326
1772
+ },
1773
+ "noisiness": {
1774
+ "mean": 4.260942389567693,
1775
+ "median": 4.391161203384399,
1776
+ "p05": 3.7142462134361267,
1777
+ "p95": 4.530977749824524
1778
+ },
1779
+ "discontinuity": {
1780
+ "mean": 4.759474148352941,
1781
+ "median": 4.784025430679321,
1782
+ "p05": 4.53602397441864,
1783
+ "p95": 4.931457829475403
1784
+ },
1785
+ "coloration": {
1786
+ "mean": 4.399409870306651,
1787
+ "median": 4.427166938781738,
1788
+ "p05": 4.16161630153656,
1789
+ "p95": 4.595574378967285
1790
+ },
1791
+ "loudness": {
1792
+ "mean": 4.404503921667735,
1793
+ "median": 4.426621675491333,
1794
+ "p05": 4.116325545310974,
1795
+ "p95": 4.6394977331161495
1796
+ }
1797
+ },
1798
+ "piper-ryan-low::numbers": {
1799
+ "count": 6,
1800
+ "mos": {
1801
+ "mean": 4.82223637898763,
1802
+ "median": 4.839604377746582,
1803
+ "p05": 4.713255524635315,
1804
+ "p95": 4.917005658149719
1805
+ },
1806
+ "noisiness": {
1807
+ "mean": 4.235751112302144,
1808
+ "median": 4.258164644241333,
1809
+ "p05": 3.9398967623710632,
1810
+ "p95": 4.51856803894043
1811
+ },
1812
+ "discontinuity": {
1813
+ "mean": 4.80777891476949,
1814
+ "median": 4.8165178298950195,
1815
+ "p05": 4.730862617492676,
1816
+ "p95": 4.8688424825668335
1817
+ },
1818
+ "coloration": {
1819
+ "mean": 4.416639963785808,
1820
+ "median": 4.4333577156066895,
1821
+ "p05": 4.317197561264038,
1822
+ "p95": 4.476765394210815
1823
+ },
1824
+ "loudness": {
1825
+ "mean": 4.532079696655273,
1826
+ "median": 4.558504343032837,
1827
+ "p05": 4.4038039445877075,
1828
+ "p95": 4.630873441696167
1829
+ }
1830
+ },
1831
+ "piper-ryan-low::punctuation": {
1832
+ "count": 6,
1833
+ "mos": {
1834
+ "mean": 4.782399574915568,
1835
+ "median": 4.794174432754517,
1836
+ "p05": 4.696298837661743,
1837
+ "p95": 4.836727142333984
1838
+ },
1839
+ "noisiness": {
1840
+ "mean": 4.349801619847615,
1841
+ "median": 4.398617506027222,
1842
+ "p05": 4.114583492279053,
1843
+ "p95": 4.491045713424683
1844
+ },
1845
+ "discontinuity": {
1846
+ "mean": 4.786481936772664,
1847
+ "median": 4.811150312423706,
1848
+ "p05": 4.700279116630554,
1849
+ "p95": 4.841194748878479
1850
+ },
1851
+ "coloration": {
1852
+ "mean": 4.436877568562825,
1853
+ "median": 4.442990779876709,
1854
+ "p05": 4.381941556930542,
1855
+ "p95": 4.476019382476807
1856
+ },
1857
+ "loudness": {
1858
+ "mean": 4.424544016520183,
1859
+ "median": 4.472904443740845,
1860
+ "p05": 4.189082622528076,
1861
+ "p95": 4.53561532497406
1862
+ }
1863
+ },
1864
+ "piper-ryan-low::question": {
1865
+ "count": 15,
1866
+ "mos": {
1867
+ "mean": 4.661548042297364,
1868
+ "median": 4.661092281341553,
1869
+ "p05": 4.441859722137451,
1870
+ "p95": 4.874482297897339
1871
+ },
1872
+ "noisiness": {
1873
+ "mean": 4.0935604254404705,
1874
+ "median": 4.123035430908203,
1875
+ "p05": 3.751862072944641,
1876
+ "p95": 4.468990182876587
1877
+ },
1878
+ "discontinuity": {
1879
+ "mean": 4.797711404164632,
1880
+ "median": 4.798983097076416,
1881
+ "p05": 4.698680639266968,
1882
+ "p95": 4.89758996963501
1883
+ },
1884
+ "coloration": {
1885
+ "mean": 4.329330412546794,
1886
+ "median": 4.322445869445801,
1887
+ "p05": 4.124875593185425,
1888
+ "p95": 4.51252236366272
1889
+ },
1890
+ "loudness": {
1891
+ "mean": 4.3486167907714846,
1892
+ "median": 4.344979763031006,
1893
+ "p05": 4.18383936882019,
1894
+ "p95": 4.517670488357544
1895
+ }
1896
+ },
1897
+ "piper-ryan-low::rare_words": {
1898
+ "count": 6,
1899
+ "mos": {
1900
+ "mean": 4.762843290964763,
1901
+ "median": 4.740841388702393,
1902
+ "p05": 4.658040523529053,
1903
+ "p95": 4.8980982303619385
1904
+ },
1905
+ "noisiness": {
1906
+ "mean": 4.2261199951171875,
1907
+ "median": 4.204313039779663,
1908
+ "p05": 4.032719373703003,
1909
+ "p95": 4.419894814491272
1910
+ },
1911
+ "discontinuity": {
1912
+ "mean": 4.827534755071004,
1913
+ "median": 4.844349384307861,
1914
+ "p05": 4.766901850700378,
1915
+ "p95": 4.858636140823364
1916
+ },
1917
+ "coloration": {
1918
+ "mean": 4.37746540705363,
1919
+ "median": 4.3757643699646,
1920
+ "p05": 4.299429416656494,
1921
+ "p95": 4.457099676132202
1922
+ },
1923
+ "loudness": {
1924
+ "mean": 4.444287300109863,
1925
+ "median": 4.441998720169067,
1926
+ "p05": 4.357715368270874,
1927
+ "p95": 4.536978363990784
1928
+ }
1929
+ },
1930
+ "piper-ryan-low::short": {
1931
+ "count": 24,
1932
+ "mos": {
1933
+ "mean": 4.247917244831721,
1934
+ "median": 4.321672201156616,
1935
+ "p05": 3.153019607067108,
1936
+ "p95": 4.8218111276626585
1937
+ },
1938
+ "noisiness": {
1939
+ "mean": 3.9844569265842438,
1940
+ "median": 3.9660487174987793,
1941
+ "p05": 3.3954840779304503,
1942
+ "p95": 4.581504940986633
1943
+ },
1944
+ "discontinuity": {
1945
+ "mean": 4.4376387894153595,
1946
+ "median": 4.600477457046509,
1947
+ "p05": 3.160592067241669,
1948
+ "p95": 4.861507606506348
1949
+ },
1950
+ "coloration": {
1951
+ "mean": 4.042863676945369,
1952
+ "median": 4.179455518722534,
1953
+ "p05": 3.3848636388778686,
1954
+ "p95": 4.436772871017456
1955
+ },
1956
+ "loudness": {
1957
+ "mean": 3.869281530380249,
1958
+ "median": 3.918291926383972,
1959
+ "p05": 3.2730985641479493,
1960
+ "p95": 4.5648229122161865
1961
+ }
1962
+ },
1963
+ "piper-ryan-low::technical": {
1964
+ "count": 21,
1965
+ "mos": {
1966
+ "mean": 4.788875466301327,
1967
+ "median": 4.829463958740234,
1968
+ "p05": 4.677733421325684,
1969
+ "p95": 4.932690143585205
1970
+ },
1971
+ "noisiness": {
1972
+ "mean": 4.370282320749192,
1973
+ "median": 4.401300430297852,
1974
+ "p05": 4.043017387390137,
1975
+ "p95": 4.61635160446167
1976
+ },
1977
+ "discontinuity": {
1978
+ "mean": 4.816073871794201,
1979
+ "median": 4.8270368576049805,
1980
+ "p05": 4.7223334312438965,
1981
+ "p95": 4.894781112670898
1982
+ },
1983
+ "coloration": {
1984
+ "mean": 4.413149697440011,
1985
+ "median": 4.438601970672607,
1986
+ "p05": 4.2930908203125,
1987
+ "p95": 4.545473098754883
1988
+ },
1989
+ "loudness": {
1990
+ "mean": 4.469029449281239,
1991
+ "median": 4.480682849884033,
1992
+ "p05": 4.3372321128845215,
1993
+ "p95": 4.625380992889404
1994
+ }
1995
+ }
1996
+ }
1997
+ }
evaluation/package_qa.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_v2_release_package_qa_v1",
3
+ "package": "Inflect-Micro-v2",
4
+ "device": "cpu",
5
+ "sample_rate": 24000,
6
+ "manifest_files_verified": 27,
7
+ "load_seconds": 2.602567399997497,
8
+ "deterministic_same_seed": true,
9
+ "different_seed_changes_output": true,
10
+ "default_seconds": 4.096,
11
+ "slow_seconds": 2.912,
12
+ "fast_seconds": 2.1013333333333333,
13
+ "chunked_characters": 551,
14
+ "chunked_seconds": 34.90533333333333,
15
+ "default_waveform_sha256": "1e661f8d434358f243f926c2ad9c354cbd67552730be82b7000b4039718dcca7",
16
+ "peak": 0.6209497451782227,
17
+ "rms": 0.06188126638795305
18
+ }
evaluation/runtime/cpu.json ADDED
@@ -0,0 +1,400 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_runtime_v1",
3
+ "system": "micro180",
4
+ "provider": "cpu",
5
+ "utterances": 48,
6
+ "load_seconds": 1.2913346689892933,
7
+ "total_latency_seconds": 160.6842352389358,
8
+ "total_audio_seconds": 230.57066666666665,
9
+ "rtf": 0.6968979947099478,
10
+ "realtime_multiple": 1.4349302302357818,
11
+ "latency_mean_seconds": 3.347588234144496,
12
+ "latency_median_seconds": 3.2065962009946816,
13
+ "latency_p95_seconds": 4.397561740543461,
14
+ "rows": [
15
+ {
16
+ "id": "ood_001",
17
+ "category": "conversational",
18
+ "characters": 83,
19
+ "audio_seconds": 4.874666666666666,
20
+ "latency_seconds": 3.701560112996958,
21
+ "rtf": 0.7593463032679756
22
+ },
23
+ {
24
+ "id": "ood_002",
25
+ "category": "conversational",
26
+ "characters": 66,
27
+ "audio_seconds": 4.352,
28
+ "latency_seconds": 2.9957513550762087,
29
+ "rtf": 0.6883619841627318
30
+ },
31
+ {
32
+ "id": "ood_003",
33
+ "category": "conversational",
34
+ "characters": 81,
35
+ "audio_seconds": 4.682666666666667,
36
+ "latency_seconds": 4.003008865052834,
37
+ "rtf": 0.8548566767624218
38
+ },
39
+ {
40
+ "id": "ood_004",
41
+ "category": "conversational",
42
+ "characters": 77,
43
+ "audio_seconds": 4.426666666666667,
44
+ "latency_seconds": 2.894576665945351,
45
+ "rtf": 0.6538953311623534
46
+ },
47
+ {
48
+ "id": "ood_005",
49
+ "category": "conversational",
50
+ "characters": 63,
51
+ "audio_seconds": 3.925333333333333,
52
+ "latency_seconds": 2.8976474850205705,
53
+ "rtf": 0.738191444893148
54
+ },
55
+ {
56
+ "id": "ood_006",
57
+ "category": "conversational",
58
+ "characters": 65,
59
+ "audio_seconds": 3.8826666666666667,
60
+ "latency_seconds": 3.413119429955259,
61
+ "rtf": 0.8790657872480921
62
+ },
63
+ {
64
+ "id": "ood_007",
65
+ "category": "punctuation",
66
+ "characters": 94,
67
+ "audio_seconds": 6.272,
68
+ "latency_seconds": 4.897859386052005,
69
+ "rtf": 0.7809087031332916
70
+ },
71
+ {
72
+ "id": "ood_008",
73
+ "category": "punctuation",
74
+ "characters": 75,
75
+ "audio_seconds": 5.312,
76
+ "latency_seconds": 3.100503197987564,
77
+ "rtf": 0.5836790658862131
78
+ },
79
+ {
80
+ "id": "ood_009",
81
+ "category": "punctuation",
82
+ "characters": 63,
83
+ "audio_seconds": 3.904,
84
+ "latency_seconds": 2.68794972600881,
85
+ "rtf": 0.6885117126047157
86
+ },
87
+ {
88
+ "id": "ood_010",
89
+ "category": "punctuation",
90
+ "characters": 68,
91
+ "audio_seconds": 3.498666666666667,
92
+ "latency_seconds": 2.8092662420822307,
93
+ "rtf": 0.8029533847414912
94
+ },
95
+ {
96
+ "id": "ood_011",
97
+ "category": "punctuation",
98
+ "characters": 67,
99
+ "audio_seconds": 4.522666666666667,
100
+ "latency_seconds": 2.895203602965921,
101
+ "rtf": 0.6401540985331489
102
+ },
103
+ {
104
+ "id": "ood_012",
105
+ "category": "punctuation",
106
+ "characters": 73,
107
+ "audio_seconds": 4.469333333333333,
108
+ "latency_seconds": 2.89386862993706,
109
+ "rtf": 0.6474944726887814
110
+ },
111
+ {
112
+ "id": "ood_013",
113
+ "category": "numbers",
114
+ "characters": 96,
115
+ "audio_seconds": 5.834666666666666,
116
+ "latency_seconds": 3.6112114218994975,
117
+ "rtf": 0.6189233469891735
118
+ },
119
+ {
120
+ "id": "ood_014",
121
+ "category": "numbers",
122
+ "characters": 79,
123
+ "audio_seconds": 4.789333333333333,
124
+ "latency_seconds": 3.0953570218989626,
125
+ "rtf": 0.6463022735034025
126
+ },
127
+ {
128
+ "id": "ood_015",
129
+ "category": "numbers",
130
+ "characters": 80,
131
+ "audio_seconds": 4.288,
132
+ "latency_seconds": 2.897466129041277,
133
+ "rtf": 0.6757150487502978
134
+ },
135
+ {
136
+ "id": "ood_016",
137
+ "category": "numbers",
138
+ "characters": 78,
139
+ "audio_seconds": 4.864,
140
+ "latency_seconds": 3.198832436930388,
141
+ "rtf": 0.6576546950925963
142
+ },
143
+ {
144
+ "id": "ood_017",
145
+ "category": "numbers",
146
+ "characters": 80,
147
+ "audio_seconds": 4.576,
148
+ "latency_seconds": 3.2904248139820993,
149
+ "rtf": 0.7190613666918924
150
+ },
151
+ {
152
+ "id": "ood_018",
153
+ "category": "numbers",
154
+ "characters": 64,
155
+ "audio_seconds": 3.6053333333333333,
156
+ "latency_seconds": 3.0192351549630985,
157
+ "rtf": 0.837435786324824
158
+ },
159
+ {
160
+ "id": "ood_019",
161
+ "category": "technical",
162
+ "characters": 86,
163
+ "audio_seconds": 5.034666666666666,
164
+ "latency_seconds": 3.982155621983111,
165
+ "rtf": 0.7909472236460099
166
+ },
167
+ {
168
+ "id": "ood_020",
169
+ "category": "technical",
170
+ "characters": 93,
171
+ "audio_seconds": 5.514666666666667,
172
+ "latency_seconds": 3.6152250439627096,
173
+ "rtf": 0.6555654697708008
174
+ },
175
+ {
176
+ "id": "ood_021",
177
+ "category": "technical",
178
+ "characters": 89,
179
+ "audio_seconds": 5.44,
180
+ "latency_seconds": 3.5953551220009103,
181
+ "rtf": 0.6609108680148732
182
+ },
183
+ {
184
+ "id": "ood_022",
185
+ "category": "technical",
186
+ "characters": 86,
187
+ "audio_seconds": 5.354666666666667,
188
+ "latency_seconds": 3.214359965058975,
189
+ "rtf": 0.6002913281360137
190
+ },
191
+ {
192
+ "id": "ood_023",
193
+ "category": "technical",
194
+ "characters": 101,
195
+ "audio_seconds": 5.728,
196
+ "latency_seconds": 4.094791212002747,
197
+ "rtf": 0.7148727674585801
198
+ },
199
+ {
200
+ "id": "ood_024",
201
+ "category": "technical",
202
+ "characters": 82,
203
+ "audio_seconds": 5.397333333333333,
204
+ "latency_seconds": 3.7957619690569118,
205
+ "rtf": 0.703266175097007
206
+ },
207
+ {
208
+ "id": "ood_025",
209
+ "category": "names_places",
210
+ "characters": 71,
211
+ "audio_seconds": 4.074666666666666,
212
+ "latency_seconds": 2.8004974860232323,
213
+ "rtf": 0.6872948673159112
214
+ },
215
+ {
216
+ "id": "ood_026",
217
+ "category": "names_places",
218
+ "characters": 59,
219
+ "audio_seconds": 3.296,
220
+ "latency_seconds": 2.4975598730379716,
221
+ "rtf": 0.7577548158488991
222
+ },
223
+ {
224
+ "id": "ood_027",
225
+ "category": "names_places",
226
+ "characters": 72,
227
+ "audio_seconds": 3.936,
228
+ "latency_seconds": 2.894138294039294,
229
+ "rtf": 0.7352993633229914
230
+ },
231
+ {
232
+ "id": "ood_028",
233
+ "category": "names_places",
234
+ "characters": 61,
235
+ "audio_seconds": 3.616,
236
+ "latency_seconds": 2.8202893619891256,
237
+ "rtf": 0.7799472793111519
238
+ },
239
+ {
240
+ "id": "ood_029",
241
+ "category": "names_places",
242
+ "characters": 78,
243
+ "audio_seconds": 4.405333333333333,
244
+ "latency_seconds": 3.183753780904226,
245
+ "rtf": 0.7227043994183322
246
+ },
247
+ {
248
+ "id": "ood_030",
249
+ "category": "names_places",
250
+ "characters": 62,
251
+ "audio_seconds": 3.7973333333333334,
252
+ "latency_seconds": 3.5951710789231583,
253
+ "rtf": 0.9467620467669834
254
+ },
255
+ {
256
+ "id": "ood_031",
257
+ "category": "homographs",
258
+ "characters": 73,
259
+ "audio_seconds": 4.330666666666667,
260
+ "latency_seconds": 3.4116947089787573,
261
+ "rtf": 0.7877989629723116
262
+ },
263
+ {
264
+ "id": "ood_032",
265
+ "category": "homographs",
266
+ "characters": 78,
267
+ "audio_seconds": 3.968,
268
+ "latency_seconds": 3.682019405066967,
269
+ "rtf": 0.9279282774866349
270
+ },
271
+ {
272
+ "id": "ood_033",
273
+ "category": "homographs",
274
+ "characters": 60,
275
+ "audio_seconds": 3.36,
276
+ "latency_seconds": 2.7138323379913345,
277
+ "rtf": 0.8076881958307544
278
+ },
279
+ {
280
+ "id": "ood_034",
281
+ "category": "homographs",
282
+ "characters": 57,
283
+ "audio_seconds": 3.328,
284
+ "latency_seconds": 2.791520216036588,
285
+ "rtf": 0.8387981418379171
286
+ },
287
+ {
288
+ "id": "ood_035",
289
+ "category": "homographs",
290
+ "characters": 63,
291
+ "audio_seconds": 3.6266666666666665,
292
+ "latency_seconds": 2.8089981969678774,
293
+ "rtf": 0.774539944016878
294
+ },
295
+ {
296
+ "id": "ood_036",
297
+ "category": "homographs",
298
+ "characters": 51,
299
+ "audio_seconds": 2.9546666666666668,
300
+ "latency_seconds": 2.4995835940353572,
301
+ "rtf": 0.8459782019523998
302
+ },
303
+ {
304
+ "id": "ood_037",
305
+ "category": "long_range",
306
+ "characters": 122,
307
+ "audio_seconds": 6.496,
308
+ "latency_seconds": 4.397026888094842,
309
+ "rtf": 0.6768822179948957
310
+ },
311
+ {
312
+ "id": "ood_038",
313
+ "category": "long_range",
314
+ "characters": 141,
315
+ "audio_seconds": 7.8933333333333335,
316
+ "latency_seconds": 4.405088089988567,
317
+ "rtf": 0.5580770384276056
318
+ },
319
+ {
320
+ "id": "ood_039",
321
+ "category": "long_range",
322
+ "characters": 132,
323
+ "audio_seconds": 7.1146666666666665,
324
+ "latency_seconds": 4.397849738015793,
325
+ "rtf": 0.6181385501334042
326
+ },
327
+ {
328
+ "id": "ood_040",
329
+ "category": "long_range",
330
+ "characters": 122,
331
+ "audio_seconds": 6.176,
332
+ "latency_seconds": 3.894374215975404,
333
+ "rtf": 0.6305657733120796
334
+ },
335
+ {
336
+ "id": "ood_041",
337
+ "category": "long_range",
338
+ "characters": 124,
339
+ "audio_seconds": 7.424,
340
+ "latency_seconds": 4.009714661980979,
341
+ "rtf": 0.5401016516676965
342
+ },
343
+ {
344
+ "id": "ood_042",
345
+ "category": "long_range",
346
+ "characters": 124,
347
+ "audio_seconds": 6.261333333333333,
348
+ "latency_seconds": 4.010825427016243,
349
+ "rtf": 0.6405705004817255
350
+ },
351
+ {
352
+ "id": "ood_043",
353
+ "category": "rare_words",
354
+ "characters": 82,
355
+ "audio_seconds": 4.810666666666667,
356
+ "latency_seconds": 3.0846171140437946,
357
+ "rtf": 0.641203668384935
358
+ },
359
+ {
360
+ "id": "ood_044",
361
+ "category": "rare_words",
362
+ "characters": 78,
363
+ "audio_seconds": 4.512,
364
+ "latency_seconds": 2.8810565500753,
365
+ "rtf": 0.6385320368074691
366
+ },
367
+ {
368
+ "id": "ood_045",
369
+ "category": "rare_words",
370
+ "characters": 85,
371
+ "audio_seconds": 5.301333333333333,
372
+ "latency_seconds": 3.5225995020009577,
373
+ "rtf": 0.6644742521380077
374
+ },
375
+ {
376
+ "id": "ood_046",
377
+ "category": "rare_words",
378
+ "characters": 87,
379
+ "audio_seconds": 5.184,
380
+ "latency_seconds": 3.2946218359284103,
381
+ "rtf": 0.6355366195849557
382
+ },
383
+ {
384
+ "id": "ood_047",
385
+ "category": "rare_words",
386
+ "characters": 84,
387
+ "audio_seconds": 5.12,
388
+ "latency_seconds": 3.112685492960736,
389
+ "rtf": 0.6079463853438938
390
+ },
391
+ {
392
+ "id": "ood_048",
393
+ "category": "rare_words",
394
+ "characters": 90,
395
+ "audio_seconds": 5.034666666666666,
396
+ "latency_seconds": 3.3742267769994214,
397
+ "rtf": 0.6701986447959656
398
+ }
399
+ ]
400
+ }
evaluation/runtime/cuda.json ADDED
@@ -0,0 +1,400 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_runtime_v1",
3
+ "system": "micro180",
4
+ "provider": "cuda",
5
+ "utterances": 48,
6
+ "load_seconds": 1.362942800973542,
7
+ "total_latency_seconds": 3.877639473997988,
8
+ "total_audio_seconds": 230.59199999999998,
9
+ "rtf": 0.016816019089985725,
10
+ "realtime_multiple": 59.46710661119076,
11
+ "latency_mean_seconds": 0.08078415570829141,
12
+ "latency_median_seconds": 0.07884107751306146,
13
+ "latency_p95_seconds": 0.08621161602204666,
14
+ "rows": [
15
+ {
16
+ "id": "ood_001",
17
+ "category": "conversational",
18
+ "characters": 83,
19
+ "audio_seconds": 4.874666666666666,
20
+ "latency_seconds": 0.04850306594744325,
21
+ "rtf": 0.009950027204754497
22
+ },
23
+ {
24
+ "id": "ood_002",
25
+ "category": "conversational",
26
+ "characters": 66,
27
+ "audio_seconds": 4.352,
28
+ "latency_seconds": 0.04680907307192683,
29
+ "rtf": 0.01075576127571848
30
+ },
31
+ {
32
+ "id": "ood_003",
33
+ "category": "conversational",
34
+ "characters": 81,
35
+ "audio_seconds": 4.682666666666667,
36
+ "latency_seconds": 0.23080367501825094,
37
+ "rtf": 0.04928893971061737
38
+ },
39
+ {
40
+ "id": "ood_004",
41
+ "category": "conversational",
42
+ "characters": 77,
43
+ "audio_seconds": 4.426666666666667,
44
+ "latency_seconds": 0.07867441000416875,
45
+ "rtf": 0.017772833585279084
46
+ },
47
+ {
48
+ "id": "ood_005",
49
+ "category": "conversational",
50
+ "characters": 63,
51
+ "audio_seconds": 3.925333333333333,
52
+ "latency_seconds": 0.0762201170437038,
53
+ "rtf": 0.019417489056650084
54
+ },
55
+ {
56
+ "id": "ood_006",
57
+ "category": "conversational",
58
+ "characters": 65,
59
+ "audio_seconds": 3.8826666666666667,
60
+ "latency_seconds": 0.07715387898497283,
61
+ "rtf": 0.019871363062750558
62
+ },
63
+ {
64
+ "id": "ood_007",
65
+ "category": "punctuation",
66
+ "characters": 94,
67
+ "audio_seconds": 6.272,
68
+ "latency_seconds": 0.0797702909912914,
69
+ "rtf": 0.012718477517744164
70
+ },
71
+ {
72
+ "id": "ood_008",
73
+ "category": "punctuation",
74
+ "characters": 75,
75
+ "audio_seconds": 5.312,
76
+ "latency_seconds": 0.0779865289805457,
77
+ "rtf": 0.014681198979771404
78
+ },
79
+ {
80
+ "id": "ood_009",
81
+ "category": "punctuation",
82
+ "characters": 63,
83
+ "audio_seconds": 3.904,
84
+ "latency_seconds": 0.078226821962744,
85
+ "rtf": 0.02003760808471926
86
+ },
87
+ {
88
+ "id": "ood_010",
89
+ "category": "punctuation",
90
+ "characters": 68,
91
+ "audio_seconds": 3.498666666666667,
92
+ "latency_seconds": 0.07884166098665446,
93
+ "rtf": 0.022534773528959925
94
+ },
95
+ {
96
+ "id": "ood_011",
97
+ "category": "punctuation",
98
+ "characters": 67,
99
+ "audio_seconds": 4.522666666666667,
100
+ "latency_seconds": 0.07451220601797104,
101
+ "rtf": 0.01647528140137921
102
+ },
103
+ {
104
+ "id": "ood_012",
105
+ "category": "punctuation",
106
+ "characters": 73,
107
+ "audio_seconds": 4.469333333333333,
108
+ "latency_seconds": 0.07824564096517861,
109
+ "rtf": 0.01750722873624223
110
+ },
111
+ {
112
+ "id": "ood_013",
113
+ "category": "numbers",
114
+ "characters": 96,
115
+ "audio_seconds": 5.834666666666666,
116
+ "latency_seconds": 0.0768459300743416,
117
+ "rtf": 0.013170577595008273
118
+ },
119
+ {
120
+ "id": "ood_014",
121
+ "category": "numbers",
122
+ "characters": 79,
123
+ "audio_seconds": 4.789333333333333,
124
+ "latency_seconds": 0.07908053207211196,
125
+ "rtf": 0.016511803745569036
126
+ },
127
+ {
128
+ "id": "ood_015",
129
+ "category": "numbers",
130
+ "characters": 80,
131
+ "audio_seconds": 4.288,
132
+ "latency_seconds": 0.08663382101804018,
133
+ "rtf": 0.020203782886669817
134
+ },
135
+ {
136
+ "id": "ood_016",
137
+ "category": "numbers",
138
+ "characters": 78,
139
+ "audio_seconds": 4.864,
140
+ "latency_seconds": 0.07772980094887316,
141
+ "rtf": 0.01598063341876504
142
+ },
143
+ {
144
+ "id": "ood_017",
145
+ "category": "numbers",
146
+ "characters": 80,
147
+ "audio_seconds": 4.576,
148
+ "latency_seconds": 0.07818299101199955,
149
+ "rtf": 0.017085443840034867
150
+ },
151
+ {
152
+ "id": "ood_018",
153
+ "category": "numbers",
154
+ "characters": 64,
155
+ "audio_seconds": 3.6053333333333333,
156
+ "latency_seconds": 0.07488526694942266,
157
+ "rtf": 0.02077069164647448
158
+ },
159
+ {
160
+ "id": "ood_019",
161
+ "category": "technical",
162
+ "characters": 86,
163
+ "audio_seconds": 5.034666666666666,
164
+ "latency_seconds": 0.07327058492228389,
165
+ "rtf": 0.014553214695898549
166
+ },
167
+ {
168
+ "id": "ood_020",
169
+ "category": "technical",
170
+ "characters": 93,
171
+ "audio_seconds": 5.514666666666667,
172
+ "latency_seconds": 0.08311335602775216,
173
+ "rtf": 0.015071329066927978
174
+ },
175
+ {
176
+ "id": "ood_021",
177
+ "category": "technical",
178
+ "characters": 89,
179
+ "audio_seconds": 5.44,
180
+ "latency_seconds": 0.0815777350217104,
181
+ "rtf": 0.014995907173108527
182
+ },
183
+ {
184
+ "id": "ood_022",
185
+ "category": "technical",
186
+ "characters": 86,
187
+ "audio_seconds": 5.354666666666667,
188
+ "latency_seconds": 0.08467689098324627,
189
+ "rtf": 0.015813662409719795
190
+ },
191
+ {
192
+ "id": "ood_023",
193
+ "category": "technical",
194
+ "characters": 101,
195
+ "audio_seconds": 5.728,
196
+ "latency_seconds": 0.08542752102948725,
197
+ "rtf": 0.014914022526097635
198
+ },
199
+ {
200
+ "id": "ood_024",
201
+ "category": "technical",
202
+ "characters": 82,
203
+ "audio_seconds": 5.397333333333333,
204
+ "latency_seconds": 0.07980514410883188,
205
+ "rtf": 0.014786032134788516
206
+ },
207
+ {
208
+ "id": "ood_025",
209
+ "category": "names_places",
210
+ "characters": 71,
211
+ "audio_seconds": 4.074666666666666,
212
+ "latency_seconds": 0.08384539990220219,
213
+ "rtf": 0.02057724146814517
214
+ },
215
+ {
216
+ "id": "ood_026",
217
+ "category": "names_places",
218
+ "characters": 59,
219
+ "audio_seconds": 3.296,
220
+ "latency_seconds": 0.08088593499269336,
221
+ "rtf": 0.024540635616715222
222
+ },
223
+ {
224
+ "id": "ood_027",
225
+ "category": "names_places",
226
+ "characters": 72,
227
+ "audio_seconds": 3.936,
228
+ "latency_seconds": 0.08298896800260991,
229
+ "rtf": 0.021084595529118372
230
+ },
231
+ {
232
+ "id": "ood_028",
233
+ "category": "names_places",
234
+ "characters": 61,
235
+ "audio_seconds": 3.616,
236
+ "latency_seconds": 0.08673658303450793,
237
+ "rtf": 0.023986886901136043
238
+ },
239
+ {
240
+ "id": "ood_029",
241
+ "category": "names_places",
242
+ "characters": 78,
243
+ "audio_seconds": 4.405333333333333,
244
+ "latency_seconds": 0.08367316902149469,
245
+ "rtf": 0.018993606769407086
246
+ },
247
+ {
248
+ "id": "ood_030",
249
+ "category": "names_places",
250
+ "characters": 62,
251
+ "audio_seconds": 3.808,
252
+ "latency_seconds": 0.08070876495912671,
253
+ "rtf": 0.021194528613216048
254
+ },
255
+ {
256
+ "id": "ood_031",
257
+ "category": "homographs",
258
+ "characters": 73,
259
+ "audio_seconds": 4.330666666666667,
260
+ "latency_seconds": 0.0784687219420448,
261
+ "rtf": 0.0181193169509032
262
+ },
263
+ {
264
+ "id": "ood_032",
265
+ "category": "homographs",
266
+ "characters": 78,
267
+ "audio_seconds": 3.968,
268
+ "latency_seconds": 0.07884049403946847,
269
+ "rtf": 0.019869076118817657
270
+ },
271
+ {
272
+ "id": "ood_033",
273
+ "category": "homographs",
274
+ "characters": 60,
275
+ "audio_seconds": 3.36,
276
+ "latency_seconds": 0.08036918507423252,
277
+ "rtf": 0.02391940031971206
278
+ },
279
+ {
280
+ "id": "ood_034",
281
+ "category": "homographs",
282
+ "characters": 57,
283
+ "audio_seconds": 3.328,
284
+ "latency_seconds": 0.07696239301003516,
285
+ "rtf": 0.02312571905349614
286
+ },
287
+ {
288
+ "id": "ood_035",
289
+ "category": "homographs",
290
+ "characters": 63,
291
+ "audio_seconds": 3.6266666666666665,
292
+ "latency_seconds": 0.07384208799339831,
293
+ "rtf": 0.020360869851120858
294
+ },
295
+ {
296
+ "id": "ood_036",
297
+ "category": "homographs",
298
+ "characters": 51,
299
+ "audio_seconds": 2.9546666666666668,
300
+ "latency_seconds": 0.07758337398990989,
301
+ "rtf": 0.02625791087203629
302
+ },
303
+ {
304
+ "id": "ood_037",
305
+ "category": "long_range",
306
+ "characters": 122,
307
+ "audio_seconds": 6.496,
308
+ "latency_seconds": 0.08224317897111177,
309
+ "rtf": 0.012660587895799226
310
+ },
311
+ {
312
+ "id": "ood_038",
313
+ "category": "long_range",
314
+ "characters": 141,
315
+ "audio_seconds": 7.8933333333333335,
316
+ "latency_seconds": 0.08327149995602667,
317
+ "rtf": 0.010549598811996623
318
+ },
319
+ {
320
+ "id": "ood_039",
321
+ "category": "long_range",
322
+ "characters": 132,
323
+ "audio_seconds": 7.1146666666666665,
324
+ "latency_seconds": 0.08146983699407429,
325
+ "rtf": 0.011450970342120637
326
+ },
327
+ {
328
+ "id": "ood_040",
329
+ "category": "long_range",
330
+ "characters": 122,
331
+ "audio_seconds": 6.176,
332
+ "latency_seconds": 0.07936642598360777,
333
+ "rtf": 0.012850781409262916
334
+ },
335
+ {
336
+ "id": "ood_041",
337
+ "category": "long_range",
338
+ "characters": 124,
339
+ "audio_seconds": 7.424,
340
+ "latency_seconds": 0.07699621201027185,
341
+ "rtf": 0.010371257005693944
342
+ },
343
+ {
344
+ "id": "ood_042",
345
+ "category": "long_range",
346
+ "characters": 124,
347
+ "audio_seconds": 6.261333333333333,
348
+ "latency_seconds": 0.08013356593437493,
349
+ "rtf": 0.012798163213539437
350
+ },
351
+ {
352
+ "id": "ood_043",
353
+ "category": "rare_words",
354
+ "characters": 82,
355
+ "audio_seconds": 4.810666666666667,
356
+ "latency_seconds": 0.08174426795449108,
357
+ "rtf": 0.01699229516792359
358
+ },
359
+ {
360
+ "id": "ood_044",
361
+ "category": "rare_words",
362
+ "characters": 78,
363
+ "audio_seconds": 4.512,
364
+ "latency_seconds": 0.07456261909101158,
365
+ "rtf": 0.01652540316733413
366
+ },
367
+ {
368
+ "id": "ood_045",
369
+ "category": "rare_words",
370
+ "characters": 85,
371
+ "audio_seconds": 5.301333333333333,
372
+ "latency_seconds": 0.07449744909536093,
373
+ "rtf": 0.014052587228752692
374
+ },
375
+ {
376
+ "id": "ood_046",
377
+ "category": "rare_words",
378
+ "characters": 87,
379
+ "audio_seconds": 5.184,
380
+ "latency_seconds": 0.08111306896898896,
381
+ "rtf": 0.015646811143709288
382
+ },
383
+ {
384
+ "id": "ood_047",
385
+ "category": "rare_words",
386
+ "characters": 84,
387
+ "audio_seconds": 5.1306666666666665,
388
+ "latency_seconds": 0.07533228199463338,
389
+ "rtf": 0.014682747270263783
390
+ },
391
+ {
392
+ "id": "ood_048",
393
+ "category": "rare_words",
394
+ "characters": 90,
395
+ "audio_seconds": 5.034666666666666,
396
+ "latency_seconds": 0.055027046939358115,
397
+ "rtf": 0.010929630615603439
398
+ }
399
+ ]
400
+ }
evaluation/signal.json ADDED
The diff for this file is too large to render. See raw diff
 
evaluation/speaker_consistency.json ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_tts_speaker_consistency_ecapa_v1",
3
+ "encoder": "speechbrain/spkrec-ecapa-voxceleb",
4
+ "reference_filelist": "vits/filelists/inflect_qwenfull_dev_inflect_frontend.txt",
5
+ "reference_count": 32,
6
+ "scope_note": "Reference similarity is meaningful only for Inflect systems targeting this Mark teacher voice.",
7
+ "systems": {
8
+ "inflect-micro-v2-finalist": {
9
+ "count": 200,
10
+ "reference_cosine_mean": 0.904384995251894,
11
+ "reference_cosine_median": 0.922785758972168,
12
+ "reference_cosine_p05": 0.7935155183076859,
13
+ "reference_cosine_p95": 0.9520808905363083,
14
+ "system_centroid_cosine_mean": 0.9255932751297951,
15
+ "system_centroid_cosine_p05": 0.8265869051218033
16
+ },
17
+ "inflect-nano-v2-finalist": {
18
+ "count": 200,
19
+ "reference_cosine_mean": 0.8975338079035282,
20
+ "reference_cosine_median": 0.9178927540779114,
21
+ "reference_cosine_p05": 0.7353541612625122,
22
+ "reference_cosine_p95": 0.946146696805954,
23
+ "system_centroid_cosine_mean": 0.9236905339360237,
24
+ "system_centroid_cosine_p05": 0.7671847462654113
25
+ }
26
+ },
27
+ "systems_by_category": {
28
+ "inflect-micro-v2-finalist::conversational": {
29
+ "count": 25,
30
+ "reference_cosine_mean": 0.9139436888694763,
31
+ "reference_cosine_median": 0.9138887524604797,
32
+ "reference_cosine_p05": 0.8873096585273743,
33
+ "reference_cosine_p95": 0.9331717014312744,
34
+ "system_centroid_cosine_mean": 0.9376359748840332,
35
+ "system_centroid_cosine_p05": 0.9182322859764099
36
+ },
37
+ "inflect-micro-v2-finalist::descriptive": {
38
+ "count": 16,
39
+ "reference_cosine_mean": 0.9220070615410805,
40
+ "reference_cosine_median": 0.9219895601272583,
41
+ "reference_cosine_p05": 0.8994174748659134,
42
+ "reference_cosine_p95": 0.9472714811563492,
43
+ "system_centroid_cosine_mean": 0.9414824359118938,
44
+ "system_centroid_cosine_p05": 0.9153823703527451
45
+ },
46
+ "inflect-micro-v2-finalist::emotional": {
47
+ "count": 24,
48
+ "reference_cosine_mean": 0.9218592420220375,
49
+ "reference_cosine_median": 0.9236226677894592,
50
+ "reference_cosine_p05": 0.896009761095047,
51
+ "reference_cosine_p95": 0.9521152794361114,
52
+ "system_centroid_cosine_mean": 0.9431363741556803,
53
+ "system_centroid_cosine_p05": 0.9297195106744767
54
+ },
55
+ "inflect-micro-v2-finalist::homographs": {
56
+ "count": 6,
57
+ "reference_cosine_mean": 0.9016784826914469,
58
+ "reference_cosine_median": 0.9143826961517334,
59
+ "reference_cosine_p05": 0.8602327704429626,
60
+ "reference_cosine_p95": 0.9188010692596436,
61
+ "system_centroid_cosine_mean": 0.9227530062198639,
62
+ "system_centroid_cosine_p05": 0.8839313089847565
63
+ },
64
+ "inflect-micro-v2-finalist::long": {
65
+ "count": 15,
66
+ "reference_cosine_mean": 0.9424067616462708,
67
+ "reference_cosine_median": 0.9414758682250977,
68
+ "reference_cosine_p05": 0.9292309999465942,
69
+ "reference_cosine_p95": 0.9554343402385712,
70
+ "system_centroid_cosine_mean": 0.9673661112785339,
71
+ "system_centroid_cosine_p05": 0.9578824639320374
72
+ },
73
+ "inflect-micro-v2-finalist::long_range": {
74
+ "count": 6,
75
+ "reference_cosine_mean": 0.9468695918718973,
76
+ "reference_cosine_median": 0.9462248682975769,
77
+ "reference_cosine_p05": 0.9344874769449234,
78
+ "reference_cosine_p95": 0.9605438858270645,
79
+ "system_centroid_cosine_mean": 0.9628004630406698,
80
+ "system_centroid_cosine_p05": 0.9456458687782288
81
+ },
82
+ "inflect-micro-v2-finalist::names_places": {
83
+ "count": 6,
84
+ "reference_cosine_mean": 0.9157689611117045,
85
+ "reference_cosine_median": 0.9212036728858948,
86
+ "reference_cosine_p05": 0.8714424669742584,
87
+ "reference_cosine_p95": 0.9455099701881409,
88
+ "system_centroid_cosine_mean": 0.9366900821526846,
89
+ "system_centroid_cosine_p05": 0.8990786373615265
90
+ },
91
+ "inflect-micro-v2-finalist::narrative": {
92
+ "count": 24,
93
+ "reference_cosine_mean": 0.920630931854248,
94
+ "reference_cosine_median": 0.9232715964317322,
95
+ "reference_cosine_p05": 0.9030191957950592,
96
+ "reference_cosine_p95": 0.9469668209552765,
97
+ "system_centroid_cosine_mean": 0.9427467087904612,
98
+ "system_centroid_cosine_p05": 0.9199487030506134
99
+ },
100
+ "inflect-micro-v2-finalist::numbers": {
101
+ "count": 6,
102
+ "reference_cosine_mean": 0.9326508939266205,
103
+ "reference_cosine_median": 0.9313071966171265,
104
+ "reference_cosine_p05": 0.9172701835632324,
105
+ "reference_cosine_p95": 0.9509273022413254,
106
+ "system_centroid_cosine_mean": 0.951929897069931,
107
+ "system_centroid_cosine_p05": 0.9386754631996155
108
+ },
109
+ "inflect-micro-v2-finalist::punctuation": {
110
+ "count": 6,
111
+ "reference_cosine_mean": 0.9413094222545624,
112
+ "reference_cosine_median": 0.9380442202091217,
113
+ "reference_cosine_p05": 0.9343572407960892,
114
+ "reference_cosine_p95": 0.9544158428907394,
115
+ "system_centroid_cosine_mean": 0.9496991535027822,
116
+ "system_centroid_cosine_p05": 0.9365403354167938
117
+ },
118
+ "inflect-micro-v2-finalist::question": {
119
+ "count": 15,
120
+ "reference_cosine_mean": 0.891196087996165,
121
+ "reference_cosine_median": 0.891516387462616,
122
+ "reference_cosine_p05": 0.8434692203998566,
123
+ "reference_cosine_p95": 0.9273699462413788,
124
+ "system_centroid_cosine_mean": 0.9139200647672018,
125
+ "system_centroid_cosine_p05": 0.8653586804866791
126
+ },
127
+ "inflect-micro-v2-finalist::rare_words": {
128
+ "count": 6,
129
+ "reference_cosine_mean": 0.9439626634120941,
130
+ "reference_cosine_median": 0.944472998380661,
131
+ "reference_cosine_p05": 0.932221531867981,
132
+ "reference_cosine_p95": 0.9552849233150482,
133
+ "system_centroid_cosine_mean": 0.960921456416448,
134
+ "system_centroid_cosine_p05": 0.9522077441215515
135
+ },
136
+ "inflect-micro-v2-finalist::short": {
137
+ "count": 24,
138
+ "reference_cosine_mean": 0.7740145114560922,
139
+ "reference_cosine_median": 0.8164414763450623,
140
+ "reference_cosine_p05": 0.5830616354942322,
141
+ "reference_cosine_p95": 0.8809338510036469,
142
+ "system_centroid_cosine_mean": 0.800063061217467,
143
+ "system_centroid_cosine_p05": 0.617935448884964
144
+ },
145
+ "inflect-micro-v2-finalist::technical": {
146
+ "count": 21,
147
+ "reference_cosine_mean": 0.9277475504648118,
148
+ "reference_cosine_median": 0.9319859743118286,
149
+ "reference_cosine_p05": 0.9036513566970825,
150
+ "reference_cosine_p95": 0.9455512166023254,
151
+ "system_centroid_cosine_mean": 0.9439653442019508,
152
+ "system_centroid_cosine_p05": 0.9178051948547363
153
+ },
154
+ "inflect-nano-v2-finalist::conversational": {
155
+ "count": 25,
156
+ "reference_cosine_mean": 0.9092928338050842,
157
+ "reference_cosine_median": 0.9059870839118958,
158
+ "reference_cosine_p05": 0.8836398243904113,
159
+ "reference_cosine_p95": 0.9361859798431397,
160
+ "system_centroid_cosine_mean": 0.9373506665229797,
161
+ "system_centroid_cosine_p05": 0.9134238719940185
162
+ },
163
+ "inflect-nano-v2-finalist::descriptive": {
164
+ "count": 16,
165
+ "reference_cosine_mean": 0.9188673309981823,
166
+ "reference_cosine_median": 0.9206716418266296,
167
+ "reference_cosine_p05": 0.894992008805275,
168
+ "reference_cosine_p95": 0.9390376806259155,
169
+ "system_centroid_cosine_mean": 0.9431007876992226,
170
+ "system_centroid_cosine_p05": 0.9160878360271454
171
+ },
172
+ "inflect-nano-v2-finalist::emotional": {
173
+ "count": 24,
174
+ "reference_cosine_mean": 0.9127361178398132,
175
+ "reference_cosine_median": 0.9181386530399323,
176
+ "reference_cosine_p05": 0.8833694070577621,
177
+ "reference_cosine_p95": 0.9381078273057938,
178
+ "system_centroid_cosine_mean": 0.9406606604655584,
179
+ "system_centroid_cosine_p05": 0.9168506801128388
180
+ },
181
+ "inflect-nano-v2-finalist::homographs": {
182
+ "count": 6,
183
+ "reference_cosine_mean": 0.908358633518219,
184
+ "reference_cosine_median": 0.914387047290802,
185
+ "reference_cosine_p05": 0.8755304366350174,
186
+ "reference_cosine_p95": 0.9242926687002182,
187
+ "system_centroid_cosine_mean": 0.9307341972986857,
188
+ "system_centroid_cosine_p05": 0.8999106287956238
189
+ },
190
+ "inflect-nano-v2-finalist::long": {
191
+ "count": 15,
192
+ "reference_cosine_mean": 0.9382105032602946,
193
+ "reference_cosine_median": 0.9384850263595581,
194
+ "reference_cosine_p05": 0.9240471005439759,
195
+ "reference_cosine_p95": 0.9524985492229462,
196
+ "system_centroid_cosine_mean": 0.9689757903416951,
197
+ "system_centroid_cosine_p05": 0.9598417639732361
198
+ },
199
+ "inflect-nano-v2-finalist::long_range": {
200
+ "count": 6,
201
+ "reference_cosine_mean": 0.9405539035797119,
202
+ "reference_cosine_median": 0.9379453659057617,
203
+ "reference_cosine_p05": 0.9266068637371063,
204
+ "reference_cosine_p95": 0.9597494304180145,
205
+ "system_centroid_cosine_mean": 0.9636660019556681,
206
+ "system_centroid_cosine_p05": 0.9552741944789886
207
+ },
208
+ "inflect-nano-v2-finalist::names_places": {
209
+ "count": 6,
210
+ "reference_cosine_mean": 0.9113012353579203,
211
+ "reference_cosine_median": 0.9119357764720917,
212
+ "reference_cosine_p05": 0.8682866543531418,
213
+ "reference_cosine_p95": 0.9430657923221588,
214
+ "system_centroid_cosine_mean": 0.9352895220120748,
215
+ "system_centroid_cosine_p05": 0.903939962387085
216
+ },
217
+ "inflect-nano-v2-finalist::narrative": {
218
+ "count": 24,
219
+ "reference_cosine_mean": 0.9179906671245893,
220
+ "reference_cosine_median": 0.9208799004554749,
221
+ "reference_cosine_p05": 0.87001873254776,
222
+ "reference_cosine_p95": 0.9442918866872787,
223
+ "system_centroid_cosine_mean": 0.9444205164909363,
224
+ "system_centroid_cosine_p05": 0.917294853925705
225
+ },
226
+ "inflect-nano-v2-finalist::numbers": {
227
+ "count": 6,
228
+ "reference_cosine_mean": 0.9285498062769572,
229
+ "reference_cosine_median": 0.9288731813430786,
230
+ "reference_cosine_p05": 0.9102296233177185,
231
+ "reference_cosine_p95": 0.9489256143569946,
232
+ "system_centroid_cosine_mean": 0.9480861326058706,
233
+ "system_centroid_cosine_p05": 0.9378992468118668
234
+ },
235
+ "inflect-nano-v2-finalist::punctuation": {
236
+ "count": 6,
237
+ "reference_cosine_mean": 0.9254332383473715,
238
+ "reference_cosine_median": 0.9220907688140869,
239
+ "reference_cosine_p05": 0.9143942892551422,
240
+ "reference_cosine_p95": 0.9415996968746185,
241
+ "system_centroid_cosine_mean": 0.9461007714271545,
242
+ "system_centroid_cosine_p05": 0.937388151884079
243
+ },
244
+ "inflect-nano-v2-finalist::question": {
245
+ "count": 15,
246
+ "reference_cosine_mean": 0.8863190054893494,
247
+ "reference_cosine_median": 0.8815686702728271,
248
+ "reference_cosine_p05": 0.8477757394313812,
249
+ "reference_cosine_p95": 0.9280099689960479,
250
+ "system_centroid_cosine_mean": 0.9105314493179322,
251
+ "system_centroid_cosine_p05": 0.8822363495826722
252
+ },
253
+ "inflect-nano-v2-finalist::rare_words": {
254
+ "count": 6,
255
+ "reference_cosine_mean": 0.9354390203952789,
256
+ "reference_cosine_median": 0.9387620389461517,
257
+ "reference_cosine_p05": 0.9184393882751465,
258
+ "reference_cosine_p95": 0.9469597637653351,
259
+ "system_centroid_cosine_mean": 0.9583907326062521,
260
+ "system_centroid_cosine_p05": 0.954312339425087
261
+ },
262
+ "inflect-nano-v2-finalist::short": {
263
+ "count": 24,
264
+ "reference_cosine_mean": 0.7531019461651643,
265
+ "reference_cosine_median": 0.7750166356563568,
266
+ "reference_cosine_p05": 0.5188983529806137,
267
+ "reference_cosine_p95": 0.8795914500951767,
268
+ "system_centroid_cosine_mean": 0.7857235992948214,
269
+ "system_centroid_cosine_p05": 0.5674794971942901
270
+ },
271
+ "inflect-nano-v2-finalist::technical": {
272
+ "count": 21,
273
+ "reference_cosine_mean": 0.9235674398286002,
274
+ "reference_cosine_median": 0.928881049156189,
275
+ "reference_cosine_p05": 0.8994393348693848,
276
+ "reference_cosine_p95": 0.9459622502326965,
277
+ "system_centroid_cosine_mean": 0.9442476261229742,
278
+ "system_centroid_cosine_p05": 0.9218538403511047
279
+ }
280
+ }
281
+ }
evaluation/utmos22.json ADDED
The diff for this file is too large to render. See raw diff
 
inference.py ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import re
5
+ import sys
6
+ from pathlib import Path
7
+
8
+ import numpy as np
9
+ import soundfile as sf
10
+ import torch
11
+
12
+
13
+ PACKAGE_ROOT = Path(__file__).resolve().parent
14
+ RUNTIME_ROOT = PACKAGE_ROOT / "runtime"
15
+ sys.path.insert(0, str(RUNTIME_ROOT))
16
+ sys.path.insert(0, str(PACKAGE_ROOT))
17
+
18
+ import commons # noqa: E402
19
+ import utils # noqa: E402
20
+ from inflect_vits_frontend import run_vits_frontend # noqa: E402
21
+ from models import SynthesizerTrn # noqa: E402
22
+ from text import cleaned_text_to_sequence # noqa: E402
23
+ from text.symbols import symbols # noqa: E402
24
+
25
+
26
+ def split_text(text: str, limit: int = 280) -> list[str]:
27
+ normalized = " ".join(text.split())
28
+ sentences = [
29
+ part.strip()
30
+ for part in re.split(r"(?<=[.!?;:])\s+", normalized)
31
+ if part.strip()
32
+ ]
33
+ chunks: list[str] = []
34
+ for sentence in sentences or [normalized]:
35
+ while len(sentence) > limit:
36
+ search = sentence[: limit + 1]
37
+ punctuation = max(search.rfind(mark) for mark in (",", ";", ":"))
38
+ split_at = (
39
+ punctuation + 1
40
+ if punctuation >= limit // 2
41
+ else sentence.rfind(" ", 0, limit + 1)
42
+ )
43
+ if split_at < limit // 2:
44
+ split_at = limit
45
+ chunks.append(sentence[:split_at].strip())
46
+ sentence = sentence[split_at:].strip()
47
+ if sentence:
48
+ chunks.append(sentence)
49
+ return chunks
50
+
51
+
52
+ def boundary_pause_seconds(chunk: str) -> float:
53
+ ending = chunk.rstrip()[-1:] if chunk.strip() else ""
54
+ return {
55
+ "?": 0.28,
56
+ "!": 0.24,
57
+ ".": 0.22,
58
+ ";": 0.16,
59
+ ":": 0.13,
60
+ ",": 0.09,
61
+ }.get(ending, 0.08)
62
+
63
+
64
+ def edge_fade(waveform: np.ndarray, sample_rate: int, milliseconds: float = 5.0) -> np.ndarray:
65
+ frames = min(round(sample_rate * milliseconds / 1000.0), waveform.size // 2)
66
+ if frames <= 0:
67
+ return waveform
68
+ output = waveform.copy()
69
+ ramp = np.linspace(0.0, 1.0, frames, endpoint=True, dtype=np.float32)
70
+ output[:frames] *= ramp
71
+ output[-frames:] *= ramp[::-1]
72
+ return output
73
+
74
+
75
+ class InflectTTS:
76
+ def __init__(self, model_dir: str | Path = PACKAGE_ROOT, device: str = "cpu") -> None:
77
+ self.root = Path(model_dir).resolve()
78
+ self.device = torch.device(device)
79
+ self.hps = utils.get_hparams_from_file(str(self.root / "config.json"))
80
+ self.model = SynthesizerTrn(
81
+ len(symbols),
82
+ self.hps.data.filter_length // 2 + 1,
83
+ self.hps.train.segment_size // self.hps.data.hop_length,
84
+ **self.hps.model,
85
+ ).to(self.device).eval()
86
+ utils.load_checkpoint(str(self.root / "model.pth"), self.model, None)
87
+ self.sample_rate = int(self.hps.data.sampling_rate)
88
+
89
+ def _tokens(self, text: str) -> tuple[torch.Tensor, torch.Tensor]:
90
+ phonemes = run_vits_frontend(text).phoneme_text
91
+ sequence = cleaned_text_to_sequence(phonemes)
92
+ if self.hps.data.add_blank:
93
+ sequence = commons.intersperse(sequence, 0)
94
+ if not sequence:
95
+ raise ValueError("The text frontend produced no speakable tokens.")
96
+ tokens = torch.LongTensor(sequence).to(self.device).unsqueeze(0)
97
+ lengths = torch.LongTensor([tokens.size(1)]).to(self.device)
98
+ return tokens, lengths
99
+
100
+ @torch.inference_mode()
101
+ def synthesize(
102
+ self,
103
+ text: str,
104
+ *,
105
+ speed: float = 1.0,
106
+ variation: float = 0.667,
107
+ seed: int = 0,
108
+ ) -> np.ndarray:
109
+ normalized = " ".join(text.split())
110
+ if not normalized:
111
+ raise ValueError("Text must not be empty.")
112
+ if not 0.5 <= speed <= 2.0:
113
+ raise ValueError("speed must be between 0.5 and 2.0")
114
+ if not 0.0 <= variation <= 1.0:
115
+ raise ValueError("variation must be between 0.0 and 1.0")
116
+ chunks = split_text(normalized)
117
+ pieces: list[np.ndarray] = []
118
+ for index, chunk in enumerate(chunks):
119
+ if index:
120
+ pieces.append(
121
+ np.zeros(
122
+ round(self.sample_rate * boundary_pause_seconds(chunks[index - 1])),
123
+ dtype=np.float32,
124
+ )
125
+ )
126
+ tokens, lengths = self._tokens(chunk)
127
+ torch.manual_seed(seed + index)
128
+ if self.device.type == "cuda":
129
+ torch.cuda.manual_seed_all(seed + index)
130
+ waveform = self.model.infer(
131
+ tokens,
132
+ lengths,
133
+ noise_scale=variation,
134
+ noise_scale_w=0.8,
135
+ length_scale=1.0 / speed,
136
+ max_len=4000,
137
+ )[0][0, 0].float().cpu().numpy()
138
+ pieces.append(edge_fade(waveform, self.sample_rate))
139
+ return np.clip(np.concatenate(pieces), -1.0, 1.0)
140
+
141
+ def save(self, text: str, output: str | Path, **kwargs: object) -> Path:
142
+ destination = Path(output)
143
+ destination.parent.mkdir(parents=True, exist_ok=True)
144
+ sf.write(destination, self.synthesize(text, **kwargs), self.sample_rate)
145
+ return destination
146
+
147
+
148
+ def main() -> None:
149
+ parser = argparse.ArgumentParser(description="Run standalone Inflect v2 synthesis.")
150
+ parser.add_argument("--model-dir", type=Path, default=PACKAGE_ROOT)
151
+ parser.add_argument("--text", required=True)
152
+ parser.add_argument("--output", type=Path, required=True)
153
+ parser.add_argument("--device", default="cpu")
154
+ parser.add_argument("--speed", type=float, default=1.0)
155
+ parser.add_argument("--variation", type=float, default=0.667)
156
+ parser.add_argument("--seed", type=int, default=0)
157
+ args = parser.parse_args()
158
+ engine = InflectTTS(args.model_dir, args.device)
159
+ engine.save(
160
+ args.text,
161
+ args.output,
162
+ speed=args.speed,
163
+ variation=args.variation,
164
+ seed=args.seed,
165
+ )
166
+ print(f"wrote {args.output} at {engine.sample_rate} Hz")
167
+
168
+
169
+ if __name__ == "__main__":
170
+ main()
inflect_nano_v2_frontend.py ADDED
@@ -0,0 +1,341 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import json
5
+ import os
6
+ import re
7
+ import sys
8
+ from dataclasses import asdict, dataclass
9
+ from datetime import date
10
+ from pathlib import Path
11
+
12
+ from num2words import num2words
13
+
14
+
15
+ MONTHS = [
16
+ "January",
17
+ "February",
18
+ "March",
19
+ "April",
20
+ "May",
21
+ "June",
22
+ "July",
23
+ "August",
24
+ "September",
25
+ "October",
26
+ "November",
27
+ "December",
28
+ ]
29
+
30
+ WORD_OVERRIDES = {
31
+ "Qwen3": "Qwen three",
32
+ "Qwen": "Qwen",
33
+ "PyTorch": "pie torch",
34
+ "SQLite": "ess cue lite",
35
+ "USB-C": "you ess bee see",
36
+ "RTX 3060": "ar tee ex thirty sixty",
37
+ "RTX 3090": "ar tee ex thirty ninety",
38
+ "RTX 4090": "ar tee ex forty ninety",
39
+ "RTX 5080": "ar tee ex fifty eighty",
40
+ "RTX 5090": "ar tee ex fifty ninety",
41
+ }
42
+
43
+ LETTER_NAMES = {
44
+ "A": "ay",
45
+ "B": "bee",
46
+ "C": "see",
47
+ "D": "dee",
48
+ "E": "ee",
49
+ "F": "eff",
50
+ "G": "gee",
51
+ "H": "aitch",
52
+ "I": "eye",
53
+ "J": "jay",
54
+ "K": "kay",
55
+ "L": "ell",
56
+ "M": "em",
57
+ "N": "en",
58
+ "O": "oh",
59
+ "P": "pee",
60
+ "Q": "cue",
61
+ "R": "ar",
62
+ "S": "ess",
63
+ "T": "tee",
64
+ "U": "you",
65
+ "V": "vee",
66
+ "W": "double you",
67
+ "X": "ex",
68
+ "Y": "why",
69
+ "Z": "zee",
70
+ }
71
+
72
+ ABBREVIATIONS = {
73
+ "Dr.": "doctor",
74
+ "Mr.": "mister",
75
+ "Mrs.": "missus",
76
+ "Ms.": "miss",
77
+ "Prof.": "professor",
78
+ "St.": "saint",
79
+ "vs.": "versus",
80
+ "etc.": "et cetera",
81
+ "e.g.": "for example",
82
+ "i.e.": "that is",
83
+ }
84
+
85
+ PUNCT_TRANSLATION = str.maketrans(
86
+ {
87
+ "\u2018": "'",
88
+ "\u2019": "'",
89
+ "\u201c": '"',
90
+ "\u201d": '"',
91
+ "\u2013": "-",
92
+ "\u2014": ", ",
93
+ "\u2026": "...",
94
+ }
95
+ )
96
+
97
+ _ESPEAK_CONFIGURED = False
98
+ _ESPEAK_BACKEND = None
99
+
100
+
101
+ @dataclass
102
+ class FrontendOutput:
103
+ raw_text: str
104
+ normalized_text: str
105
+ phoneme_text: str
106
+ tokens: list[str]
107
+ token_count: int
108
+
109
+
110
+ def _words(value: int | float, *, ordinal: bool = False) -> str:
111
+ if ordinal:
112
+ text = num2words(value, to="ordinal")
113
+ else:
114
+ text = num2words(value)
115
+ return text.replace("-", " ").replace(",", "")
116
+
117
+
118
+ def _digit_words(text: str) -> str:
119
+ return " ".join(_words(int(ch)) for ch in text if ch.isdigit())
120
+
121
+
122
+ def _expand_money(match: re.Match[str]) -> str:
123
+ raw = match.group(1).replace(",", "")
124
+ dollars, _, cents = raw.partition(".")
125
+ dollar_count = int(dollars)
126
+ parts = [_words(dollar_count), "dollar" if dollar_count == 1 else "dollars"]
127
+ if cents:
128
+ cents = cents[:2].ljust(2, "0")
129
+ cent_count = int(cents)
130
+ if cent_count:
131
+ parts.extend(["and", _words(cent_count), "cent" if cent_count == 1 else "cents"])
132
+ return " ".join(parts)
133
+
134
+
135
+ def _expand_date_slash(match: re.Match[str]) -> str:
136
+ month = int(match.group(1))
137
+ day = int(match.group(2))
138
+ year = int(match.group(3))
139
+ try:
140
+ date(year, month, day)
141
+ except ValueError:
142
+ return match.group(0)
143
+ return f"{MONTHS[month - 1]} {_words(day, ordinal=True)} {_words(year)}"
144
+
145
+
146
+ def _expand_time(match: re.Match[str]) -> str:
147
+ hour = int(match.group(1))
148
+ minute = int(match.group(2))
149
+ suffix = match.group(3) or ""
150
+ pieces = [_words(hour)]
151
+ if minute == 0:
152
+ pieces.append("o clock")
153
+ elif minute < 10:
154
+ pieces.extend(["oh", _words(minute)])
155
+ else:
156
+ pieces.append(_words(minute))
157
+ if suffix:
158
+ suffix = suffix.lower().replace(".", "")
159
+ pieces.extend(list(suffix))
160
+ return " ".join(pieces)
161
+
162
+
163
+ def _expand_bare_hour_time(match: re.Match[str]) -> str:
164
+ hour = int(match.group(1))
165
+ suffix = re.sub(r"[^A-Za-z]", "", match.group(2)).lower()
166
+ return f"{_words(hour)} {' '.join(suffix)}"
167
+
168
+
169
+ def _expand_version(match: re.Match[str]) -> str:
170
+ return " point ".join(_words(int(part)) for part in match.group(0).split("."))
171
+
172
+
173
+ def _expand_decimal(match: re.Match[str]) -> str:
174
+ whole, frac = match.group(1), match.group(2)
175
+ return f"{_words(int(whole))} point {_digit_words(frac)}"
176
+
177
+
178
+ def _expand_ordinal(match: re.Match[str]) -> str:
179
+ return _words(int(match.group(1)), ordinal=True)
180
+
181
+
182
+ def _expand_number(match: re.Match[str]) -> str:
183
+ value = match.group(0).replace(",", "")
184
+ if len(value) >= 5 and not value.startswith("20"):
185
+ return _digit_words(value)
186
+ return _words(int(value))
187
+
188
+
189
+ def _expand_phone(match: re.Match[str]) -> str:
190
+ left, right = match.group(1), match.group(2)
191
+ return f"{_digit_words(left)}, {_digit_words(right)}"
192
+
193
+
194
+ def _expand_acronym(match: re.Match[str]) -> str:
195
+ acronym = match.group(0)
196
+ if len(acronym) <= 1:
197
+ return acronym
198
+ return " ".join(LETTER_NAMES.get(ch, ch) for ch in acronym)
199
+
200
+
201
+ def normalize_text(text: str) -> str:
202
+ text = text.translate(PUNCT_TRANSLATION)
203
+ text = re.sub(r"\s+", " ", text).strip()
204
+
205
+ for src, dst in WORD_OVERRIDES.items():
206
+ text = re.sub(rf"\b{re.escape(src)}\b", dst, text)
207
+ for src, dst in ABBREVIATIONS.items():
208
+ text = re.sub(rf"\b{re.escape(src)}", dst, text, flags=re.IGNORECASE)
209
+
210
+ text = re.sub(r"\b([A-Z])(?:\.([A-Z]))+\.", lambda m: " ".join(re.findall(r"[A-Z]", m.group(0))), text)
211
+ text = re.sub(r"\$(\d[\d,]*(?:\.\d{1,2})?)", _expand_money, text)
212
+ text = re.sub(r"\b(0?[1-9]|1[0-2])/(0?[1-9]|[12]\d|3[01])/(20\d{2}|19\d{2})\b", _expand_date_slash, text)
213
+ text = re.sub(r"\b(\d{1,2}):(\d{2})\s*([AaPp]\.?\s*[Mm]\.?)?\b", _expand_time, text)
214
+ text = re.sub(r"\b(\d{1,2})\s*([AaPp]\.?\s*[Mm]\.?)\b", _expand_bare_hour_time, text)
215
+ text = re.sub(r"\b(\d{3})-(\d{4})\b", _expand_phone, text)
216
+ text = re.sub(r"\b\d+(?:\.\d+){2,}\b", _expand_version, text)
217
+ text = re.sub(r"\b(\d+)\.(\d+)\b", _expand_decimal, text)
218
+ text = re.sub(r"\b(\d+)(st|nd|rd|th)\b", _expand_ordinal, text, flags=re.IGNORECASE)
219
+ text = re.sub(r"\b\d[\d,]*\b", _expand_number, text)
220
+ text = re.sub(r"\b[A-Z]{2,}\b", _expand_acronym, text)
221
+ text = re.sub(r"\s+([,;:.!?])", r"\1", text)
222
+ text = re.sub(r"([,;:.!?])(?=\S)", r"\1 ", text)
223
+ return re.sub(r"\s+", " ", text).strip()
224
+
225
+
226
+ def _configure_espeak() -> None:
227
+ global _ESPEAK_CONFIGURED
228
+ if _ESPEAK_CONFIGURED:
229
+ return
230
+
231
+ # Prefer the persistent distro library for long Linux preprocessing jobs.
232
+ # espeakng-loader extracts a temporary shared object, which can exhaust mmap
233
+ # resources when phonemizer repeatedly creates backends over a large corpus.
234
+ system_libraries = (
235
+ Path("/usr/lib/x86_64-linux-gnu/libespeak-ng.so.1"),
236
+ Path("/usr/lib/aarch64-linux-gnu/libespeak-ng.so.1"),
237
+ Path("/usr/lib64/libespeak-ng.so.1"),
238
+ )
239
+ system_library = next((path for path in system_libraries if path.is_file()), None)
240
+ if system_library is not None:
241
+ os.environ.setdefault("PHONEMIZER_ESPEAK_LIBRARY", str(system_library))
242
+ else:
243
+ import espeakng_loader
244
+
245
+ os.environ.setdefault("PHONEMIZER_ESPEAK_LIBRARY", espeakng_loader.get_library_path())
246
+ os.environ.setdefault("ESPEAK_DATA_PATH", espeakng_loader.get_data_path())
247
+ espeakng_loader.make_library_available()
248
+ espeakng_loader.load_library()
249
+ _ESPEAK_CONFIGURED = True
250
+
251
+
252
+ def phonemize_normalized_text(normalized_text: str) -> str:
253
+ global _ESPEAK_BACKEND
254
+ _configure_espeak()
255
+ from phonemizer.backend import EspeakBackend
256
+ from phonemizer.separator import Separator
257
+
258
+ if _ESPEAK_BACKEND is None:
259
+ _ESPEAK_BACKEND = EspeakBackend(
260
+ language="en-us",
261
+ preserve_punctuation=True,
262
+ with_stress=True,
263
+ language_switch="remove-flags",
264
+ )
265
+ return _ESPEAK_BACKEND.phonemize(
266
+ [normalized_text],
267
+ separator=Separator(phone=" ", word=" | ", syllable=""),
268
+ strip=True,
269
+ njobs=1,
270
+ )[0]
271
+
272
+
273
+ def tokenize_phoneme_text(phoneme_text: str) -> list[str]:
274
+ text = phoneme_text.replace("|", " <word> ")
275
+ text = re.sub(r"([,;:.!?])", r" \1 ", text)
276
+ tokens = [tok for tok in re.split(r"\s+", text.strip()) if tok]
277
+ return tokens
278
+
279
+
280
+ def run_frontend(text: str) -> FrontendOutput:
281
+ normalized = normalize_text(text)
282
+ phoneme_text = phonemize_normalized_text(normalized)
283
+ tokens = tokenize_phoneme_text(phoneme_text)
284
+ return FrontendOutput(
285
+ raw_text=text,
286
+ normalized_text=normalized,
287
+ phoneme_text=phoneme_text,
288
+ tokens=tokens,
289
+ token_count=len(tokens),
290
+ )
291
+
292
+
293
+ def _iter_input_rows(path: Path):
294
+ with path.open("r", encoding="utf-8") as f:
295
+ for line_number, line in enumerate(f, 1):
296
+ line = line.strip()
297
+ if not line:
298
+ continue
299
+ if line.startswith("{"):
300
+ row = json.loads(line)
301
+ text = row.get("target_text") or row.get("text") or row.get("source_text")
302
+ if not text:
303
+ raise ValueError(f"No text field found at {path}:{line_number}")
304
+ yield row, str(text)
305
+ else:
306
+ yield {"line_number": line_number}, line
307
+
308
+
309
+ def main() -> None:
310
+ if hasattr(sys.stdout, "reconfigure"):
311
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace")
312
+ if hasattr(sys.stderr, "reconfigure"):
313
+ sys.stderr.reconfigure(encoding="utf-8", errors="replace")
314
+
315
+ ap = argparse.ArgumentParser(description="Inflect-Nano-v2 English text frontend.")
316
+ ap.add_argument("--text", help="Single text string to normalize and phonemize.")
317
+ ap.add_argument("--input", type=Path, help="Text file or JSONL to process.")
318
+ ap.add_argument("--out", type=Path, help="Output JSONL path for --input.")
319
+ args = ap.parse_args()
320
+
321
+ if bool(args.text) == bool(args.input):
322
+ raise SystemExit("Provide exactly one of --text or --input.")
323
+
324
+ if args.text:
325
+ print(json.dumps(asdict(run_frontend(args.text)), ensure_ascii=False, indent=2))
326
+ return
327
+
328
+ if not args.out:
329
+ raise SystemExit("--out is required with --input.")
330
+
331
+ args.out.parent.mkdir(parents=True, exist_ok=True)
332
+ with args.out.open("w", encoding="utf-8") as f:
333
+ for metadata, text in _iter_input_rows(args.input):
334
+ result = asdict(run_frontend(text))
335
+ result["metadata"] = metadata
336
+ f.write(json.dumps(result, ensure_ascii=False) + "\n")
337
+ print(f"Wrote {args.out}")
338
+
339
+
340
+ if __name__ == "__main__":
341
+ main()
inflect_vits_frontend.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from dataclasses import dataclass
5
+
6
+ from inflect_nano_v2_frontend import _configure_espeak, normalize_text
7
+
8
+
9
+ # eSpeak is the general fallback. This table contains verified exceptions only;
10
+ # every entry is covered by a regression test and listening audit.
11
+ PHONEME_OVERRIDES = {
12
+ "sˈæskɐtʃˌuːən": "sɐskˈætʃəwən",
13
+ "flʊɹɹˈɛsənt": "flʊˈɹɛsənt",
14
+ }
15
+
16
+
17
+ @dataclass(frozen=True)
18
+ class VitsFrontendOutput:
19
+ raw_text: str
20
+ normalized_text: str
21
+ phoneme_text: str
22
+
23
+
24
+ def phonemize_normalized(normalized_text: str) -> str:
25
+ return phonemize_normalized_batch([normalized_text], jobs=1)[0]
26
+
27
+
28
+ def _apply_phoneme_overrides(phoneme_text: str) -> str:
29
+ for source, replacement in PHONEME_OVERRIDES.items():
30
+ phoneme_text = phoneme_text.replace(source, replacement)
31
+ return re.sub(r"\s+", " ", phoneme_text).strip()
32
+
33
+
34
+ def phonemize_normalized_batch(normalized_texts: list[str], *, jobs: int = 1) -> list[str]:
35
+ if not normalized_texts:
36
+ return []
37
+ _configure_espeak()
38
+ from phonemizer import phonemize
39
+
40
+ phoneme_texts = phonemize(
41
+ normalized_texts,
42
+ language="en-us",
43
+ backend="espeak",
44
+ strip=True,
45
+ preserve_punctuation=True,
46
+ with_stress=True,
47
+ njobs=jobs,
48
+ )
49
+ return [_apply_phoneme_overrides(text) for text in phoneme_texts]
50
+
51
+
52
+ def run_vits_frontend_batch(texts: list[str], *, jobs: int = 1) -> list[VitsFrontendOutput]:
53
+ normalized = [normalize_text(text) for text in texts]
54
+ phonemes = phonemize_normalized_batch(normalized, jobs=jobs)
55
+ return [
56
+ VitsFrontendOutput(raw_text=raw, normalized_text=norm, phoneme_text=phones)
57
+ for raw, norm, phones in zip(texts, normalized, phonemes, strict=True)
58
+ ]
59
+
60
+
61
+ def run_vits_frontend(text: str) -> VitsFrontendOutput:
62
+ normalized = normalize_text(text)
63
+ return VitsFrontendOutput(
64
+ raw_text=text,
65
+ normalized_text=normalized,
66
+ phoneme_text=phonemize_normalized(normalized),
67
+ )
model.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3eede065c9ccfa88ade0a5a9a5c23de34afcbbb32213e59aad44d5cf100fdee8
3
+ size 37529995
model.pth.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "inflect_vits_inference_checkpoint_v1",
3
+ "input": "vits/logs/inflect_micro_v2_release_decoder_polish_v1/G_186000.pth",
4
+ "output": "release_polish_overnight_20260720/release_candidates/Inflect-Micro-v2-male/model.pth",
5
+ "deployable_parameters": 9356513,
6
+ "tensor_count": 410,
7
+ "removed_tensor_count": 100,
8
+ "output_bytes": 37529995,
9
+ "sha256": "3eede065c9ccfa88ade0a5a9a5c23de34afcbbb32213e59aad44d5cf100fdee8"
10
+ }
release_manifest.json ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "family": "micro",
3
+ "source_label": "micro-186k",
4
+ "source_checkpoint": "vits/logs/inflect_micro_v2_release_decoder_polish_v1/G_186000.pth",
5
+ "source_config": "vits/configs/runtime_inflect_micro_v2_release_decoder_polish_v1.json",
6
+ "deployable_parameters": 9356513,
7
+ "parameter_limit_exclusive": 10000000,
8
+ "model_bytes": 37529995,
9
+ "sample_rate": 24000,
10
+ "smoke_audio_seconds": 3.968,
11
+ "standalone_cpu_smoke_audio_seconds": 3.616,
12
+ "files": [
13
+ {
14
+ "path": "LICENSE",
15
+ "bytes": 10455,
16
+ "sha256": "12c48c640d1d0baf158d45175a4238b9227c71c77f50b0d15791b8efc08cd793"
17
+ },
18
+ {
19
+ "path": "THIRD_PARTY_NOTICES.md",
20
+ "bytes": 892,
21
+ "sha256": "ef5343cd39713d313aefcfd09bb55fd6606ae2dacabeee13e0abdaa2e5b62589"
22
+ },
23
+ {
24
+ "path": "config.json",
25
+ "bytes": 1992,
26
+ "sha256": "627f66cf339155d4b8524ce78b65230d2e2f33850f6e3f87f2e46c1add7e27d7"
27
+ },
28
+ {
29
+ "path": "inference.py",
30
+ "bytes": 6019,
31
+ "sha256": "91943b432ab3fd3568658eff8f51301409f26f147041e46915db0b350e0efd98"
32
+ },
33
+ {
34
+ "path": "inflect_nano_v2_frontend.py",
35
+ "bytes": 10246,
36
+ "sha256": "9f800c7d86939b6eadbdec723d2411caaab820035f87de72ca8bece1a0ab3312"
37
+ },
38
+ {
39
+ "path": "inflect_vits_frontend.py",
40
+ "bytes": 2031,
41
+ "sha256": "70eb4cdb96b2752015f72be984f5e62e0f26d7dc80e708875601702057b95cc2"
42
+ },
43
+ {
44
+ "path": "model.pth",
45
+ "bytes": 37529995,
46
+ "sha256": "3eede065c9ccfa88ade0a5a9a5c23de34afcbbb32213e59aad44d5cf100fdee8"
47
+ },
48
+ {
49
+ "path": "model.pth.json",
50
+ "bytes": 443,
51
+ "sha256": "4c3d2d7c361792e3fe398745989dbf166dde40193122afdfbe8d2b1538b307ae"
52
+ },
53
+ {
54
+ "path": "requirements.txt",
55
+ "bytes": 128,
56
+ "sha256": "51778f4f55911af92747707c7d1e61191f7af5381efea9b71cf5a1abb2efcb03"
57
+ },
58
+ {
59
+ "path": "runtime/attentions.py",
60
+ "bytes": 11780,
61
+ "sha256": "dc65085d0e5d67da9f7603c98efad1e27eaf42c572f632a58080a5cc0f577f92"
62
+ },
63
+ {
64
+ "path": "runtime/commons.py",
65
+ "bytes": 4778,
66
+ "sha256": "f223dc1df791d2fb2953cfebd7014a7bc2a6ed614c05de6c17c7b44718a42cdd"
67
+ },
68
+ {
69
+ "path": "runtime/inflect_alias_free.py",
70
+ "bytes": 4670,
71
+ "sha256": "d2144153504a8986b737f2043468bf8bc73027ae8158cd1d8ca58ef54bf82ea7"
72
+ },
73
+ {
74
+ "path": "runtime/models.py",
75
+ "bytes": 21110,
76
+ "sha256": "2ae0d939079e8072d4bfa438f2e02f81503ab70665b3027af4f57324c6e65206"
77
+ },
78
+ {
79
+ "path": "runtime/modules.py",
80
+ "bytes": 13166,
81
+ "sha256": "f6514eaf7fab47d866ee0f9da94ca6ab6e45ebaf246151408da20dd14f242a75"
82
+ },
83
+ {
84
+ "path": "runtime/monotonic_align.py",
85
+ "bytes": 206,
86
+ "sha256": "16ca4890f3e0107250b4a522c0127779994a5a2b99fc35d6a27f93496a72153a"
87
+ },
88
+ {
89
+ "path": "runtime/text/LICENSE",
90
+ "bytes": 1053,
91
+ "sha256": "f89accd9d66f6a011f19997d7a21cf71a35ffe2e2d0911b5460cbd0cab52a581"
92
+ },
93
+ {
94
+ "path": "runtime/text/__init__.py",
95
+ "bytes": 1572,
96
+ "sha256": "7f88b1aae463edcb42e1dce6f5c4227b167b3f5a40853bc644c73db015c1e471"
97
+ },
98
+ {
99
+ "path": "runtime/text/cleaners.py",
100
+ "bytes": 2880,
101
+ "sha256": "11dc7325547290e529c597e620f3aaf8d0bd8a2a2987d48eb42d2289534e42d1"
102
+ },
103
+ {
104
+ "path": "runtime/text/symbols.py",
105
+ "bytes": 642,
106
+ "sha256": "e8871acbc37bd79f61ed063a2b3aa20e20555ddec15c6b9f29e1ab05e7f8b776"
107
+ },
108
+ {
109
+ "path": "runtime/transforms.py",
110
+ "bytes": 8490,
111
+ "sha256": "9d95e518610c35581c4f1c3b4e8eeca91b7c3d6899e7f0ebb86a0387394d3046"
112
+ },
113
+ {
114
+ "path": "runtime/utils.py",
115
+ "bytes": 7526,
116
+ "sha256": "db11ba9b5ffd342abffc59229de7575a7d9e23468f91c6398e70eb4e01636716"
117
+ },
118
+ {
119
+ "path": "smoke/manifest.jsonl",
120
+ "bytes": 275,
121
+ "sha256": "7f41bbcd0a8c1cb302b7309a51847b92794d3fb1a5d5e055eb68c535b7a66bb3"
122
+ },
123
+ {
124
+ "path": "smoke/release_smoke.wav",
125
+ "bytes": 190508,
126
+ "sha256": "31be94d7b74095b22b68dd5750596e23406e9a85d51bb9fbc49969bfa68abdbf"
127
+ },
128
+ {
129
+ "path": "smoke/standalone_cpu.wav",
130
+ "bytes": 173612,
131
+ "sha256": "912f69948b48abdc1227131b8fc07e1fce4ab7b6046016c9e9b63c4b729a5152"
132
+ },
133
+ {
134
+ "path": "smoke_prompt.jsonl",
135
+ "bytes": 127,
136
+ "sha256": "a5aad12c2a13cca7807e6e0f9df254cb57183954b0b23c64f94d8cc732c06e0e"
137
+ },
138
+ {
139
+ "path": "third_party/BIGVGAN_LICENSE.txt",
140
+ "bytes": 1097,
141
+ "sha256": "330cef542a6aa375ae13de52ab691f5cf8265bcfeee5d37fff67c291daef1dcf"
142
+ },
143
+ {
144
+ "path": "third_party/VITS_LICENSE.txt",
145
+ "bytes": 1090,
146
+ "sha256": "1cdf858b4d555567398b378b4a0166e97f7908c56607101b8bf9bb6754cdff3f"
147
+ }
148
+ ]
149
+ }
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ torch>=2.6
2
+ numpy>=1.26,<3
3
+ scipy>=1.13
4
+ soundfile>=0.13
5
+ phonemizer>=3.3
6
+ espeakng-loader>=0.2.4
7
+ num2words>=0.5.14
8
+ Unidecode>=1.3.8
runtime/attentions.py ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import math
3
+ import numpy as np
4
+ import torch
5
+ from torch import nn
6
+ from torch.nn import functional as F
7
+
8
+ import commons
9
+ import modules
10
+ from modules import LayerNorm
11
+
12
+
13
+ class Encoder(nn.Module):
14
+ def __init__(self, hidden_channels, filter_channels, n_heads, n_layers, kernel_size=1, p_dropout=0., window_size=4, **kwargs):
15
+ super().__init__()
16
+ self.hidden_channels = hidden_channels
17
+ self.filter_channels = filter_channels
18
+ self.n_heads = n_heads
19
+ self.n_layers = n_layers
20
+ self.kernel_size = kernel_size
21
+ self.p_dropout = p_dropout
22
+ self.window_size = window_size
23
+
24
+ self.drop = nn.Dropout(p_dropout)
25
+ self.attn_layers = nn.ModuleList()
26
+ self.norm_layers_1 = nn.ModuleList()
27
+ self.ffn_layers = nn.ModuleList()
28
+ self.norm_layers_2 = nn.ModuleList()
29
+ for i in range(self.n_layers):
30
+ self.attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout, window_size=window_size))
31
+ self.norm_layers_1.append(LayerNorm(hidden_channels))
32
+ self.ffn_layers.append(FFN(hidden_channels, hidden_channels, filter_channels, kernel_size, p_dropout=p_dropout))
33
+ self.norm_layers_2.append(LayerNorm(hidden_channels))
34
+
35
+ def forward(self, x, x_mask):
36
+ attn_mask = x_mask.unsqueeze(2) * x_mask.unsqueeze(-1)
37
+ x = x * x_mask
38
+ for i in range(self.n_layers):
39
+ y = self.attn_layers[i](x, x, attn_mask)
40
+ y = self.drop(y)
41
+ x = self.norm_layers_1[i](x + y)
42
+
43
+ y = self.ffn_layers[i](x, x_mask)
44
+ y = self.drop(y)
45
+ x = self.norm_layers_2[i](x + y)
46
+ x = x * x_mask
47
+ return x
48
+
49
+
50
+ class Decoder(nn.Module):
51
+ def __init__(self, hidden_channels, filter_channels, n_heads, n_layers, kernel_size=1, p_dropout=0., proximal_bias=False, proximal_init=True, **kwargs):
52
+ super().__init__()
53
+ self.hidden_channels = hidden_channels
54
+ self.filter_channels = filter_channels
55
+ self.n_heads = n_heads
56
+ self.n_layers = n_layers
57
+ self.kernel_size = kernel_size
58
+ self.p_dropout = p_dropout
59
+ self.proximal_bias = proximal_bias
60
+ self.proximal_init = proximal_init
61
+
62
+ self.drop = nn.Dropout(p_dropout)
63
+ self.self_attn_layers = nn.ModuleList()
64
+ self.norm_layers_0 = nn.ModuleList()
65
+ self.encdec_attn_layers = nn.ModuleList()
66
+ self.norm_layers_1 = nn.ModuleList()
67
+ self.ffn_layers = nn.ModuleList()
68
+ self.norm_layers_2 = nn.ModuleList()
69
+ for i in range(self.n_layers):
70
+ self.self_attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout, proximal_bias=proximal_bias, proximal_init=proximal_init))
71
+ self.norm_layers_0.append(LayerNorm(hidden_channels))
72
+ self.encdec_attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout))
73
+ self.norm_layers_1.append(LayerNorm(hidden_channels))
74
+ self.ffn_layers.append(FFN(hidden_channels, hidden_channels, filter_channels, kernel_size, p_dropout=p_dropout, causal=True))
75
+ self.norm_layers_2.append(LayerNorm(hidden_channels))
76
+
77
+ def forward(self, x, x_mask, h, h_mask):
78
+ """
79
+ x: decoder input
80
+ h: encoder output
81
+ """
82
+ self_attn_mask = commons.subsequent_mask(x_mask.size(2)).to(device=x.device, dtype=x.dtype)
83
+ encdec_attn_mask = h_mask.unsqueeze(2) * x_mask.unsqueeze(-1)
84
+ x = x * x_mask
85
+ for i in range(self.n_layers):
86
+ y = self.self_attn_layers[i](x, x, self_attn_mask)
87
+ y = self.drop(y)
88
+ x = self.norm_layers_0[i](x + y)
89
+
90
+ y = self.encdec_attn_layers[i](x, h, encdec_attn_mask)
91
+ y = self.drop(y)
92
+ x = self.norm_layers_1[i](x + y)
93
+
94
+ y = self.ffn_layers[i](x, x_mask)
95
+ y = self.drop(y)
96
+ x = self.norm_layers_2[i](x + y)
97
+ x = x * x_mask
98
+ return x
99
+
100
+
101
+ class MultiHeadAttention(nn.Module):
102
+ def __init__(self, channels, out_channels, n_heads, p_dropout=0., window_size=None, heads_share=True, block_length=None, proximal_bias=False, proximal_init=False):
103
+ super().__init__()
104
+ assert channels % n_heads == 0
105
+
106
+ self.channels = channels
107
+ self.out_channels = out_channels
108
+ self.n_heads = n_heads
109
+ self.p_dropout = p_dropout
110
+ self.window_size = window_size
111
+ self.heads_share = heads_share
112
+ self.block_length = block_length
113
+ self.proximal_bias = proximal_bias
114
+ self.proximal_init = proximal_init
115
+ self.attn = None
116
+
117
+ self.k_channels = channels // n_heads
118
+ self.conv_q = nn.Conv1d(channels, channels, 1)
119
+ self.conv_k = nn.Conv1d(channels, channels, 1)
120
+ self.conv_v = nn.Conv1d(channels, channels, 1)
121
+ self.conv_o = nn.Conv1d(channels, out_channels, 1)
122
+ self.drop = nn.Dropout(p_dropout)
123
+
124
+ if window_size is not None:
125
+ n_heads_rel = 1 if heads_share else n_heads
126
+ rel_stddev = self.k_channels**-0.5
127
+ self.emb_rel_k = nn.Parameter(torch.randn(n_heads_rel, window_size * 2 + 1, self.k_channels) * rel_stddev)
128
+ self.emb_rel_v = nn.Parameter(torch.randn(n_heads_rel, window_size * 2 + 1, self.k_channels) * rel_stddev)
129
+
130
+ nn.init.xavier_uniform_(self.conv_q.weight)
131
+ nn.init.xavier_uniform_(self.conv_k.weight)
132
+ nn.init.xavier_uniform_(self.conv_v.weight)
133
+ if proximal_init:
134
+ with torch.no_grad():
135
+ self.conv_k.weight.copy_(self.conv_q.weight)
136
+ self.conv_k.bias.copy_(self.conv_q.bias)
137
+
138
+ def forward(self, x, c, attn_mask=None):
139
+ q = self.conv_q(x)
140
+ k = self.conv_k(c)
141
+ v = self.conv_v(c)
142
+
143
+ x, self.attn = self.attention(q, k, v, mask=attn_mask)
144
+
145
+ x = self.conv_o(x)
146
+ return x
147
+
148
+ def attention(self, query, key, value, mask=None):
149
+ # reshape [b, d, t] -> [b, n_h, t, d_k]
150
+ b, d, t_s, t_t = (*key.size(), query.size(2))
151
+ query = query.view(b, self.n_heads, self.k_channels, t_t).transpose(2, 3)
152
+ key = key.view(b, self.n_heads, self.k_channels, t_s).transpose(2, 3)
153
+ value = value.view(b, self.n_heads, self.k_channels, t_s).transpose(2, 3)
154
+
155
+ scores = torch.matmul(query / math.sqrt(self.k_channels), key.transpose(-2, -1))
156
+ if self.window_size is not None:
157
+ assert t_s == t_t, "Relative attention is only available for self-attention."
158
+ key_relative_embeddings = self._get_relative_embeddings(self.emb_rel_k, t_s)
159
+ rel_logits = self._matmul_with_relative_keys(query /math.sqrt(self.k_channels), key_relative_embeddings)
160
+ scores_local = self._relative_position_to_absolute_position(rel_logits)
161
+ scores = scores + scores_local
162
+ if self.proximal_bias:
163
+ assert t_s == t_t, "Proximal bias is only available for self-attention."
164
+ scores = scores + self._attention_bias_proximal(t_s).to(device=scores.device, dtype=scores.dtype)
165
+ if mask is not None:
166
+ scores = scores.masked_fill(mask == 0, -1e4)
167
+ if self.block_length is not None:
168
+ assert t_s == t_t, "Local attention is only available for self-attention."
169
+ block_mask = torch.ones_like(scores).triu(-self.block_length).tril(self.block_length)
170
+ scores = scores.masked_fill(block_mask == 0, -1e4)
171
+ p_attn = F.softmax(scores, dim=-1) # [b, n_h, t_t, t_s]
172
+ p_attn = self.drop(p_attn)
173
+ output = torch.matmul(p_attn, value)
174
+ if self.window_size is not None:
175
+ relative_weights = self._absolute_position_to_relative_position(p_attn)
176
+ value_relative_embeddings = self._get_relative_embeddings(self.emb_rel_v, t_s)
177
+ output = output + self._matmul_with_relative_values(relative_weights, value_relative_embeddings)
178
+ output = output.transpose(2, 3).contiguous().view(b, d, t_t) # [b, n_h, t_t, d_k] -> [b, d, t_t]
179
+ return output, p_attn
180
+
181
+ def _matmul_with_relative_values(self, x, y):
182
+ """
183
+ x: [b, h, l, m]
184
+ y: [h or 1, m, d]
185
+ ret: [b, h, l, d]
186
+ """
187
+ ret = torch.matmul(x, y.unsqueeze(0))
188
+ return ret
189
+
190
+ def _matmul_with_relative_keys(self, x, y):
191
+ """
192
+ x: [b, h, l, d]
193
+ y: [h or 1, m, d]
194
+ ret: [b, h, l, m]
195
+ """
196
+ ret = torch.matmul(x, y.unsqueeze(0).transpose(-2, -1))
197
+ return ret
198
+
199
+ def _get_relative_embeddings(self, relative_embeddings, length):
200
+ max_relative_position = 2 * self.window_size + 1
201
+ # Pad first before slice to avoid using cond ops.
202
+ pad_length = max(length - (self.window_size + 1), 0)
203
+ slice_start_position = max((self.window_size + 1) - length, 0)
204
+ slice_end_position = slice_start_position + 2 * length - 1
205
+ if pad_length > 0:
206
+ padded_relative_embeddings = F.pad(
207
+ relative_embeddings,
208
+ commons.convert_pad_shape([[0, 0], [pad_length, pad_length], [0, 0]]))
209
+ else:
210
+ padded_relative_embeddings = relative_embeddings
211
+ used_relative_embeddings = padded_relative_embeddings[:,slice_start_position:slice_end_position]
212
+ return used_relative_embeddings
213
+
214
+ def _relative_position_to_absolute_position(self, x):
215
+ """
216
+ x: [b, h, l, 2*l-1]
217
+ ret: [b, h, l, l]
218
+ """
219
+ batch, heads, length, _ = x.size()
220
+ # Concat columns of pad to shift from relative to absolute indexing.
221
+ x = F.pad(x, commons.convert_pad_shape([[0,0],[0,0],[0,0],[0,1]]))
222
+
223
+ # Concat extra elements so to add up to shape (len+1, 2*len-1).
224
+ x_flat = x.view([batch, heads, length * 2 * length])
225
+ x_flat = F.pad(x_flat, commons.convert_pad_shape([[0,0],[0,0],[0,length-1]]))
226
+
227
+ # Reshape and slice out the padded elements.
228
+ x_final = x_flat.view([batch, heads, length+1, 2*length-1])[:, :, :length, length-1:]
229
+ return x_final
230
+
231
+ def _absolute_position_to_relative_position(self, x):
232
+ """
233
+ x: [b, h, l, l]
234
+ ret: [b, h, l, 2*l-1]
235
+ """
236
+ batch, heads, length, _ = x.size()
237
+ # padd along column
238
+ x = F.pad(x, commons.convert_pad_shape([[0, 0], [0, 0], [0, 0], [0, length-1]]))
239
+ x_flat = x.view([batch, heads, length**2 + length*(length -1)])
240
+ # add 0's in the beginning that will skew the elements after reshape
241
+ x_flat = F.pad(x_flat, commons.convert_pad_shape([[0, 0], [0, 0], [length, 0]]))
242
+ x_final = x_flat.view([batch, heads, length, 2*length])[:,:,:,1:]
243
+ return x_final
244
+
245
+ def _attention_bias_proximal(self, length):
246
+ """Bias for self-attention to encourage attention to close positions.
247
+ Args:
248
+ length: an integer scalar.
249
+ Returns:
250
+ a Tensor with shape [1, 1, length, length]
251
+ """
252
+ r = torch.arange(length, dtype=torch.float32)
253
+ diff = torch.unsqueeze(r, 0) - torch.unsqueeze(r, 1)
254
+ return torch.unsqueeze(torch.unsqueeze(-torch.log1p(torch.abs(diff)), 0), 0)
255
+
256
+
257
+ class FFN(nn.Module):
258
+ def __init__(self, in_channels, out_channels, filter_channels, kernel_size, p_dropout=0., activation=None, causal=False):
259
+ super().__init__()
260
+ self.in_channels = in_channels
261
+ self.out_channels = out_channels
262
+ self.filter_channels = filter_channels
263
+ self.kernel_size = kernel_size
264
+ self.p_dropout = p_dropout
265
+ self.activation = activation
266
+ self.causal = causal
267
+
268
+ if causal:
269
+ self.padding = self._causal_padding
270
+ else:
271
+ self.padding = self._same_padding
272
+
273
+ self.conv_1 = nn.Conv1d(in_channels, filter_channels, kernel_size)
274
+ self.conv_2 = nn.Conv1d(filter_channels, out_channels, kernel_size)
275
+ self.drop = nn.Dropout(p_dropout)
276
+
277
+ def forward(self, x, x_mask):
278
+ x = self.conv_1(self.padding(x * x_mask))
279
+ if self.activation == "gelu":
280
+ x = x * torch.sigmoid(1.702 * x)
281
+ else:
282
+ x = torch.relu(x)
283
+ x = self.drop(x)
284
+ x = self.conv_2(self.padding(x * x_mask))
285
+ return x * x_mask
286
+
287
+ def _causal_padding(self, x):
288
+ if self.kernel_size == 1:
289
+ return x
290
+ pad_l = self.kernel_size - 1
291
+ pad_r = 0
292
+ padding = [[0, 0], [0, 0], [pad_l, pad_r]]
293
+ x = F.pad(x, commons.convert_pad_shape(padding))
294
+ return x
295
+
296
+ def _same_padding(self, x):
297
+ if self.kernel_size == 1:
298
+ return x
299
+ pad_l = (self.kernel_size - 1) // 2
300
+ pad_r = self.kernel_size // 2
301
+ padding = [[0, 0], [0, 0], [pad_l, pad_r]]
302
+ x = F.pad(x, commons.convert_pad_shape(padding))
303
+ return x
runtime/commons.py ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import numpy as np
3
+ import torch
4
+ from torch import nn
5
+ from torch.nn import functional as F
6
+
7
+
8
+ def init_weights(m, mean=0.0, std=0.01):
9
+ classname = m.__class__.__name__
10
+ if classname.find("Conv") != -1:
11
+ m.weight.data.normal_(mean, std)
12
+
13
+
14
+ def get_padding(kernel_size, dilation=1):
15
+ return int((kernel_size*dilation - dilation)/2)
16
+
17
+
18
+ def convert_pad_shape(pad_shape):
19
+ l = pad_shape[::-1]
20
+ pad_shape = [item for sublist in l for item in sublist]
21
+ return pad_shape
22
+
23
+
24
+ def intersperse(lst, item):
25
+ result = [item] * (len(lst) * 2 + 1)
26
+ result[1::2] = lst
27
+ return result
28
+
29
+
30
+ def kl_divergence(m_p, logs_p, m_q, logs_q):
31
+ """KL(P||Q)"""
32
+ kl = (logs_q - logs_p) - 0.5
33
+ kl += 0.5 * (torch.exp(2. * logs_p) + ((m_p - m_q)**2)) * torch.exp(-2. * logs_q)
34
+ return kl
35
+
36
+
37
+ def rand_gumbel(shape):
38
+ """Sample from the Gumbel distribution, protect from overflows."""
39
+ uniform_samples = torch.rand(shape) * 0.99998 + 0.00001
40
+ return -torch.log(-torch.log(uniform_samples))
41
+
42
+
43
+ def rand_gumbel_like(x):
44
+ g = rand_gumbel(x.size()).to(dtype=x.dtype, device=x.device)
45
+ return g
46
+
47
+
48
+ def slice_segments(x, ids_str, segment_size=4):
49
+ ret = torch.zeros_like(x[:, :, :segment_size])
50
+ for i in range(x.size(0)):
51
+ idx_str = ids_str[i]
52
+ idx_end = idx_str + segment_size
53
+ ret[i] = x[i, :, idx_str:idx_end]
54
+ return ret
55
+
56
+
57
+ def rand_slice_segments(x, x_lengths=None, segment_size=4):
58
+ b, d, t = x.size()
59
+ if x_lengths is None:
60
+ x_lengths = t
61
+ ids_str_max = x_lengths - segment_size + 1
62
+ ids_str = (torch.rand([b]).to(device=x.device) * ids_str_max).to(dtype=torch.long)
63
+ ret = slice_segments(x, ids_str, segment_size)
64
+ return ret, ids_str
65
+
66
+
67
+ def get_timing_signal_1d(
68
+ length, channels, min_timescale=1.0, max_timescale=1.0e4):
69
+ position = torch.arange(length, dtype=torch.float)
70
+ num_timescales = channels // 2
71
+ log_timescale_increment = (
72
+ math.log(float(max_timescale) / float(min_timescale)) /
73
+ (num_timescales - 1))
74
+ inv_timescales = min_timescale * torch.exp(
75
+ torch.arange(num_timescales, dtype=torch.float) * -log_timescale_increment)
76
+ scaled_time = position.unsqueeze(0) * inv_timescales.unsqueeze(1)
77
+ signal = torch.cat([torch.sin(scaled_time), torch.cos(scaled_time)], 0)
78
+ signal = F.pad(signal, [0, 0, 0, channels % 2])
79
+ signal = signal.view(1, channels, length)
80
+ return signal
81
+
82
+
83
+ def add_timing_signal_1d(x, min_timescale=1.0, max_timescale=1.0e4):
84
+ b, channels, length = x.size()
85
+ signal = get_timing_signal_1d(length, channels, min_timescale, max_timescale)
86
+ return x + signal.to(dtype=x.dtype, device=x.device)
87
+
88
+
89
+ def cat_timing_signal_1d(x, min_timescale=1.0, max_timescale=1.0e4, axis=1):
90
+ b, channels, length = x.size()
91
+ signal = get_timing_signal_1d(length, channels, min_timescale, max_timescale)
92
+ return torch.cat([x, signal.to(dtype=x.dtype, device=x.device)], axis)
93
+
94
+
95
+ def subsequent_mask(length):
96
+ mask = torch.tril(torch.ones(length, length)).unsqueeze(0).unsqueeze(0)
97
+ return mask
98
+
99
+
100
+ @torch.jit.script
101
+ def fused_add_tanh_sigmoid_multiply(input_a, input_b, n_channels):
102
+ n_channels_int = n_channels[0]
103
+ in_act = input_a + input_b
104
+ t_act = torch.tanh(in_act[:, :n_channels_int, :])
105
+ s_act = torch.sigmoid(in_act[:, n_channels_int:, :])
106
+ acts = t_act * s_act
107
+ return acts
108
+
109
+
110
+ def convert_pad_shape(pad_shape):
111
+ l = pad_shape[::-1]
112
+ pad_shape = [item for sublist in l for item in sublist]
113
+ return pad_shape
114
+
115
+
116
+ def shift_1d(x):
117
+ x = F.pad(x, convert_pad_shape([[0, 0], [0, 0], [1, 0]]))[:, :, :-1]
118
+ return x
119
+
120
+
121
+ def sequence_mask(length, max_length=None):
122
+ if max_length is None:
123
+ max_length = length.max()
124
+ x = torch.arange(max_length, dtype=length.dtype, device=length.device)
125
+ return x.unsqueeze(0) < length.unsqueeze(1)
126
+
127
+
128
+ def generate_path(duration, mask):
129
+ """
130
+ duration: [b, 1, t_x]
131
+ mask: [b, 1, t_y, t_x]
132
+ """
133
+ device = duration.device
134
+
135
+ b, _, t_y, t_x = mask.shape
136
+ cum_duration = torch.cumsum(duration, -1)
137
+
138
+ cum_duration_flat = cum_duration.view(b * t_x)
139
+ path = sequence_mask(cum_duration_flat, t_y).to(mask.dtype)
140
+ path = path.view(b, t_x, t_y)
141
+ path = path - F.pad(path, convert_pad_shape([[0, 0], [1, 0], [0, 0]]))[:, :-1]
142
+ path = path.unsqueeze(1).transpose(2,3) * mask
143
+ return path
144
+
145
+
146
+ def clip_grad_value_(parameters, clip_value, norm_type=2):
147
+ if isinstance(parameters, torch.Tensor):
148
+ parameters = [parameters]
149
+ parameters = list(filter(lambda p: p.grad is not None, parameters))
150
+ norm_type = float(norm_type)
151
+ if clip_value is not None:
152
+ clip_value = float(clip_value)
153
+
154
+ total_norm = 0
155
+ for p in parameters:
156
+ param_norm = p.grad.data.norm(norm_type)
157
+ total_norm += param_norm.item() ** norm_type
158
+ if clip_value is not None:
159
+ p.grad.data.clamp_(min=-clip_value, max=clip_value)
160
+ total_norm = total_norm ** (1. / norm_type)
161
+ return total_norm
runtime/inflect_alias_free.py ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Lightweight alias-free waveform blocks derived from NVIDIA BigVGAN.
2
+
3
+ BigVGAN and alias-free-torch are MIT/Apache-2.0 licensed. The implementation
4
+ is kept local so Inflect can train without BigVGAN's optional CUDA extension.
5
+ """
6
+
7
+ import math
8
+
9
+ import torch
10
+ from torch import nn
11
+ from torch.nn import functional as F
12
+ from torch.nn.utils import remove_weight_norm, weight_norm
13
+
14
+ from commons import get_padding, init_weights
15
+
16
+
17
+ def kaiser_sinc_filter1d(cutoff: float, half_width: float, kernel_size: int):
18
+ even = kernel_size % 2 == 0
19
+ half_size = kernel_size // 2
20
+ delta_f = 4 * half_width
21
+ attenuation = 2.285 * (half_size - 1) * math.pi * delta_f + 7.95
22
+ if attenuation > 50.0:
23
+ beta = 0.1102 * (attenuation - 8.7)
24
+ elif attenuation >= 21.0:
25
+ beta = 0.5842 * (attenuation - 21) ** 0.4 + 0.07886 * (attenuation - 21.0)
26
+ else:
27
+ beta = 0.0
28
+ window = torch.kaiser_window(kernel_size, beta=beta, periodic=False)
29
+ if even:
30
+ time = torch.arange(-half_size, half_size) + 0.5
31
+ else:
32
+ time = torch.arange(kernel_size) - half_size
33
+ values = 2 * cutoff * window * torch.sinc(2 * cutoff * time)
34
+ values /= values.sum()
35
+ return values.view(1, 1, kernel_size)
36
+
37
+
38
+ class UpSample1d(nn.Module):
39
+ def __init__(self, ratio=2, kernel_size=12):
40
+ super().__init__()
41
+ self.ratio = ratio
42
+ self.stride = ratio
43
+ self.kernel_size = kernel_size
44
+ self.pad = kernel_size // ratio - 1
45
+ self.pad_left = self.pad * ratio + (kernel_size - ratio) // 2
46
+ self.pad_right = self.pad * ratio + (kernel_size - ratio + 1) // 2
47
+ self.register_buffer(
48
+ "filter",
49
+ kaiser_sinc_filter1d(0.5 / ratio, 0.6 / ratio, kernel_size))
50
+
51
+ def forward(self, x):
52
+ channels = x.shape[1]
53
+ x = F.pad(x, (self.pad, self.pad), mode="replicate")
54
+ x = self.ratio * F.conv_transpose1d(
55
+ x, self.filter.expand(channels, -1, -1),
56
+ stride=self.stride, groups=channels)
57
+ return x[..., self.pad_left:-self.pad_right]
58
+
59
+
60
+ class DownSample1d(nn.Module):
61
+ def __init__(self, ratio=2, kernel_size=12):
62
+ super().__init__()
63
+ self.ratio = ratio
64
+ self.kernel_size = kernel_size
65
+ self.pad_left = kernel_size // 2 - int(kernel_size % 2 == 0)
66
+ self.pad_right = kernel_size // 2
67
+ self.register_buffer(
68
+ "filter",
69
+ kaiser_sinc_filter1d(0.5 / ratio, 0.6 / ratio, kernel_size))
70
+
71
+ def forward(self, x):
72
+ channels = x.shape[1]
73
+ x = F.pad(x, (self.pad_left, self.pad_right), mode="replicate")
74
+ return F.conv1d(
75
+ x, self.filter.expand(channels, -1, -1),
76
+ stride=self.ratio, groups=channels)
77
+
78
+
79
+ class SnakeBeta(nn.Module):
80
+ def __init__(self, channels: int, logscale: bool = True):
81
+ super().__init__()
82
+ initial = torch.zeros(channels) if logscale else torch.ones(channels)
83
+ self.alpha = nn.Parameter(initial.clone())
84
+ self.beta = nn.Parameter(initial.clone())
85
+ self.logscale = logscale
86
+
87
+ def forward(self, x):
88
+ alpha = self.alpha.view(1, -1, 1)
89
+ beta = self.beta.view(1, -1, 1)
90
+ if self.logscale:
91
+ alpha = alpha.exp()
92
+ beta = beta.exp()
93
+ return x + torch.sin(x * alpha).square() / (beta + 1e-9)
94
+
95
+
96
+ class AliasFreeActivation1d(nn.Module):
97
+ def __init__(self, activation: nn.Module):
98
+ super().__init__()
99
+ self.upsample = UpSample1d()
100
+ self.act = activation
101
+ self.downsample = DownSample1d()
102
+
103
+ def forward(self, x):
104
+ return self.downsample(self.act(self.upsample(x)))
105
+
106
+
107
+ class AliasFreeResBlock1(nn.Module):
108
+ """Shape-compatible VITS ResBlock1 with filtered SnakeBeta activations."""
109
+
110
+ def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5), logscale=True):
111
+ super().__init__()
112
+ self.convs1 = nn.ModuleList([
113
+ weight_norm(nn.Conv1d(
114
+ channels, channels, kernel_size, 1,
115
+ dilation=d, padding=get_padding(kernel_size, d)))
116
+ for d in dilation
117
+ ])
118
+ self.convs2 = nn.ModuleList([
119
+ weight_norm(nn.Conv1d(
120
+ channels, channels, kernel_size, 1,
121
+ dilation=1, padding=get_padding(kernel_size, 1)))
122
+ for _ in dilation
123
+ ])
124
+ self.convs1.apply(init_weights)
125
+ self.convs2.apply(init_weights)
126
+ self.activations = nn.ModuleList([
127
+ AliasFreeActivation1d(SnakeBeta(channels, logscale=logscale))
128
+ for _ in range(2 * len(dilation))
129
+ ])
130
+
131
+ def forward(self, x, x_mask=None):
132
+ first = self.activations[::2]
133
+ second = self.activations[1::2]
134
+ for conv1, conv2, act1, act2 in zip(self.convs1, self.convs2, first, second):
135
+ residual = conv2(act2(conv1(act1(x))))
136
+ x = x + residual
137
+ return x
138
+
139
+ def remove_weight_norm(self):
140
+ for layer in self.convs1:
141
+ remove_weight_norm(layer)
142
+ for layer in self.convs2:
143
+ remove_weight_norm(layer)
runtime/models.py ADDED
@@ -0,0 +1,564 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import math
3
+ import torch
4
+ from torch import nn
5
+ from torch.nn import functional as F
6
+
7
+ import commons
8
+ import modules
9
+ from inflect_alias_free import AliasFreeActivation1d, AliasFreeResBlock1, SnakeBeta
10
+ import attentions
11
+ import monotonic_align
12
+
13
+ from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d
14
+ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
15
+ from commons import init_weights, get_padding
16
+
17
+
18
+ class StochasticDurationPredictor(nn.Module):
19
+ def __init__(self, in_channels, filter_channels, kernel_size, p_dropout, n_flows=4, gin_channels=0):
20
+ super().__init__()
21
+ filter_channels = in_channels # it needs to be removed from future version.
22
+ self.in_channels = in_channels
23
+ self.filter_channels = filter_channels
24
+ self.kernel_size = kernel_size
25
+ self.p_dropout = p_dropout
26
+ self.n_flows = n_flows
27
+ self.gin_channels = gin_channels
28
+
29
+ self.log_flow = modules.Log()
30
+ self.flows = nn.ModuleList()
31
+ self.flows.append(modules.ElementwiseAffine(2))
32
+ for i in range(n_flows):
33
+ self.flows.append(modules.ConvFlow(2, filter_channels, kernel_size, n_layers=3))
34
+ self.flows.append(modules.Flip())
35
+
36
+ self.post_pre = nn.Conv1d(1, filter_channels, 1)
37
+ self.post_proj = nn.Conv1d(filter_channels, filter_channels, 1)
38
+ self.post_convs = modules.DDSConv(filter_channels, kernel_size, n_layers=3, p_dropout=p_dropout)
39
+ self.post_flows = nn.ModuleList()
40
+ self.post_flows.append(modules.ElementwiseAffine(2))
41
+ for i in range(4):
42
+ self.post_flows.append(modules.ConvFlow(2, filter_channels, kernel_size, n_layers=3))
43
+ self.post_flows.append(modules.Flip())
44
+
45
+ self.pre = nn.Conv1d(in_channels, filter_channels, 1)
46
+ self.proj = nn.Conv1d(filter_channels, filter_channels, 1)
47
+ self.convs = modules.DDSConv(filter_channels, kernel_size, n_layers=3, p_dropout=p_dropout)
48
+ if gin_channels != 0:
49
+ self.cond = nn.Conv1d(gin_channels, filter_channels, 1)
50
+
51
+ def forward(self, x, x_mask, w=None, g=None, reverse=False, noise_scale=1.0):
52
+ x = torch.detach(x)
53
+ x = self.pre(x)
54
+ if g is not None:
55
+ g = torch.detach(g)
56
+ x = x + self.cond(g)
57
+ x = self.convs(x, x_mask)
58
+ x = self.proj(x) * x_mask
59
+
60
+ if not reverse:
61
+ flows = self.flows
62
+ assert w is not None
63
+
64
+ logdet_tot_q = 0
65
+ h_w = self.post_pre(w)
66
+ h_w = self.post_convs(h_w, x_mask)
67
+ h_w = self.post_proj(h_w) * x_mask
68
+ e_q = torch.randn(w.size(0), 2, w.size(2)).to(device=x.device, dtype=x.dtype) * x_mask
69
+ z_q = e_q
70
+ for flow in self.post_flows:
71
+ z_q, logdet_q = flow(z_q, x_mask, g=(x + h_w))
72
+ logdet_tot_q += logdet_q
73
+ z_u, z1 = torch.split(z_q, [1, 1], 1)
74
+ u = torch.sigmoid(z_u) * x_mask
75
+ z0 = (w - u) * x_mask
76
+ logdet_tot_q += torch.sum((F.logsigmoid(z_u) + F.logsigmoid(-z_u)) * x_mask, [1,2])
77
+ logq = torch.sum(-0.5 * (math.log(2*math.pi) + (e_q**2)) * x_mask, [1,2]) - logdet_tot_q
78
+
79
+ logdet_tot = 0
80
+ z0, logdet = self.log_flow(z0, x_mask)
81
+ logdet_tot += logdet
82
+ z = torch.cat([z0, z1], 1)
83
+ for flow in flows:
84
+ z, logdet = flow(z, x_mask, g=x, reverse=reverse)
85
+ logdet_tot = logdet_tot + logdet
86
+ nll = torch.sum(0.5 * (math.log(2*math.pi) + (z**2)) * x_mask, [1,2]) - logdet_tot
87
+ return nll + logq # [b]
88
+ else:
89
+ flows = list(reversed(self.flows))
90
+ flows = flows[:-2] + [flows[-1]] # remove a useless vflow
91
+ z = torch.randn(x.size(0), 2, x.size(2)).to(device=x.device, dtype=x.dtype) * noise_scale
92
+ for flow in flows:
93
+ z = flow(z, x_mask, g=x, reverse=reverse)
94
+ z0, z1 = torch.split(z, [1, 1], 1)
95
+ logw = z0
96
+ return logw
97
+
98
+
99
+ class DurationPredictor(nn.Module):
100
+ def __init__(self, in_channels, filter_channels, kernel_size, p_dropout, gin_channels=0):
101
+ super().__init__()
102
+
103
+ self.in_channels = in_channels
104
+ self.filter_channels = filter_channels
105
+ self.kernel_size = kernel_size
106
+ self.p_dropout = p_dropout
107
+ self.gin_channels = gin_channels
108
+
109
+ self.drop = nn.Dropout(p_dropout)
110
+ self.conv_1 = nn.Conv1d(in_channels, filter_channels, kernel_size, padding=kernel_size//2)
111
+ self.norm_1 = modules.LayerNorm(filter_channels)
112
+ self.conv_2 = nn.Conv1d(filter_channels, filter_channels, kernel_size, padding=kernel_size//2)
113
+ self.norm_2 = modules.LayerNorm(filter_channels)
114
+ self.proj = nn.Conv1d(filter_channels, 1, 1)
115
+
116
+ if gin_channels != 0:
117
+ self.cond = nn.Conv1d(gin_channels, in_channels, 1)
118
+
119
+ def forward(self, x, x_mask, g=None):
120
+ x = torch.detach(x)
121
+ if g is not None:
122
+ g = torch.detach(g)
123
+ x = x + self.cond(g)
124
+ x = self.conv_1(x * x_mask)
125
+ x = torch.relu(x)
126
+ x = self.norm_1(x)
127
+ x = self.drop(x)
128
+ x = self.conv_2(x * x_mask)
129
+ x = torch.relu(x)
130
+ x = self.norm_2(x)
131
+ x = self.drop(x)
132
+ x = self.proj(x * x_mask)
133
+ return x * x_mask
134
+
135
+
136
+ class TextEncoder(nn.Module):
137
+ def __init__(self,
138
+ n_vocab,
139
+ out_channels,
140
+ hidden_channels,
141
+ filter_channels,
142
+ n_heads,
143
+ n_layers,
144
+ kernel_size,
145
+ p_dropout):
146
+ super().__init__()
147
+ self.n_vocab = n_vocab
148
+ self.out_channels = out_channels
149
+ self.hidden_channels = hidden_channels
150
+ self.filter_channels = filter_channels
151
+ self.n_heads = n_heads
152
+ self.n_layers = n_layers
153
+ self.kernel_size = kernel_size
154
+ self.p_dropout = p_dropout
155
+
156
+ self.emb = nn.Embedding(n_vocab, hidden_channels)
157
+ nn.init.normal_(self.emb.weight, 0.0, hidden_channels**-0.5)
158
+
159
+ self.encoder = attentions.Encoder(
160
+ hidden_channels,
161
+ filter_channels,
162
+ n_heads,
163
+ n_layers,
164
+ kernel_size,
165
+ p_dropout)
166
+ self.proj= nn.Conv1d(hidden_channels, out_channels * 2, 1)
167
+
168
+ def forward(self, x, x_lengths):
169
+ x = self.emb(x) * math.sqrt(self.hidden_channels) # [b, t, h]
170
+ x = torch.transpose(x, 1, -1) # [b, h, t]
171
+ x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype)
172
+
173
+ x = self.encoder(x * x_mask, x_mask)
174
+ stats = self.proj(x) * x_mask
175
+
176
+ m, logs = torch.split(stats, self.out_channels, dim=1)
177
+ return x, m, logs, x_mask
178
+
179
+
180
+ class ResidualCouplingBlock(nn.Module):
181
+ def __init__(self,
182
+ channels,
183
+ hidden_channels,
184
+ kernel_size,
185
+ dilation_rate,
186
+ n_layers,
187
+ n_flows=4,
188
+ gin_channels=0):
189
+ super().__init__()
190
+ self.channels = channels
191
+ self.hidden_channels = hidden_channels
192
+ self.kernel_size = kernel_size
193
+ self.dilation_rate = dilation_rate
194
+ self.n_layers = n_layers
195
+ self.n_flows = n_flows
196
+ self.gin_channels = gin_channels
197
+
198
+ self.flows = nn.ModuleList()
199
+ for i in range(n_flows):
200
+ self.flows.append(modules.ResidualCouplingLayer(channels, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels, mean_only=True))
201
+ self.flows.append(modules.Flip())
202
+
203
+ def forward(self, x, x_mask, g=None, reverse=False):
204
+ if not reverse:
205
+ for flow in self.flows:
206
+ x, _ = flow(x, x_mask, g=g, reverse=reverse)
207
+ else:
208
+ for flow in reversed(self.flows):
209
+ x = flow(x, x_mask, g=g, reverse=reverse)
210
+ return x
211
+
212
+
213
+ class PosteriorEncoder(nn.Module):
214
+ def __init__(self,
215
+ in_channels,
216
+ out_channels,
217
+ hidden_channels,
218
+ kernel_size,
219
+ dilation_rate,
220
+ n_layers,
221
+ gin_channels=0):
222
+ super().__init__()
223
+ self.in_channels = in_channels
224
+ self.out_channels = out_channels
225
+ self.hidden_channels = hidden_channels
226
+ self.kernel_size = kernel_size
227
+ self.dilation_rate = dilation_rate
228
+ self.n_layers = n_layers
229
+ self.gin_channels = gin_channels
230
+
231
+ self.pre = nn.Conv1d(in_channels, hidden_channels, 1)
232
+ self.enc = modules.WN(hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels)
233
+ self.proj = nn.Conv1d(hidden_channels, out_channels * 2, 1)
234
+
235
+ def forward(self, x, x_lengths, g=None):
236
+ x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype)
237
+ x = self.pre(x) * x_mask
238
+ x = self.enc(x, x_mask, g=g)
239
+ stats = self.proj(x) * x_mask
240
+ m, logs = torch.split(stats, self.out_channels, dim=1)
241
+ z = (m + torch.randn_like(m) * torch.exp(logs)) * x_mask
242
+ return z, m, logs, x_mask
243
+
244
+
245
+ class Generator(torch.nn.Module):
246
+ def __init__(self, initial_channel, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=0, decoder_alias_free=False, decoder_alias_free_start_stage=2, decoder_snake_logscale=True):
247
+ super(Generator, self).__init__()
248
+ self.num_kernels = len(resblock_kernel_sizes)
249
+ self.num_upsamples = len(upsample_rates)
250
+ self.conv_pre = Conv1d(initial_channel, upsample_initial_channel, 7, 1, padding=3)
251
+ resblock_class = modules.ResBlock1 if resblock == '1' else modules.ResBlock2
252
+ self.decoder_alias_free = bool(decoder_alias_free)
253
+ self.decoder_alias_free_start_stage = int(decoder_alias_free_start_stage)
254
+
255
+ self.ups = nn.ModuleList()
256
+ for i, (u, k) in enumerate(zip(upsample_rates, upsample_kernel_sizes)):
257
+ self.ups.append(weight_norm(
258
+ ConvTranspose1d(upsample_initial_channel//(2**i), upsample_initial_channel//(2**(i+1)),
259
+ k, u, padding=(k-u)//2)))
260
+
261
+ self.resblocks = nn.ModuleList()
262
+ for i in range(len(self.ups)):
263
+ ch = upsample_initial_channel//(2**(i+1))
264
+ for j, (k, d) in enumerate(zip(resblock_kernel_sizes, resblock_dilation_sizes)):
265
+ if self.decoder_alias_free and i >= self.decoder_alias_free_start_stage:
266
+ self.resblocks.append(AliasFreeResBlock1(
267
+ ch, k, d, logscale=decoder_snake_logscale))
268
+ else:
269
+ self.resblocks.append(resblock_class(ch, k, d))
270
+
271
+ self.alias_free_pre_activations = nn.ModuleList()
272
+ if self.decoder_alias_free:
273
+ for i in range(self.num_upsamples):
274
+ channels = upsample_initial_channel // (2 ** i)
275
+ if i >= self.decoder_alias_free_start_stage:
276
+ self.alias_free_pre_activations.append(
277
+ AliasFreeActivation1d(nn.LeakyReLU(modules.LRELU_SLOPE)))
278
+ else:
279
+ self.alias_free_pre_activations.append(nn.Identity())
280
+ self.alias_free_post_activation = AliasFreeActivation1d(
281
+ SnakeBeta(ch, logscale=decoder_snake_logscale))
282
+
283
+ self.conv_post = Conv1d(ch, 1, 7, 1, padding=3, bias=False)
284
+ self.ups.apply(init_weights)
285
+
286
+ if gin_channels != 0:
287
+ self.cond = nn.Conv1d(gin_channels, upsample_initial_channel, 1)
288
+
289
+ def forward(self, x, g=None):
290
+ x = self.conv_pre(x)
291
+ if g is not None:
292
+ x = x + self.cond(g)
293
+
294
+ for i in range(self.num_upsamples):
295
+ if self.decoder_alias_free and i >= self.decoder_alias_free_start_stage:
296
+ x = self.alias_free_pre_activations[i](x)
297
+ else:
298
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
299
+ x = self.ups[i](x)
300
+ xs = None
301
+ for j in range(self.num_kernels):
302
+ if xs is None:
303
+ xs = self.resblocks[i*self.num_kernels+j](x)
304
+ else:
305
+ xs += self.resblocks[i*self.num_kernels+j](x)
306
+ x = xs / self.num_kernels
307
+ if self.decoder_alias_free:
308
+ x = self.alias_free_post_activation(x)
309
+ else:
310
+ x = F.leaky_relu(x)
311
+ x = self.conv_post(x)
312
+ x = torch.tanh(x)
313
+
314
+ return x
315
+
316
+ def remove_weight_norm(self):
317
+ print('Removing weight norm...')
318
+ for l in self.ups:
319
+ remove_weight_norm(l)
320
+ for l in self.resblocks:
321
+ l.remove_weight_norm()
322
+
323
+
324
+ class DiscriminatorP(torch.nn.Module):
325
+ def __init__(self, period, kernel_size=5, stride=3, use_spectral_norm=False):
326
+ super(DiscriminatorP, self).__init__()
327
+ self.period = period
328
+ self.use_spectral_norm = use_spectral_norm
329
+ norm_f = weight_norm if use_spectral_norm == False else spectral_norm
330
+ self.convs = nn.ModuleList([
331
+ norm_f(Conv2d(1, 32, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
332
+ norm_f(Conv2d(32, 128, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
333
+ norm_f(Conv2d(128, 512, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
334
+ norm_f(Conv2d(512, 1024, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
335
+ norm_f(Conv2d(1024, 1024, (kernel_size, 1), 1, padding=(get_padding(kernel_size, 1), 0))),
336
+ ])
337
+ self.conv_post = norm_f(Conv2d(1024, 1, (3, 1), 1, padding=(1, 0)))
338
+
339
+ def forward(self, x):
340
+ fmap = []
341
+
342
+ # 1d to 2d
343
+ b, c, t = x.shape
344
+ if t % self.period != 0: # pad first
345
+ n_pad = self.period - (t % self.period)
346
+ x = F.pad(x, (0, n_pad), "reflect")
347
+ t = t + n_pad
348
+ x = x.view(b, c, t // self.period, self.period)
349
+
350
+ for l in self.convs:
351
+ x = l(x)
352
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
353
+ fmap.append(x)
354
+ x = self.conv_post(x)
355
+ fmap.append(x)
356
+ x = torch.flatten(x, 1, -1)
357
+
358
+ return x, fmap
359
+
360
+
361
+ class DiscriminatorS(torch.nn.Module):
362
+ def __init__(self, use_spectral_norm=False):
363
+ super(DiscriminatorS, self).__init__()
364
+ norm_f = weight_norm if use_spectral_norm == False else spectral_norm
365
+ self.convs = nn.ModuleList([
366
+ norm_f(Conv1d(1, 16, 15, 1, padding=7)),
367
+ norm_f(Conv1d(16, 64, 41, 4, groups=4, padding=20)),
368
+ norm_f(Conv1d(64, 256, 41, 4, groups=16, padding=20)),
369
+ norm_f(Conv1d(256, 1024, 41, 4, groups=64, padding=20)),
370
+ norm_f(Conv1d(1024, 1024, 41, 4, groups=256, padding=20)),
371
+ norm_f(Conv1d(1024, 1024, 5, 1, padding=2)),
372
+ ])
373
+ self.conv_post = norm_f(Conv1d(1024, 1, 3, 1, padding=1))
374
+
375
+ def forward(self, x):
376
+ fmap = []
377
+
378
+ for l in self.convs:
379
+ x = l(x)
380
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
381
+ fmap.append(x)
382
+ x = self.conv_post(x)
383
+ fmap.append(x)
384
+ x = torch.flatten(x, 1, -1)
385
+
386
+ return x, fmap
387
+
388
+
389
+ class MultiPeriodDiscriminator(torch.nn.Module):
390
+ def __init__(self, use_spectral_norm=False):
391
+ super(MultiPeriodDiscriminator, self).__init__()
392
+ periods = [2,3,5,7,11]
393
+
394
+ discs = [DiscriminatorS(use_spectral_norm=use_spectral_norm)]
395
+ discs = discs + [DiscriminatorP(i, use_spectral_norm=use_spectral_norm) for i in periods]
396
+ self.discriminators = nn.ModuleList(discs)
397
+
398
+ def forward(self, y, y_hat):
399
+ y_d_rs = []
400
+ y_d_gs = []
401
+ fmap_rs = []
402
+ fmap_gs = []
403
+ for i, d in enumerate(self.discriminators):
404
+ y_d_r, fmap_r = d(y)
405
+ y_d_g, fmap_g = d(y_hat)
406
+ y_d_rs.append(y_d_r)
407
+ y_d_gs.append(y_d_g)
408
+ fmap_rs.append(fmap_r)
409
+ fmap_gs.append(fmap_g)
410
+
411
+ return y_d_rs, y_d_gs, fmap_rs, fmap_gs
412
+
413
+
414
+
415
+ class SynthesizerTrn(nn.Module):
416
+ """
417
+ Synthesizer for Training
418
+ """
419
+
420
+ def __init__(self,
421
+ n_vocab,
422
+ spec_channels,
423
+ segment_size,
424
+ inter_channels,
425
+ hidden_channels,
426
+ filter_channels,
427
+ n_heads,
428
+ n_layers,
429
+ kernel_size,
430
+ p_dropout,
431
+ resblock,
432
+ resblock_kernel_sizes,
433
+ resblock_dilation_sizes,
434
+ upsample_rates,
435
+ upsample_initial_channel,
436
+ upsample_kernel_sizes,
437
+ n_speakers=0,
438
+ gin_channels=0,
439
+ use_sdp=True,
440
+ **kwargs):
441
+
442
+ super().__init__()
443
+ self.n_vocab = n_vocab
444
+ self.spec_channels = spec_channels
445
+ self.inter_channels = inter_channels
446
+ self.hidden_channels = hidden_channels
447
+ self.filter_channels = filter_channels
448
+ self.n_heads = n_heads
449
+ self.n_layers = n_layers
450
+ self.kernel_size = kernel_size
451
+ self.p_dropout = p_dropout
452
+ self.resblock = resblock
453
+ self.resblock_kernel_sizes = resblock_kernel_sizes
454
+ self.resblock_dilation_sizes = resblock_dilation_sizes
455
+ self.upsample_rates = upsample_rates
456
+ self.upsample_initial_channel = upsample_initial_channel
457
+ self.upsample_kernel_sizes = upsample_kernel_sizes
458
+ self.segment_size = segment_size
459
+ self.n_speakers = n_speakers
460
+ self.gin_channels = gin_channels
461
+
462
+ self.use_sdp = use_sdp
463
+
464
+ self.enc_p = TextEncoder(n_vocab,
465
+ inter_channels,
466
+ hidden_channels,
467
+ filter_channels,
468
+ n_heads,
469
+ n_layers,
470
+ kernel_size,
471
+ p_dropout)
472
+ self.dec = Generator(
473
+ inter_channels, resblock, resblock_kernel_sizes,
474
+ resblock_dilation_sizes, upsample_rates, upsample_initial_channel,
475
+ upsample_kernel_sizes, gin_channels=gin_channels,
476
+ decoder_alias_free=kwargs.get("decoder_alias_free", False),
477
+ decoder_alias_free_start_stage=kwargs.get("decoder_alias_free_start_stage", 2),
478
+ decoder_snake_logscale=kwargs.get("decoder_snake_logscale", True))
479
+ self.enc_q = PosteriorEncoder(spec_channels, inter_channels, hidden_channels, 5, 1, 16, gin_channels=gin_channels)
480
+ self.flow = ResidualCouplingBlock(inter_channels, hidden_channels, 5, 1, 4, gin_channels=gin_channels)
481
+
482
+ if use_sdp:
483
+ self.dp = StochasticDurationPredictor(hidden_channels, 192, 3, 0.5, 4, gin_channels=gin_channels)
484
+ else:
485
+ self.dp = DurationPredictor(hidden_channels, 256, 3, 0.5, gin_channels=gin_channels)
486
+
487
+ if n_speakers > 1:
488
+ self.emb_g = nn.Embedding(n_speakers, gin_channels)
489
+
490
+ def forward(self, x, x_lengths, y, y_lengths, sid=None):
491
+
492
+ x, m_p, logs_p, x_mask = self.enc_p(x, x_lengths)
493
+ if self.n_speakers > 0:
494
+ g = self.emb_g(sid).unsqueeze(-1) # [b, h, 1]
495
+ else:
496
+ g = None
497
+
498
+ z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g)
499
+ z_p = self.flow(z, y_mask, g=g)
500
+
501
+ with torch.no_grad():
502
+ # negative cross-entropy
503
+ s_p_sq_r = torch.exp(-2 * logs_p) # [b, d, t]
504
+ neg_cent1 = torch.sum(-0.5 * math.log(2 * math.pi) - logs_p, [1], keepdim=True) # [b, 1, t_s]
505
+ neg_cent2 = torch.matmul(-0.5 * (z_p ** 2).transpose(1, 2), s_p_sq_r) # [b, t_t, d] x [b, d, t_s] = [b, t_t, t_s]
506
+ neg_cent3 = torch.matmul(z_p.transpose(1, 2), (m_p * s_p_sq_r)) # [b, t_t, d] x [b, d, t_s] = [b, t_t, t_s]
507
+ neg_cent4 = torch.sum(-0.5 * (m_p ** 2) * s_p_sq_r, [1], keepdim=True) # [b, 1, t_s]
508
+ neg_cent = neg_cent1 + neg_cent2 + neg_cent3 + neg_cent4
509
+
510
+ attn_mask = torch.unsqueeze(x_mask, 2) * torch.unsqueeze(y_mask, -1)
511
+ attn = monotonic_align.maximum_path(neg_cent, attn_mask.squeeze(1)).unsqueeze(1).detach()
512
+
513
+ w = attn.sum(2)
514
+ if self.use_sdp:
515
+ l_length = self.dp(x, x_mask, w, g=g)
516
+ l_length = l_length / torch.sum(x_mask)
517
+ else:
518
+ logw_ = torch.log(w + 1e-6) * x_mask
519
+ logw = self.dp(x, x_mask, g=g)
520
+ l_length = torch.sum((logw - logw_)**2, [1,2]) / torch.sum(x_mask) # for averaging
521
+
522
+ # expand prior
523
+ m_p = torch.matmul(attn.squeeze(1), m_p.transpose(1, 2)).transpose(1, 2)
524
+ logs_p = torch.matmul(attn.squeeze(1), logs_p.transpose(1, 2)).transpose(1, 2)
525
+
526
+ z_slice, ids_slice = commons.rand_slice_segments(z, y_lengths, self.segment_size)
527
+ o = self.dec(z_slice, g=g)
528
+ return o, l_length, attn, ids_slice, x_mask, y_mask, (z, z_p, m_p, logs_p, m_q, logs_q)
529
+
530
+ def infer(self, x, x_lengths, sid=None, noise_scale=1, length_scale=1, noise_scale_w=1., max_len=None):
531
+ x, m_p, logs_p, x_mask = self.enc_p(x, x_lengths)
532
+ if self.n_speakers > 0:
533
+ g = self.emb_g(sid).unsqueeze(-1) # [b, h, 1]
534
+ else:
535
+ g = None
536
+
537
+ if self.use_sdp:
538
+ logw = self.dp(x, x_mask, g=g, reverse=True, noise_scale=noise_scale_w)
539
+ else:
540
+ logw = self.dp(x, x_mask, g=g)
541
+ w = torch.exp(logw) * x_mask * length_scale
542
+ w_ceil = torch.ceil(w)
543
+ y_lengths = torch.clamp_min(torch.sum(w_ceil, [1, 2]), 1).long()
544
+ y_mask = torch.unsqueeze(commons.sequence_mask(y_lengths, None), 1).to(x_mask.dtype)
545
+ attn_mask = torch.unsqueeze(x_mask, 2) * torch.unsqueeze(y_mask, -1)
546
+ attn = commons.generate_path(w_ceil, attn_mask)
547
+
548
+ m_p = torch.matmul(attn.squeeze(1), m_p.transpose(1, 2)).transpose(1, 2) # [b, t', t], [b, t, d] -> [b, d, t']
549
+ logs_p = torch.matmul(attn.squeeze(1), logs_p.transpose(1, 2)).transpose(1, 2) # [b, t', t], [b, t, d] -> [b, d, t']
550
+
551
+ z_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) * noise_scale
552
+ z = self.flow(z_p, y_mask, g=g, reverse=True)
553
+ o = self.dec((z * y_mask)[:,:,:max_len], g=g)
554
+ return o, attn, y_mask, (z, z_p, m_p, logs_p)
555
+
556
+ def voice_conversion(self, y, y_lengths, sid_src, sid_tgt):
557
+ assert self.n_speakers > 0, "n_speakers have to be larger than 0."
558
+ g_src = self.emb_g(sid_src).unsqueeze(-1)
559
+ g_tgt = self.emb_g(sid_tgt).unsqueeze(-1)
560
+ z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src)
561
+ z_p = self.flow(z, y_mask, g=g_src)
562
+ z_hat = self.flow(z_p, y_mask, g=g_tgt, reverse=True)
563
+ o_hat = self.dec(z_hat * y_mask, g=g_tgt)
564
+ return o_hat, y_mask, (z, z_p, z_hat)
runtime/modules.py ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import math
3
+ import numpy as np
4
+ import scipy
5
+ import torch
6
+ from torch import nn
7
+ from torch.nn import functional as F
8
+
9
+ from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d
10
+ from torch.nn.utils import weight_norm, remove_weight_norm
11
+
12
+ import commons
13
+ from commons import init_weights, get_padding
14
+ from transforms import piecewise_rational_quadratic_transform
15
+
16
+
17
+ LRELU_SLOPE = 0.1
18
+
19
+
20
+ class LayerNorm(nn.Module):
21
+ def __init__(self, channels, eps=1e-5):
22
+ super().__init__()
23
+ self.channels = channels
24
+ self.eps = eps
25
+
26
+ self.gamma = nn.Parameter(torch.ones(channels))
27
+ self.beta = nn.Parameter(torch.zeros(channels))
28
+
29
+ def forward(self, x):
30
+ x = x.transpose(1, -1)
31
+ x = F.layer_norm(x, (self.channels,), self.gamma, self.beta, self.eps)
32
+ return x.transpose(1, -1)
33
+
34
+
35
+ class ConvReluNorm(nn.Module):
36
+ def __init__(self, in_channels, hidden_channels, out_channels, kernel_size, n_layers, p_dropout):
37
+ super().__init__()
38
+ self.in_channels = in_channels
39
+ self.hidden_channels = hidden_channels
40
+ self.out_channels = out_channels
41
+ self.kernel_size = kernel_size
42
+ self.n_layers = n_layers
43
+ self.p_dropout = p_dropout
44
+ assert n_layers > 1, "Number of layers should be larger than 0."
45
+
46
+ self.conv_layers = nn.ModuleList()
47
+ self.norm_layers = nn.ModuleList()
48
+ self.conv_layers.append(nn.Conv1d(in_channels, hidden_channels, kernel_size, padding=kernel_size//2))
49
+ self.norm_layers.append(LayerNorm(hidden_channels))
50
+ self.relu_drop = nn.Sequential(
51
+ nn.ReLU(),
52
+ nn.Dropout(p_dropout))
53
+ for _ in range(n_layers-1):
54
+ self.conv_layers.append(nn.Conv1d(hidden_channels, hidden_channels, kernel_size, padding=kernel_size//2))
55
+ self.norm_layers.append(LayerNorm(hidden_channels))
56
+ self.proj = nn.Conv1d(hidden_channels, out_channels, 1)
57
+ self.proj.weight.data.zero_()
58
+ self.proj.bias.data.zero_()
59
+
60
+ def forward(self, x, x_mask):
61
+ x_org = x
62
+ for i in range(self.n_layers):
63
+ x = self.conv_layers[i](x * x_mask)
64
+ x = self.norm_layers[i](x)
65
+ x = self.relu_drop(x)
66
+ x = x_org + self.proj(x)
67
+ return x * x_mask
68
+
69
+
70
+ class DDSConv(nn.Module):
71
+ """
72
+ Dialted and Depth-Separable Convolution
73
+ """
74
+ def __init__(self, channels, kernel_size, n_layers, p_dropout=0.):
75
+ super().__init__()
76
+ self.channels = channels
77
+ self.kernel_size = kernel_size
78
+ self.n_layers = n_layers
79
+ self.p_dropout = p_dropout
80
+
81
+ self.drop = nn.Dropout(p_dropout)
82
+ self.convs_sep = nn.ModuleList()
83
+ self.convs_1x1 = nn.ModuleList()
84
+ self.norms_1 = nn.ModuleList()
85
+ self.norms_2 = nn.ModuleList()
86
+ for i in range(n_layers):
87
+ dilation = kernel_size ** i
88
+ padding = (kernel_size * dilation - dilation) // 2
89
+ self.convs_sep.append(nn.Conv1d(channels, channels, kernel_size,
90
+ groups=channels, dilation=dilation, padding=padding
91
+ ))
92
+ self.convs_1x1.append(nn.Conv1d(channels, channels, 1))
93
+ self.norms_1.append(LayerNorm(channels))
94
+ self.norms_2.append(LayerNorm(channels))
95
+
96
+ def forward(self, x, x_mask, g=None):
97
+ if g is not None:
98
+ x = x + g
99
+ for i in range(self.n_layers):
100
+ y = self.convs_sep[i](x * x_mask)
101
+ y = self.norms_1[i](y)
102
+ y = F.gelu(y)
103
+ y = self.convs_1x1[i](y)
104
+ y = self.norms_2[i](y)
105
+ y = F.gelu(y)
106
+ y = self.drop(y)
107
+ x = x + y
108
+ return x * x_mask
109
+
110
+
111
+ class WN(torch.nn.Module):
112
+ def __init__(self, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=0, p_dropout=0):
113
+ super(WN, self).__init__()
114
+ assert(kernel_size % 2 == 1)
115
+ self.hidden_channels =hidden_channels
116
+ self.kernel_size = kernel_size,
117
+ self.dilation_rate = dilation_rate
118
+ self.n_layers = n_layers
119
+ self.gin_channels = gin_channels
120
+ self.p_dropout = p_dropout
121
+
122
+ self.in_layers = torch.nn.ModuleList()
123
+ self.res_skip_layers = torch.nn.ModuleList()
124
+ self.drop = nn.Dropout(p_dropout)
125
+
126
+ if gin_channels != 0:
127
+ cond_layer = torch.nn.Conv1d(gin_channels, 2*hidden_channels*n_layers, 1)
128
+ self.cond_layer = torch.nn.utils.weight_norm(cond_layer, name='weight')
129
+
130
+ for i in range(n_layers):
131
+ dilation = dilation_rate ** i
132
+ padding = int((kernel_size * dilation - dilation) / 2)
133
+ in_layer = torch.nn.Conv1d(hidden_channels, 2*hidden_channels, kernel_size,
134
+ dilation=dilation, padding=padding)
135
+ in_layer = torch.nn.utils.weight_norm(in_layer, name='weight')
136
+ self.in_layers.append(in_layer)
137
+
138
+ # last one is not necessary
139
+ if i < n_layers - 1:
140
+ res_skip_channels = 2 * hidden_channels
141
+ else:
142
+ res_skip_channels = hidden_channels
143
+
144
+ res_skip_layer = torch.nn.Conv1d(hidden_channels, res_skip_channels, 1)
145
+ res_skip_layer = torch.nn.utils.weight_norm(res_skip_layer, name='weight')
146
+ self.res_skip_layers.append(res_skip_layer)
147
+
148
+ def forward(self, x, x_mask, g=None, **kwargs):
149
+ output = torch.zeros_like(x)
150
+ n_channels_tensor = torch.IntTensor([self.hidden_channels])
151
+
152
+ if g is not None:
153
+ g = self.cond_layer(g)
154
+
155
+ for i in range(self.n_layers):
156
+ x_in = self.in_layers[i](x)
157
+ if g is not None:
158
+ cond_offset = i * 2 * self.hidden_channels
159
+ g_l = g[:,cond_offset:cond_offset+2*self.hidden_channels,:]
160
+ else:
161
+ g_l = torch.zeros_like(x_in)
162
+
163
+ acts = commons.fused_add_tanh_sigmoid_multiply(
164
+ x_in,
165
+ g_l,
166
+ n_channels_tensor)
167
+ acts = self.drop(acts)
168
+
169
+ res_skip_acts = self.res_skip_layers[i](acts)
170
+ if i < self.n_layers - 1:
171
+ res_acts = res_skip_acts[:,:self.hidden_channels,:]
172
+ x = (x + res_acts) * x_mask
173
+ output = output + res_skip_acts[:,self.hidden_channels:,:]
174
+ else:
175
+ output = output + res_skip_acts
176
+ return output * x_mask
177
+
178
+ def remove_weight_norm(self):
179
+ if self.gin_channels != 0:
180
+ torch.nn.utils.remove_weight_norm(self.cond_layer)
181
+ for l in self.in_layers:
182
+ torch.nn.utils.remove_weight_norm(l)
183
+ for l in self.res_skip_layers:
184
+ torch.nn.utils.remove_weight_norm(l)
185
+
186
+
187
+ class ResBlock1(torch.nn.Module):
188
+ def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5)):
189
+ super(ResBlock1, self).__init__()
190
+ self.convs1 = nn.ModuleList([
191
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0],
192
+ padding=get_padding(kernel_size, dilation[0]))),
193
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1],
194
+ padding=get_padding(kernel_size, dilation[1]))),
195
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[2],
196
+ padding=get_padding(kernel_size, dilation[2])))
197
+ ])
198
+ self.convs1.apply(init_weights)
199
+
200
+ self.convs2 = nn.ModuleList([
201
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
202
+ padding=get_padding(kernel_size, 1))),
203
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
204
+ padding=get_padding(kernel_size, 1))),
205
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
206
+ padding=get_padding(kernel_size, 1)))
207
+ ])
208
+ self.convs2.apply(init_weights)
209
+
210
+ def forward(self, x, x_mask=None):
211
+ for c1, c2 in zip(self.convs1, self.convs2):
212
+ xt = F.leaky_relu(x, LRELU_SLOPE)
213
+ if x_mask is not None:
214
+ xt = xt * x_mask
215
+ xt = c1(xt)
216
+ xt = F.leaky_relu(xt, LRELU_SLOPE)
217
+ if x_mask is not None:
218
+ xt = xt * x_mask
219
+ xt = c2(xt)
220
+ x = xt + x
221
+ if x_mask is not None:
222
+ x = x * x_mask
223
+ return x
224
+
225
+ def remove_weight_norm(self):
226
+ for l in self.convs1:
227
+ remove_weight_norm(l)
228
+ for l in self.convs2:
229
+ remove_weight_norm(l)
230
+
231
+
232
+ class ResBlock2(torch.nn.Module):
233
+ def __init__(self, channels, kernel_size=3, dilation=(1, 3)):
234
+ super(ResBlock2, self).__init__()
235
+ self.convs = nn.ModuleList([
236
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0],
237
+ padding=get_padding(kernel_size, dilation[0]))),
238
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1],
239
+ padding=get_padding(kernel_size, dilation[1])))
240
+ ])
241
+ self.convs.apply(init_weights)
242
+
243
+ def forward(self, x, x_mask=None):
244
+ for c in self.convs:
245
+ xt = F.leaky_relu(x, LRELU_SLOPE)
246
+ if x_mask is not None:
247
+ xt = xt * x_mask
248
+ xt = c(xt)
249
+ x = xt + x
250
+ if x_mask is not None:
251
+ x = x * x_mask
252
+ return x
253
+
254
+ def remove_weight_norm(self):
255
+ for l in self.convs:
256
+ remove_weight_norm(l)
257
+
258
+
259
+ class Log(nn.Module):
260
+ def forward(self, x, x_mask, reverse=False, **kwargs):
261
+ if not reverse:
262
+ y = torch.log(torch.clamp_min(x, 1e-5)) * x_mask
263
+ logdet = torch.sum(-y, [1, 2])
264
+ return y, logdet
265
+ else:
266
+ x = torch.exp(x) * x_mask
267
+ return x
268
+
269
+
270
+ class Flip(nn.Module):
271
+ def forward(self, x, *args, reverse=False, **kwargs):
272
+ x = torch.flip(x, [1])
273
+ if not reverse:
274
+ logdet = torch.zeros(x.size(0)).to(dtype=x.dtype, device=x.device)
275
+ return x, logdet
276
+ else:
277
+ return x
278
+
279
+
280
+ class ElementwiseAffine(nn.Module):
281
+ def __init__(self, channels):
282
+ super().__init__()
283
+ self.channels = channels
284
+ self.m = nn.Parameter(torch.zeros(channels,1))
285
+ self.logs = nn.Parameter(torch.zeros(channels,1))
286
+
287
+ def forward(self, x, x_mask, reverse=False, **kwargs):
288
+ if not reverse:
289
+ y = self.m + torch.exp(self.logs) * x
290
+ y = y * x_mask
291
+ logdet = torch.sum(self.logs * x_mask, [1,2])
292
+ return y, logdet
293
+ else:
294
+ x = (x - self.m) * torch.exp(-self.logs) * x_mask
295
+ return x
296
+
297
+
298
+ class ResidualCouplingLayer(nn.Module):
299
+ def __init__(self,
300
+ channels,
301
+ hidden_channels,
302
+ kernel_size,
303
+ dilation_rate,
304
+ n_layers,
305
+ p_dropout=0,
306
+ gin_channels=0,
307
+ mean_only=False):
308
+ assert channels % 2 == 0, "channels should be divisible by 2"
309
+ super().__init__()
310
+ self.channels = channels
311
+ self.hidden_channels = hidden_channels
312
+ self.kernel_size = kernel_size
313
+ self.dilation_rate = dilation_rate
314
+ self.n_layers = n_layers
315
+ self.half_channels = channels // 2
316
+ self.mean_only = mean_only
317
+
318
+ self.pre = nn.Conv1d(self.half_channels, hidden_channels, 1)
319
+ self.enc = WN(hidden_channels, kernel_size, dilation_rate, n_layers, p_dropout=p_dropout, gin_channels=gin_channels)
320
+ self.post = nn.Conv1d(hidden_channels, self.half_channels * (2 - mean_only), 1)
321
+ self.post.weight.data.zero_()
322
+ self.post.bias.data.zero_()
323
+
324
+ def forward(self, x, x_mask, g=None, reverse=False):
325
+ x0, x1 = torch.split(x, [self.half_channels]*2, 1)
326
+ h = self.pre(x0) * x_mask
327
+ h = self.enc(h, x_mask, g=g)
328
+ stats = self.post(h) * x_mask
329
+ if not self.mean_only:
330
+ m, logs = torch.split(stats, [self.half_channels]*2, 1)
331
+ else:
332
+ m = stats
333
+ logs = torch.zeros_like(m)
334
+
335
+ if not reverse:
336
+ x1 = m + x1 * torch.exp(logs) * x_mask
337
+ x = torch.cat([x0, x1], 1)
338
+ logdet = torch.sum(logs, [1,2])
339
+ return x, logdet
340
+ else:
341
+ x1 = (x1 - m) * torch.exp(-logs) * x_mask
342
+ x = torch.cat([x0, x1], 1)
343
+ return x
344
+
345
+
346
+ class ConvFlow(nn.Module):
347
+ def __init__(self, in_channels, filter_channels, kernel_size, n_layers, num_bins=10, tail_bound=5.0):
348
+ super().__init__()
349
+ self.in_channels = in_channels
350
+ self.filter_channels = filter_channels
351
+ self.kernel_size = kernel_size
352
+ self.n_layers = n_layers
353
+ self.num_bins = num_bins
354
+ self.tail_bound = tail_bound
355
+ self.half_channels = in_channels // 2
356
+
357
+ self.pre = nn.Conv1d(self.half_channels, filter_channels, 1)
358
+ self.convs = DDSConv(filter_channels, kernel_size, n_layers, p_dropout=0.)
359
+ self.proj = nn.Conv1d(filter_channels, self.half_channels * (num_bins * 3 - 1), 1)
360
+ self.proj.weight.data.zero_()
361
+ self.proj.bias.data.zero_()
362
+
363
+ def forward(self, x, x_mask, g=None, reverse=False):
364
+ x0, x1 = torch.split(x, [self.half_channels]*2, 1)
365
+ h = self.pre(x0)
366
+ h = self.convs(h, x_mask, g=g)
367
+ h = self.proj(h) * x_mask
368
+
369
+ b, c, t = x0.shape
370
+ h = h.reshape(b, c, -1, t).permute(0, 1, 3, 2) # [b, cx?, t] -> [b, c, t, ?]
371
+
372
+ unnormalized_widths = h[..., :self.num_bins] / math.sqrt(self.filter_channels)
373
+ unnormalized_heights = h[..., self.num_bins:2*self.num_bins] / math.sqrt(self.filter_channels)
374
+ unnormalized_derivatives = h[..., 2 * self.num_bins:]
375
+
376
+ x1, logabsdet = piecewise_rational_quadratic_transform(x1,
377
+ unnormalized_widths,
378
+ unnormalized_heights,
379
+ unnormalized_derivatives,
380
+ inverse=reverse,
381
+ tails='linear',
382
+ tail_bound=self.tail_bound
383
+ )
384
+
385
+ x = torch.cat([x0, x1], 1) * x_mask
386
+ logdet = torch.sum(logabsdet * x_mask, [1,2])
387
+ if not reverse:
388
+ return x, logdet
389
+ else:
390
+ return x
runtime/monotonic_align.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ """Training-only alignment stub; deployable inference never calls maximum_path."""
2
+
3
+ def maximum_path(*args, **kwargs):
4
+ raise RuntimeError("Monotonic alignment is unavailable in the inference package.")
runtime/text/LICENSE ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2017 Keith Ito
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
runtime/text/__init__.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """ from https://github.com/keithito/tacotron """
2
+ from text import cleaners
3
+ from text.symbols import symbols
4
+
5
+
6
+ # Mappings from symbol to numeric ID and vice versa:
7
+ _symbol_to_id = {s: i for i, s in enumerate(symbols)}
8
+ _id_to_symbol = {i: s for i, s in enumerate(symbols)}
9
+
10
+
11
+ def text_to_sequence(text, cleaner_names):
12
+ '''Converts a string of text to a sequence of IDs corresponding to the symbols in the text.
13
+ Args:
14
+ text: string to convert to a sequence
15
+ cleaner_names: names of the cleaner functions to run the text through
16
+ Returns:
17
+ List of integers corresponding to the symbols in the text
18
+ '''
19
+ sequence = []
20
+
21
+ clean_text = _clean_text(text, cleaner_names)
22
+ for symbol in clean_text:
23
+ symbol_id = _symbol_to_id[symbol]
24
+ sequence += [symbol_id]
25
+ return sequence
26
+
27
+
28
+ def cleaned_text_to_sequence(cleaned_text):
29
+ '''Converts a string of text to a sequence of IDs corresponding to the symbols in the text.
30
+ Args:
31
+ text: string to convert to a sequence
32
+ Returns:
33
+ List of integers corresponding to the symbols in the text
34
+ '''
35
+ sequence = [_symbol_to_id[symbol] for symbol in cleaned_text]
36
+ return sequence
37
+
38
+
39
+ def sequence_to_text(sequence):
40
+ '''Converts a sequence of IDs back to a string'''
41
+ result = ''
42
+ for symbol_id in sequence:
43
+ s = _id_to_symbol[symbol_id]
44
+ result += s
45
+ return result
46
+
47
+
48
+ def _clean_text(text, cleaner_names):
49
+ for name in cleaner_names:
50
+ cleaner = getattr(cleaners, name)
51
+ if not cleaner:
52
+ raise Exception('Unknown cleaner: %s' % name)
53
+ text = cleaner(text)
54
+ return text
runtime/text/cleaners.py ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """ from https://github.com/keithito/tacotron """
2
+
3
+ '''
4
+ Cleaners are transformations that run over the input text at both training and eval time.
5
+
6
+ Cleaners can be selected by passing a comma-delimited list of cleaner names as the "cleaners"
7
+ hyperparameter. Some cleaners are English-specific. You'll typically want to use:
8
+ 1. "english_cleaners" for English text
9
+ 2. "transliteration_cleaners" for non-English text that can be transliterated to ASCII using
10
+ the Unidecode library (https://pypi.python.org/pypi/Unidecode)
11
+ 3. "basic_cleaners" if you do not want to transliterate (in this case, you should also update
12
+ the symbols in symbols.py to match your data).
13
+ '''
14
+
15
+ import re
16
+ from unidecode import unidecode
17
+ from phonemizer import phonemize
18
+
19
+
20
+ # Regular expression matching whitespace:
21
+ _whitespace_re = re.compile(r'\s+')
22
+
23
+ # List of (regular expression, replacement) pairs for abbreviations:
24
+ _abbreviations = [(re.compile('\\b%s\\.' % x[0], re.IGNORECASE), x[1]) for x in [
25
+ ('mrs', 'misess'),
26
+ ('mr', 'mister'),
27
+ ('dr', 'doctor'),
28
+ ('st', 'saint'),
29
+ ('co', 'company'),
30
+ ('jr', 'junior'),
31
+ ('maj', 'major'),
32
+ ('gen', 'general'),
33
+ ('drs', 'doctors'),
34
+ ('rev', 'reverend'),
35
+ ('lt', 'lieutenant'),
36
+ ('hon', 'honorable'),
37
+ ('sgt', 'sergeant'),
38
+ ('capt', 'captain'),
39
+ ('esq', 'esquire'),
40
+ ('ltd', 'limited'),
41
+ ('col', 'colonel'),
42
+ ('ft', 'fort'),
43
+ ]]
44
+
45
+
46
+ def expand_abbreviations(text):
47
+ for regex, replacement in _abbreviations:
48
+ text = re.sub(regex, replacement, text)
49
+ return text
50
+
51
+
52
+ def expand_numbers(text):
53
+ return normalize_numbers(text)
54
+
55
+
56
+ def lowercase(text):
57
+ return text.lower()
58
+
59
+
60
+ def collapse_whitespace(text):
61
+ return re.sub(_whitespace_re, ' ', text)
62
+
63
+
64
+ def convert_to_ascii(text):
65
+ return unidecode(text)
66
+
67
+
68
+ def basic_cleaners(text):
69
+ '''Basic pipeline that lowercases and collapses whitespace without transliteration.'''
70
+ text = lowercase(text)
71
+ text = collapse_whitespace(text)
72
+ return text
73
+
74
+
75
+ def transliteration_cleaners(text):
76
+ '''Pipeline for non-English text that transliterates to ASCII.'''
77
+ text = convert_to_ascii(text)
78
+ text = lowercase(text)
79
+ text = collapse_whitespace(text)
80
+ return text
81
+
82
+
83
+ def english_cleaners(text):
84
+ '''Pipeline for English text, including abbreviation expansion.'''
85
+ text = convert_to_ascii(text)
86
+ text = lowercase(text)
87
+ text = expand_abbreviations(text)
88
+ phonemes = phonemize(text, language='en-us', backend='espeak', strip=True)
89
+ phonemes = collapse_whitespace(phonemes)
90
+ return phonemes
91
+
92
+
93
+ def english_cleaners2(text):
94
+ '''Pipeline for English text, including abbreviation expansion. + punctuation + stress'''
95
+ text = convert_to_ascii(text)
96
+ text = lowercase(text)
97
+ text = expand_abbreviations(text)
98
+ phonemes = phonemize(text, language='en-us', backend='espeak', strip=True, preserve_punctuation=True, with_stress=True)
99
+ phonemes = collapse_whitespace(phonemes)
100
+ return phonemes
runtime/text/symbols.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """ from https://github.com/keithito/tacotron """
2
+
3
+ '''
4
+ Defines the set of symbols used in text input to the model.
5
+ '''
6
+ _pad = '_'
7
+ _punctuation = ';:,.!?¡¿—…"«»“” '
8
+ _letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
9
+ _letters_ipa = "ɑɐɒæɓʙβɔɕçɗɖðʤəɘɚɛɜɝɞɟʄɡɠɢʛɦɧħɥʜɨɪʝɭɬɫɮʟɱɯɰŋɳɲɴøɵɸθœɶʘɹɺɾɻʀʁɽʂʃʈʧʉʊʋⱱʌɣɤʍχʎʏʑʐʒʔʡʕʢǀǁǂǃˈˌːˑʼʴʰʱʲʷˠˤ˞↓↑→↗↘'̩'ᵻ"
10
+
11
+
12
+ # Export all symbols:
13
+ symbols = [_pad] + list(_punctuation) + list(_letters) + list(_letters_ipa)
14
+
15
+ # Special symbol ids
16
+ SPACE_ID = symbols.index(" ")
runtime/transforms.py ADDED
@@ -0,0 +1,193 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from torch.nn import functional as F
3
+
4
+ import numpy as np
5
+
6
+
7
+ DEFAULT_MIN_BIN_WIDTH = 1e-3
8
+ DEFAULT_MIN_BIN_HEIGHT = 1e-3
9
+ DEFAULT_MIN_DERIVATIVE = 1e-3
10
+
11
+
12
+ def piecewise_rational_quadratic_transform(inputs,
13
+ unnormalized_widths,
14
+ unnormalized_heights,
15
+ unnormalized_derivatives,
16
+ inverse=False,
17
+ tails=None,
18
+ tail_bound=1.,
19
+ min_bin_width=DEFAULT_MIN_BIN_WIDTH,
20
+ min_bin_height=DEFAULT_MIN_BIN_HEIGHT,
21
+ min_derivative=DEFAULT_MIN_DERIVATIVE):
22
+
23
+ if tails is None:
24
+ spline_fn = rational_quadratic_spline
25
+ spline_kwargs = {}
26
+ else:
27
+ spline_fn = unconstrained_rational_quadratic_spline
28
+ spline_kwargs = {
29
+ 'tails': tails,
30
+ 'tail_bound': tail_bound
31
+ }
32
+
33
+ outputs, logabsdet = spline_fn(
34
+ inputs=inputs,
35
+ unnormalized_widths=unnormalized_widths,
36
+ unnormalized_heights=unnormalized_heights,
37
+ unnormalized_derivatives=unnormalized_derivatives,
38
+ inverse=inverse,
39
+ min_bin_width=min_bin_width,
40
+ min_bin_height=min_bin_height,
41
+ min_derivative=min_derivative,
42
+ **spline_kwargs
43
+ )
44
+ return outputs, logabsdet
45
+
46
+
47
+ def searchsorted(bin_locations, inputs, eps=1e-6):
48
+ bin_locations[..., -1] += eps
49
+ return torch.sum(
50
+ inputs[..., None] >= bin_locations,
51
+ dim=-1
52
+ ) - 1
53
+
54
+
55
+ def unconstrained_rational_quadratic_spline(inputs,
56
+ unnormalized_widths,
57
+ unnormalized_heights,
58
+ unnormalized_derivatives,
59
+ inverse=False,
60
+ tails='linear',
61
+ tail_bound=1.,
62
+ min_bin_width=DEFAULT_MIN_BIN_WIDTH,
63
+ min_bin_height=DEFAULT_MIN_BIN_HEIGHT,
64
+ min_derivative=DEFAULT_MIN_DERIVATIVE):
65
+ inside_interval_mask = (inputs >= -tail_bound) & (inputs <= tail_bound)
66
+ outside_interval_mask = ~inside_interval_mask
67
+
68
+ outputs = torch.zeros_like(inputs)
69
+ logabsdet = torch.zeros_like(inputs)
70
+
71
+ if tails == 'linear':
72
+ unnormalized_derivatives = F.pad(unnormalized_derivatives, pad=(1, 1))
73
+ constant = np.log(np.exp(1 - min_derivative) - 1)
74
+ unnormalized_derivatives[..., 0] = constant
75
+ unnormalized_derivatives[..., -1] = constant
76
+
77
+ outputs[outside_interval_mask] = inputs[outside_interval_mask]
78
+ logabsdet[outside_interval_mask] = 0
79
+ else:
80
+ raise RuntimeError('{} tails are not implemented.'.format(tails))
81
+
82
+ outputs[inside_interval_mask], logabsdet[inside_interval_mask] = rational_quadratic_spline(
83
+ inputs=inputs[inside_interval_mask],
84
+ unnormalized_widths=unnormalized_widths[inside_interval_mask, :],
85
+ unnormalized_heights=unnormalized_heights[inside_interval_mask, :],
86
+ unnormalized_derivatives=unnormalized_derivatives[inside_interval_mask, :],
87
+ inverse=inverse,
88
+ left=-tail_bound, right=tail_bound, bottom=-tail_bound, top=tail_bound,
89
+ min_bin_width=min_bin_width,
90
+ min_bin_height=min_bin_height,
91
+ min_derivative=min_derivative
92
+ )
93
+
94
+ return outputs, logabsdet
95
+
96
+ def rational_quadratic_spline(inputs,
97
+ unnormalized_widths,
98
+ unnormalized_heights,
99
+ unnormalized_derivatives,
100
+ inverse=False,
101
+ left=0., right=1., bottom=0., top=1.,
102
+ min_bin_width=DEFAULT_MIN_BIN_WIDTH,
103
+ min_bin_height=DEFAULT_MIN_BIN_HEIGHT,
104
+ min_derivative=DEFAULT_MIN_DERIVATIVE):
105
+ if torch.min(inputs) < left or torch.max(inputs) > right:
106
+ raise ValueError('Input to a transform is not within its domain')
107
+
108
+ num_bins = unnormalized_widths.shape[-1]
109
+
110
+ if min_bin_width * num_bins > 1.0:
111
+ raise ValueError('Minimal bin width too large for the number of bins')
112
+ if min_bin_height * num_bins > 1.0:
113
+ raise ValueError('Minimal bin height too large for the number of bins')
114
+
115
+ widths = F.softmax(unnormalized_widths, dim=-1)
116
+ widths = min_bin_width + (1 - min_bin_width * num_bins) * widths
117
+ cumwidths = torch.cumsum(widths, dim=-1)
118
+ cumwidths = F.pad(cumwidths, pad=(1, 0), mode='constant', value=0.0)
119
+ cumwidths = (right - left) * cumwidths + left
120
+ cumwidths[..., 0] = left
121
+ cumwidths[..., -1] = right
122
+ widths = cumwidths[..., 1:] - cumwidths[..., :-1]
123
+
124
+ derivatives = min_derivative + F.softplus(unnormalized_derivatives)
125
+
126
+ heights = F.softmax(unnormalized_heights, dim=-1)
127
+ heights = min_bin_height + (1 - min_bin_height * num_bins) * heights
128
+ cumheights = torch.cumsum(heights, dim=-1)
129
+ cumheights = F.pad(cumheights, pad=(1, 0), mode='constant', value=0.0)
130
+ cumheights = (top - bottom) * cumheights + bottom
131
+ cumheights[..., 0] = bottom
132
+ cumheights[..., -1] = top
133
+ heights = cumheights[..., 1:] - cumheights[..., :-1]
134
+
135
+ if inverse:
136
+ bin_idx = searchsorted(cumheights, inputs)[..., None]
137
+ else:
138
+ bin_idx = searchsorted(cumwidths, inputs)[..., None]
139
+
140
+ input_cumwidths = cumwidths.gather(-1, bin_idx)[..., 0]
141
+ input_bin_widths = widths.gather(-1, bin_idx)[..., 0]
142
+
143
+ input_cumheights = cumheights.gather(-1, bin_idx)[..., 0]
144
+ delta = heights / widths
145
+ input_delta = delta.gather(-1, bin_idx)[..., 0]
146
+
147
+ input_derivatives = derivatives.gather(-1, bin_idx)[..., 0]
148
+ input_derivatives_plus_one = derivatives[..., 1:].gather(-1, bin_idx)[..., 0]
149
+
150
+ input_heights = heights.gather(-1, bin_idx)[..., 0]
151
+
152
+ if inverse:
153
+ a = (((inputs - input_cumheights) * (input_derivatives
154
+ + input_derivatives_plus_one
155
+ - 2 * input_delta)
156
+ + input_heights * (input_delta - input_derivatives)))
157
+ b = (input_heights * input_derivatives
158
+ - (inputs - input_cumheights) * (input_derivatives
159
+ + input_derivatives_plus_one
160
+ - 2 * input_delta))
161
+ c = - input_delta * (inputs - input_cumheights)
162
+
163
+ discriminant = b.pow(2) - 4 * a * c
164
+ assert (discriminant >= 0).all()
165
+
166
+ root = (2 * c) / (-b - torch.sqrt(discriminant))
167
+ outputs = root * input_bin_widths + input_cumwidths
168
+
169
+ theta_one_minus_theta = root * (1 - root)
170
+ denominator = input_delta + ((input_derivatives + input_derivatives_plus_one - 2 * input_delta)
171
+ * theta_one_minus_theta)
172
+ derivative_numerator = input_delta.pow(2) * (input_derivatives_plus_one * root.pow(2)
173
+ + 2 * input_delta * theta_one_minus_theta
174
+ + input_derivatives * (1 - root).pow(2))
175
+ logabsdet = torch.log(derivative_numerator) - 2 * torch.log(denominator)
176
+
177
+ return outputs, -logabsdet
178
+ else:
179
+ theta = (inputs - input_cumwidths) / input_bin_widths
180
+ theta_one_minus_theta = theta * (1 - theta)
181
+
182
+ numerator = input_heights * (input_delta * theta.pow(2)
183
+ + input_derivatives * theta_one_minus_theta)
184
+ denominator = input_delta + ((input_derivatives + input_derivatives_plus_one - 2 * input_delta)
185
+ * theta_one_minus_theta)
186
+ outputs = input_cumheights + numerator / denominator
187
+
188
+ derivative_numerator = input_delta.pow(2) * (input_derivatives_plus_one * theta.pow(2)
189
+ + 2 * input_delta * theta_one_minus_theta
190
+ + input_derivatives * (1 - theta).pow(2))
191
+ logabsdet = torch.log(derivative_numerator) - 2 * torch.log(denominator)
192
+
193
+ return outputs, logabsdet
runtime/utils.py ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import glob
3
+ import sys
4
+ import argparse
5
+ import logging
6
+ import json
7
+ import subprocess
8
+ import numpy as np
9
+ from scipy.io.wavfile import read
10
+ import torch
11
+
12
+ MATPLOTLIB_FLAG = False
13
+
14
+ logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
15
+ logger = logging
16
+
17
+
18
+ def load_checkpoint(checkpoint_path, model, optimizer=None):
19
+ assert os.path.isfile(checkpoint_path)
20
+ checkpoint_dict = torch.load(checkpoint_path, map_location='cpu')
21
+ iteration = checkpoint_dict['iteration']
22
+ learning_rate = checkpoint_dict['learning_rate']
23
+ if optimizer is not None:
24
+ optimizer.load_state_dict(checkpoint_dict['optimizer'])
25
+ saved_state_dict = checkpoint_dict['model']
26
+ if hasattr(model, 'module'):
27
+ state_dict = model.module.state_dict()
28
+ else:
29
+ state_dict = model.state_dict()
30
+ new_state_dict= {}
31
+ for k, v in state_dict.items():
32
+ try:
33
+ new_state_dict[k] = saved_state_dict[k]
34
+ except:
35
+ logger.info("%s is not in the checkpoint" % k)
36
+ new_state_dict[k] = v
37
+ if hasattr(model, 'module'):
38
+ model.module.load_state_dict(new_state_dict)
39
+ else:
40
+ model.load_state_dict(new_state_dict)
41
+ logger.info("Loaded checkpoint '{}' (iteration {})" .format(
42
+ checkpoint_path, iteration))
43
+ return model, optimizer, learning_rate, iteration
44
+
45
+
46
+ def save_checkpoint(model, optimizer, learning_rate, iteration, checkpoint_path):
47
+ logger.info("Saving model and optimizer state at iteration {} to {}".format(
48
+ iteration, checkpoint_path))
49
+ if hasattr(model, 'module'):
50
+ state_dict = model.module.state_dict()
51
+ else:
52
+ state_dict = model.state_dict()
53
+ torch.save({'model': state_dict,
54
+ 'iteration': iteration,
55
+ 'optimizer': optimizer.state_dict(),
56
+ 'learning_rate': learning_rate}, checkpoint_path)
57
+
58
+
59
+ def summarize(writer, global_step, scalars={}, histograms={}, images={}, audios={}, audio_sampling_rate=22050):
60
+ for k, v in scalars.items():
61
+ writer.add_scalar(k, v, global_step)
62
+ for k, v in histograms.items():
63
+ writer.add_histogram(k, v, global_step)
64
+ for k, v in images.items():
65
+ writer.add_image(k, v, global_step, dataformats='HWC')
66
+ for k, v in audios.items():
67
+ writer.add_audio(k, v, global_step, audio_sampling_rate)
68
+
69
+
70
+ def latest_checkpoint_path(dir_path, regex="G_*.pth"):
71
+ f_list = glob.glob(os.path.join(dir_path, regex))
72
+ f_list.sort(key=lambda f: int("".join(filter(str.isdigit, f))))
73
+ x = f_list[-1]
74
+ print(x)
75
+ return x
76
+
77
+
78
+ def plot_spectrogram_to_numpy(spectrogram):
79
+ global MATPLOTLIB_FLAG
80
+ if not MATPLOTLIB_FLAG:
81
+ import matplotlib
82
+ matplotlib.use("Agg")
83
+ MATPLOTLIB_FLAG = True
84
+ mpl_logger = logging.getLogger('matplotlib')
85
+ mpl_logger.setLevel(logging.WARNING)
86
+ import matplotlib.pylab as plt
87
+ import numpy as np
88
+
89
+ fig, ax = plt.subplots(figsize=(10,2))
90
+ im = ax.imshow(spectrogram, aspect="auto", origin="lower",
91
+ interpolation='none')
92
+ plt.colorbar(im, ax=ax)
93
+ plt.xlabel("Frames")
94
+ plt.ylabel("Channels")
95
+ plt.tight_layout()
96
+
97
+ fig.canvas.draw()
98
+ data = np.asarray(fig.canvas.buffer_rgba(), dtype=np.uint8)[..., :3].copy()
99
+ plt.close()
100
+ return data
101
+
102
+
103
+ def plot_alignment_to_numpy(alignment, info=None):
104
+ global MATPLOTLIB_FLAG
105
+ if not MATPLOTLIB_FLAG:
106
+ import matplotlib
107
+ matplotlib.use("Agg")
108
+ MATPLOTLIB_FLAG = True
109
+ mpl_logger = logging.getLogger('matplotlib')
110
+ mpl_logger.setLevel(logging.WARNING)
111
+ import matplotlib.pylab as plt
112
+ import numpy as np
113
+
114
+ fig, ax = plt.subplots(figsize=(6, 4))
115
+ im = ax.imshow(alignment.transpose(), aspect='auto', origin='lower',
116
+ interpolation='none')
117
+ fig.colorbar(im, ax=ax)
118
+ xlabel = 'Decoder timestep'
119
+ if info is not None:
120
+ xlabel += '\n\n' + info
121
+ plt.xlabel(xlabel)
122
+ plt.ylabel('Encoder timestep')
123
+ plt.tight_layout()
124
+
125
+ fig.canvas.draw()
126
+ data = np.asarray(fig.canvas.buffer_rgba(), dtype=np.uint8)[..., :3].copy()
127
+ plt.close()
128
+ return data
129
+
130
+
131
+ def load_wav_to_torch(full_path):
132
+ sampling_rate, data = read(full_path)
133
+ return torch.FloatTensor(data.astype(np.float32)), sampling_rate
134
+
135
+
136
+ def load_filepaths_and_text(filename, split="|"):
137
+ with open(filename, encoding='utf-8') as f:
138
+ filepaths_and_text = [line.strip().split(split) for line in f]
139
+ return filepaths_and_text
140
+
141
+
142
+ def get_hparams(init=True):
143
+ parser = argparse.ArgumentParser()
144
+ parser.add_argument('-c', '--config', type=str, default="./configs/base.json",
145
+ help='JSON file for configuration')
146
+ parser.add_argument('-m', '--model', type=str, required=True,
147
+ help='Model name')
148
+
149
+ args = parser.parse_args()
150
+ model_dir = os.path.join("./logs", args.model)
151
+
152
+ if not os.path.exists(model_dir):
153
+ os.makedirs(model_dir)
154
+
155
+ config_path = args.config
156
+ config_save_path = os.path.join(model_dir, "config.json")
157
+ if init:
158
+ with open(config_path, "r") as f:
159
+ data = f.read()
160
+ with open(config_save_path, "w") as f:
161
+ f.write(data)
162
+ else:
163
+ with open(config_save_path, "r") as f:
164
+ data = f.read()
165
+ config = json.loads(data)
166
+
167
+ hparams = HParams(**config)
168
+ hparams.model_dir = model_dir
169
+ return hparams
170
+
171
+
172
+ def get_hparams_from_dir(model_dir):
173
+ config_save_path = os.path.join(model_dir, "config.json")
174
+ with open(config_save_path, "r") as f:
175
+ data = f.read()
176
+ config = json.loads(data)
177
+
178
+ hparams =HParams(**config)
179
+ hparams.model_dir = model_dir
180
+ return hparams
181
+
182
+
183
+ def get_hparams_from_file(config_path):
184
+ with open(config_path, "r") as f:
185
+ data = f.read()
186
+ config = json.loads(data)
187
+
188
+ hparams =HParams(**config)
189
+ return hparams
190
+
191
+
192
+ def check_git_hash(model_dir):
193
+ source_dir = os.path.dirname(os.path.realpath(__file__))
194
+ if not os.path.exists(os.path.join(source_dir, ".git")):
195
+ logger.warn("{} is not a git repository, therefore hash value comparison will be ignored.".format(
196
+ source_dir
197
+ ))
198
+ return
199
+
200
+ cur_hash = subprocess.getoutput("git rev-parse HEAD")
201
+
202
+ path = os.path.join(model_dir, "githash")
203
+ if os.path.exists(path):
204
+ saved_hash = open(path).read()
205
+ if saved_hash != cur_hash:
206
+ logger.warn("git hash values are different. {}(saved) != {}(current)".format(
207
+ saved_hash[:8], cur_hash[:8]))
208
+ else:
209
+ open(path, "w").write(cur_hash)
210
+
211
+
212
+ def get_logger(model_dir, filename="train.log"):
213
+ global logger
214
+ logger = logging.getLogger(os.path.basename(model_dir))
215
+ logger.setLevel(logging.DEBUG)
216
+
217
+ formatter = logging.Formatter("%(asctime)s\t%(name)s\t%(levelname)s\t%(message)s")
218
+ if not os.path.exists(model_dir):
219
+ os.makedirs(model_dir)
220
+ h = logging.FileHandler(os.path.join(model_dir, filename))
221
+ h.setLevel(logging.DEBUG)
222
+ h.setFormatter(formatter)
223
+ logger.addHandler(h)
224
+ return logger
225
+
226
+
227
+ class HParams():
228
+ def __init__(self, **kwargs):
229
+ for k, v in kwargs.items():
230
+ if type(v) == dict:
231
+ v = HParams(**v)
232
+ self[k] = v
233
+
234
+ def keys(self):
235
+ return self.__dict__.keys()
236
+
237
+ def items(self):
238
+ return self.__dict__.items()
239
+
240
+ def values(self):
241
+ return self.__dict__.values()
242
+
243
+ def __len__(self):
244
+ return len(self.__dict__)
245
+
246
+ def __getitem__(self, key):
247
+ return getattr(self, key)
248
+
249
+ def __setitem__(self, key, value):
250
+ return setattr(self, key, value)
251
+
252
+ def __contains__(self, key):
253
+ return key in self.__dict__
254
+
255
+ def __repr__(self):
256
+ return self.__dict__.__repr__()
samples/male/conversational.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f9e0f1d0ff2c5ced4ac05d8bc44b8a14a8b0c79ea36ed5aaa936df1840e899ed
3
+ size 180780
samples/male/names_places.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fdeea745130c5d873fcb6ea8a5674d529c325739b2ad307fa422e7e2c9fd4997
3
+ size 182828
samples/male/numbers.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a73cc26c31c11b1a78d26f8ebd382de4efb37b3514d7f2c91b9528ca79e7daf1
3
+ size 229932
samples/male/punctuation.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca433246649b7588982afa6dd67db2f40edf238b8ef87f865d8bb3eb885f386a
3
+ size 255020
samples/male/technical.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2b59ad3d449c22b851d4a5f882f7a5e9d3413d0bc1e1037aa3374a3470c91114
3
+ size 192556
smoke/manifest.jsonl ADDED
@@ -0,0 +1 @@
 
 
1
+ {"id": "release_smoke", "category": "release", "text": "The final release package passed its deterministic synthesis check.", "model": "inflect-micro-v2-release", "audio": "release_polish_overnight_20260720/release_candidates/Inflect-Micro-v2-male/smoke/release_smoke.wav"}
smoke/release_smoke.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:31be94d7b74095b22b68dd5750596e23406e9a85d51bb9fbc49969bfa68abdbf
3
+ size 190508
smoke/standalone_cpu.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:912f69948b48abdc1227131b8fc07e1fce4ab7b6046016c9e9b63c4b729a5152
3
+ size 173612
smoke_prompt.jsonl ADDED
@@ -0,0 +1 @@
 
 
1
+ {"id": "release_smoke", "category": "release", "text": "The final release package passed its deterministic synthesis check."}
third_party/BIGVGAN_LICENSE.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2024 NVIDIA CORPORATION.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
third_party/VITS_LICENSE.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Jaehyeon Kim
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.