Link ZeroBench-TTS via datasets + model-index, refresh benchmark results

#1
Files changed (1) hide show
  1. README.md +125 -30
README.md CHANGED
@@ -12,6 +12,84 @@ tags:
12
  - onnxruntime
13
  - zero-shot
14
  - speech-synthesis
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  ---
16
 
17
  # ZeroTTS
@@ -43,44 +121,61 @@ for chunk in tts.synthesize_stream("Một đoạn văn bản dài hơn…", voic
43
 
44
  ## Benchmarks
45
 
46
- [ZeroBench-TTS](https://huggingface.co/datasets/zeroweight-ai/ZeroBench-TTS)
47
- 137 items, 59 held-out reference voices × 4 subsets, against the two public
48
- Vietnamese XTTS finetunes. 137/137 scored, 0 empty generations.
49
 
50
- WER uses [`vinai/PhoWhisper-large`](https://huggingface.co/vinai/PhoWhisper-large)
51
- (a Vietnamese-specialized Whisper finetune scoring Vietnamese TTS with raw
52
- `whisper-large-v3` measures the ASR's weakness as much as the TTS system's).
53
- Every model is reported twice: `as-is`, and `+vinorm` which adds
54
- [`soe-vinorm`](https://pypi.org/project/soe-vinorm/)'s automatic spoken-out
55
- normalization as an extra accepted reference.
56
 
57
- | Model | WER as-is | WER +vinorm | SSIM | UTMOS | Excess silence |
58
- |---|---|---|---|---|---|
59
- | **ZeroTTS** | **5.09%** | **4.51%** | 0.936 | **2.95** | **0.029 s** |
60
- | XTTS-v2-vietnamse | 21.49% | 21.16% | **0.940** | 2.36 | 0.532 s |
61
- | viXTTS | 25.13% | 24.92% | 0.935 | 2.35 | 0.233 s |
 
62
 
63
- Per subset (WER, as-is +vinorm):
 
64
 
65
- | Subset | n | ZeroTTS | XTTS-v2-vietnamse | viXTTS |
66
- |---|---|---|---|---|
67
- | `vietnamese` | 39 | **0.16% → 0.16%** | 8.18% → 8.18% | 11.25% → 11.25% |
68
- | `code_switch` | 39 | **5.74% → 5.72%** | 16.16% → 16.15% | 17.66% → 17.64% |
69
- | `cross_lingual` (foreign voice, vi text) | 20 | **6.05% → 5.98%** | 30.49% → 30.37% | 34.51% → 34.51% |
70
- | `challenging` (acronyms, dates, %) | 39 | **8.86% → 6.90%** | 35.50% → 34.43% | 41.68% → 40.93% |
 
 
71
 
72
  Reading these fairly:
73
 
74
- * **The `+vinorm` column tests an objection rather than flattering us.** XTTS's
75
- stock tokenizer has no Vietnamese number/symbol expansion, so one could argue
76
- the `challenging` gap is a missing text frontend. Supplying that normalization
77
- on the scoring side moves XTTS 35.50% 34.43% and viXTTS 41.68% 40.93% —
78
- about a point each. It does not close a 26-point gap.
79
- * **Voice similarity is a tie, not a win** (0.936 / 0.940 / 0.935, within noise),
80
- and on `cross_lingual` ZeroTTS is genuinely behind (0.911 vs ~0.935).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
- Full tables, ablations and reproduction commands:
83
- [docs/BENCHMARKS.md](https://github.com/zeroweight-ai/ZeroTTS/blob/main/docs/BENCHMARKS.md).
84
 
85
  ## Voices, and voice cloning
86
 
 
12
  - onnxruntime
13
  - zero-shot
14
  - speech-synthesis
15
+ - voice-cloning
16
+ - vietnamese-tts
17
+ - tieng-viet
18
+ datasets:
19
+ - zeroweight-ai/ZeroBench-TTS
20
+ metrics:
21
+ - wer
22
+ model-index:
23
+ - name: ZeroTTS
24
+ results:
25
+ - task:
26
+ type: text-to-speech
27
+ name: Zero-Shot Text-to-Speech
28
+ dataset:
29
+ type: zeroweight-ai/ZeroBench-TTS
30
+ name: ZeroBench-TTS
31
+ split: test
32
+ metrics:
33
+ - type: wer
34
+ value: 1.03
35
+ name: WER (%)
36
+ - type: utmos
37
+ value: 2.91
38
+ name: UTMOSv2 naturalness MOS
39
+ - type: speaker_similarity
40
+ value: 0.936
41
+ name: Speaker similarity (WavLM-SV cosine)
42
+ - type: excess_silence
43
+ value: 0.029
44
+ name: Excess silence (s)
45
+ - task:
46
+ type: text-to-speech
47
+ name: Zero-Shot TTS — monolingual Vietnamese
48
+ dataset:
49
+ type: zeroweight-ai/ZeroBench-TTS
50
+ name: ZeroBench-TTS (vietnamese)
51
+ config: vietnamese
52
+ split: test
53
+ metrics:
54
+ - type: wer
55
+ value: 0.16
56
+ name: WER (%)
57
+ - task:
58
+ type: text-to-speech
59
+ name: Zero-Shot TTS — Vietnamese/English code-switching
60
+ dataset:
61
+ type: zeroweight-ai/ZeroBench-TTS
62
+ name: ZeroBench-TTS (code_switch)
63
+ config: code_switch
64
+ split: test
65
+ metrics:
66
+ - type: wer
67
+ value: 0.97
68
+ name: WER (%)
69
+ - task:
70
+ type: text-to-speech
71
+ name: Zero-Shot TTS — cross-lingual voice prompt
72
+ dataset:
73
+ type: zeroweight-ai/ZeroBench-TTS
74
+ name: ZeroBench-TTS (cross_lingual)
75
+ config: cross_lingual
76
+ split: test
77
+ metrics:
78
+ - type: wer
79
+ value: 1.42
80
+ name: WER (%)
81
+ - task:
82
+ type: text-to-speech
83
+ name: Zero-Shot TTS — acronyms, dates, numbers
84
+ dataset:
85
+ type: zeroweight-ai/ZeroBench-TTS
86
+ name: ZeroBench-TTS (challenging)
87
+ config: challenging
88
+ split: test
89
+ metrics:
90
+ - type: wer
91
+ value: 1.75
92
+ name: WER (%)
93
  ---
94
 
95
  # ZeroTTS
 
121
 
122
  ## Benchmarks
123
 
124
+ Measured on **[ZeroBench-TTS](https://huggingface.co/datasets/zeroweight-ai/ZeroBench-TTS)**
125
+ 137 items, 59 held-out reference voices, 4 subsets against the two public
126
+ Vietnamese XTTS-v2 finetunes. 137/137 scored, 0 empty generations.
127
 
128
+ Scored by the benchmark's own published scorer (`zerobench_eval`), not by us.
129
+ WER is the minimum over two ASRs (`whisper-large-v3` + `PhoWhisper-large`) and
130
+ over every acceptable reading of the target text see the
131
+ [benchmark README](https://huggingface.co/datasets/zeroweight-ai/ZeroBench-TTS)
132
+ for why both matter.
 
133
 
134
+ | | **ZeroTTS** | XTTS-v2-vietnamse | viXTTS |
135
+ |---|:-:|:-:|:-:|
136
+ | **WER** | **1.03%** | 16.42% | 18.40% |
137
+ | **Naturalness** (UTMOS) | **2.91** | 2.43 | 2.35 |
138
+ | **Voice similarity** (SSIM) | 0.936 | **0.940** | 0.935 |
139
+ | **Dead air** (excess silence) ↓ | **0.029 s** | 0.532 s | 0.233 s |
140
 
141
+ **16× fewer word errors**, ~0.5 MOS more natural, an order of magnitude less
142
+ dead air. Median WER is **0.00%** on all four subsets.
143
 
144
+ WER by subset:
145
+
146
+ | Subset | what it tests | **ZeroTTS** | XTTS-v2-vietnamse | viXTTS |
147
+ |---|---|:-:|:-:|:-:|
148
+ | `vietnamese` | plain Vietnamese | **0.16%** | 7.92% | 9.56% |
149
+ | `code_switch` | Vietnamese + embedded English | **0.97%** | 10.94% | 9.25% |
150
+ | `cross_lingual` | foreign voice prompt → Vietnamese | **1.42%** | 21.37% | 27.27% |
151
+ | `challenging` | acronyms, dates, %, currency | **1.75%** | 27.86% | 31.85% |
152
 
153
  Reading these fairly:
154
 
155
+ * **Voice similarity is a tie, not a win** 0.936 / 0.939 / 0.935 is within
156
+ noise. On `cross_lingual` ZeroTTS is genuinely behind (0.911 vs ~0.935): it
157
+ carries a foreign speaker's timbre into Vietnamese less faithfully than the
158
+ XTTS backbone, while winning that subset's WER by 15×.
159
+ * **"The baselines just need text normalization" is testable, and fails.**
160
+ Given the spoken-out text instead of raw orthography, XTTS improves to 7.27%
161
+ and viXTTS to 8.61% big gains, confirming their tokenizers lack Vietnamese
162
+ number expansion — but ZeroTTS improves to 0.56%, so the gap stays 13–15×.
163
+ * **ZeroTTS's own remaining errors are known and listed**, not hidden:
164
+ [evaluation/HIGH_WER_ANALYSIS.md](https://github.com/zeroweight-ai/ZeroTTS/blob/main/evaluation/HIGH_WER_ANALYSIS.md)
165
+ audits every item above 0.00 — mostly voiced leading zeros in dates and
166
+ `W`/`H` acronym letter names.
167
+
168
+ Score your own model on the same benchmark:
169
+
170
+ ```bash
171
+ huggingface-cli download zeroweight-ai/ZeroBench-TTS --repo-type dataset --local-dir ZeroBench-TTS
172
+ cd ZeroBench-TTS && pip install -r zerobench_eval/requirements.txt
173
+ python -m zerobench_eval manifest --out manifest.jsonl # what to synthesize
174
+ python -m zerobench_eval score --wav_dir my_wavs/ --name MyModel
175
+ ```
176
 
177
+ Full tables and reproduction commands:
178
+ [evaluation/RESULTS.md](https://github.com/zeroweight-ai/ZeroTTS/blob/main/evaluation/RESULTS.md).
179
 
180
  ## Voices, and voice cloning
181