voidful commited on
Commit
4e9e0e4
·
verified ·
1 Parent(s): c8908cb

Initial OpenFormosa release of BlueMagpie-TTS (rebrand from voidful; provenance refs preserved)

Browse files
.gitattributes CHANGED
@@ -1,35 +1,3 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
  *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
  *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz 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
 
 
 
1
  *.bin filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  *.pth filter=lfs diff=lfs merge=lfs -text
3
+ checkpoints/hung_yi_lee_speaker_centroids.pt filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
README.md ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - zh
4
+ - en
5
+ tags:
6
+ - text-to-speech
7
+ - speech-synthesis
8
+ - code-switching
9
+ - private
10
+ library_name: bluemagpie
11
+ pipeline_tag: text-to-speech
12
+ license: other
13
+ ---
14
+
15
+ # BlueMagpie-TTS
16
+
17
+ Private BlueMagpie-TTS checkpoint for internal research and evaluation.
18
+
19
+ This repository contains the inference artifact only: model weights, AudioVAE
20
+ weights, tokenizer files, config, a default Hung-yi Lee speaker centroid, and
21
+ usage documentation. It does not include optimizer state, scheduler state,
22
+ training logs, local configs, or training-data metadata.
23
+
24
+ ## Intended Use
25
+
26
+ - Mandarin and mixed Mandarin/English text-to-speech evaluation.
27
+ - Internal experiments with reference-audio prompting, continuation prompting,
28
+ and optional speaker-centroid conditioning.
29
+ - Do not redistribute the checkpoint or generated speech unless rights and
30
+ consent are cleared for the intended use.
31
+
32
+ ## Install
33
+
34
+ ```bash
35
+ git clone https://github.com/OpenFormosa/BlueMagpie-TTS
36
+ cd BlueMagpie-TTS
37
+ pip install -e ".[train]"
38
+ pip install soundfile huggingface_hub
39
+ ```
40
+
41
+ ## Quick Start
42
+
43
+ ```python
44
+ from huggingface_hub import snapshot_download
45
+ import soundfile as sf
46
+ import torch
47
+
48
+ from bluemagpie import BlueMagpieModel
49
+
50
+ model_dir = snapshot_download("OpenFormosa/BlueMagpie-TTS", token=True)
51
+ model = BlueMagpieModel.from_local(model_dir, training=False, device="cuda")
52
+ centroids = torch.load(
53
+ f"{model_dir}/checkpoints/hung_yi_lee_speaker_centroids.pt",
54
+ map_location="cpu",
55
+ weights_only=True,
56
+ )
57
+ speaker_centroid = centroids["centroids"][centroids["speaker_ids"].index("hung_yi_lee")]
58
+
59
+ audio = model.generate(
60
+ target_text="這是 AI TTS code switching 測試。",
61
+ cfg_value=2.8,
62
+ inference_timesteps=9,
63
+ max_len=2000,
64
+ retry_badcase=True,
65
+ speaker_centroid=speaker_centroid,
66
+ )
67
+
68
+ sf.write("sample.wav", audio.detach().cpu().numpy(), model.sample_rate)
69
+ ```
70
+
71
+ ## Reference Audio Prompting
72
+
73
+ ```python
74
+ audio = model.generate(
75
+ target_text="今天的會議改到下午三點。",
76
+ reference_wav_path="reference_speaker.wav",
77
+ cfg_value=2.8,
78
+ inference_timesteps=9,
79
+ )
80
+ ```
81
+
82
+ Only use reference audio from speakers you have permission to synthesize.
83
+
84
+ ## Recommended Defaults
85
+
86
+ The current recommended defaults are also recorded in `config.json` under
87
+ `generation_defaults` and in `release_metadata.json` under
88
+ `recommended_generation_defaults`.
89
+
90
+ - `cfg_value=2.8`
91
+ - `inference_timesteps=9`
92
+ - `max_len=2000`
93
+ - `retry_badcase=True`
94
+ - default speaker centroid: `checkpoints/hung_yi_lee_speaker_centroids.pt`
95
+ (`speaker_id="hung_yi_lee"`, source dataset `voidful/hung-yi_lee`)
96
+
97
+ These defaults were selected on `/home/voidful/tts_hard_sentences_zh_500.txt`
98
+ using `MediaTek-Research/Breeze-ASR-25` with normalized CER. The best trial was
99
+ `hy_cfg2p8_steps9`: CER `0.09669792733863977`, TER `0.0911015155363644`,
100
+ with `1227/12689` character errors.
101
+
102
+ ## Long Text
103
+
104
+ For long-form synthesis, split text into sentence-sized chunks and concatenate
105
+ the generated waveforms. For stronger continuity, pass a short approved prompt
106
+ clip with `prompt_text` and `prompt_wav_path`, then synthesize the next chunk.
107
+
108
+ ## Evaluation
109
+
110
+ Numbers below are from an internal held-out evaluation set. The eval set and
111
+ training data are intentionally not described in this private model card.
112
+
113
+ | System | Setting | CER | WER |
114
+ | --- | --- | ---: | ---: |
115
+ | BlueMagpie-TTS | selected checkpoint | 4.81% | 5.36% |
116
+ | Reference baseline | same internal eval | 11.45% | 14.83% |
117
+
118
+ Selected checkpoint speed diagnostics on the same internal eval:
119
+
120
+ | Metric | Value |
121
+ | --- | ---: |
122
+ | Median duration-units/sec | 4.748 |
123
+ | Max duration-units/sec | 5.288 |
124
+
125
+ ## Limitations
126
+
127
+ - Metrics are not a public benchmark and should be used only for internal model
128
+ selection.
129
+ - Speaker similarity depends on the quality and rights-cleared status of the
130
+ supplied reference audio or centroid.
131
+ - Very long passages should be chunked to avoid stop-token and prosody drift.
132
+ - Generated speech may be incorrect; do not use it as a real-world notification
133
+ without human review.
134
+
135
+ ## Files
136
+
137
+ - `pytorch_model.bin`: BlueMagpie model weights.
138
+ - `audiovae.pth`: AudioVAE weights.
139
+ - `config.json`: BlueMagpie architecture/runtime config.
140
+ - `tokenizer.json`, `tokenizer_config.json`: tokenizer files.
141
+ - `checkpoints/hung_yi_lee_speaker_centroids.pt`: default speaker centroid
142
+ table used by the recommended defaults.
143
+ - `USAGE.md`: expanded usage guide.
USAGE.md ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # BlueMagpie-TTS Usage
2
+
3
+ This is a private inference checkpoint. Install the local package first:
4
+
5
+ ```bash
6
+ git clone https://github.com/OpenFormosa/BlueMagpie-TTS
7
+ cd BlueMagpie-TTS
8
+ pip install -e ".[train]"
9
+ pip install soundfile huggingface_hub
10
+ ```
11
+
12
+ Download and load:
13
+
14
+ ```python
15
+ from huggingface_hub import snapshot_download
16
+ from bluemagpie import BlueMagpieModel
17
+
18
+ model_dir = snapshot_download("OpenFormosa/BlueMagpie-TTS", token=True)
19
+ model = BlueMagpieModel.from_local(model_dir, training=False, device="cuda")
20
+ ```
21
+
22
+ Generate a short utterance:
23
+
24
+ ```python
25
+ import soundfile as sf
26
+ import torch
27
+
28
+ centroids = torch.load(
29
+ f"{model_dir}/checkpoints/hung_yi_lee_speaker_centroids.pt",
30
+ map_location="cpu",
31
+ weights_only=True,
32
+ )
33
+ speaker_centroid = centroids["centroids"][centroids["speaker_ids"].index("hung_yi_lee")]
34
+
35
+ wav = model.generate(
36
+ target_text="這是合成語音測試。",
37
+ cfg_value=2.8,
38
+ inference_timesteps=9,
39
+ max_len=2000,
40
+ retry_badcase=True,
41
+ speaker_centroid=speaker_centroid,
42
+ )
43
+ sf.write("short.wav", wav.detach().cpu().numpy(), model.sample_rate)
44
+ ```
45
+
46
+ Generate with reference audio:
47
+
48
+ ```python
49
+ wav = model.generate(
50
+ target_text="明天 meeting 取消一次,我們大家放假。",
51
+ reference_wav_path="reference_speaker.wav",
52
+ cfg_value=2.8,
53
+ inference_timesteps=9,
54
+ )
55
+ ```
56
+
57
+ Streaming:
58
+
59
+ ```python
60
+ import torch
61
+ import soundfile as sf
62
+
63
+ chunks = []
64
+ for chunk in model.generate_streaming(
65
+ target_text="這是一段串流語音合成測試。",
66
+ cfg_value=2.8,
67
+ inference_timesteps=9,
68
+ ):
69
+ chunks.append(chunk.detach().cpu())
70
+
71
+ wav = torch.cat(chunks, dim=-1)
72
+ sf.write("streaming.wav", wav.numpy(), model.sample_rate)
73
+ ```
74
+
75
+ Long text:
76
+
77
+ 1. Split the text by sentence or paragraph.
78
+ 2. Generate each chunk separately.
79
+ 3. Concatenate the waveforms with a short crossfade if needed.
80
+ 4. For continuation-style context, pass a short approved prompt clip with
81
+ `prompt_text` and `prompt_wav_path`.
82
+
83
+ Recommended generation defaults:
84
+
85
+ - `cfg_value=2.8`
86
+ - `inference_timesteps=9`
87
+ - `retry_badcase=True` for offline generation
88
+ - `max_len=2000` unless a longer chunk is intentionally needed
89
+ - `speaker_centroid=...` from
90
+ `checkpoints/hung_yi_lee_speaker_centroids.pt` when using the default
91
+ `hung_yi_lee` voice
92
+
93
+ The same defaults are stored in `config.json` as `generation_defaults` and in
94
+ `release_metadata.json` as `recommended_generation_defaults`. They were selected
95
+ from the `hy_cfg2p8_steps9` trial on the 500-sentence hard Chinese TTS set using
96
+ `MediaTek-Research/Breeze-ASR-25`: normalized CER `0.09669792733863977`, TER
97
+ `0.0911015155363644`, `1227/12689` character errors.
98
+
99
+ Safety:
100
+
101
+ - Use only rights-cleared reference audio or speaker embeddings.
102
+ - Do not present generated speech as a real person or real notification unless
103
+ that is explicitly authorized and reviewed.
audiovae.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc01a2d5d817910f185d959f8bb23d1a5ab80c9a03b7398ac86d7457cb663332
3
+ size 376972749
checkpoints/hung_yi_lee_speaker_centroids.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e1d4c95a4c33935ff1fee0ab47fa796dcc13908a183c60e9b02bc0a61c541c4c
3
+ size 2691
config.json ADDED
@@ -0,0 +1,324 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "barbet_config": {
3
+ "attention_dropout": 0.0,
4
+ "attention_sink": false,
5
+ "bos_token_id": 114689,
6
+ "eos_token_id": 114690,
7
+ "global_attention_layers": [
8
+ 0,
9
+ 4,
10
+ 8,
11
+ 12,
12
+ 16,
13
+ 20,
14
+ 24
15
+ ],
16
+ "head_dim": 128,
17
+ "hidden_dropout": 0.0,
18
+ "hidden_size": 1536,
19
+ "initializer_range": 0.02,
20
+ "intermediate_size": 5120,
21
+ "mamba_d_conv": 4,
22
+ "mamba_d_state": 64,
23
+ "mamba_expand": 2,
24
+ "mamba_layers": [
25
+ 3,
26
+ 7,
27
+ 11,
28
+ 15,
29
+ 19,
30
+ 23,
31
+ 27
32
+ ],
33
+ "max_position_embeddings": 262144,
34
+ "mtp_enabled": false,
35
+ "mtp_loss_weights": {
36
+ "2": 0.2,
37
+ "3": 0.1
38
+ },
39
+ "mtp_offsets": [
40
+ 2,
41
+ 3
42
+ ],
43
+ "num_attention_heads": 16,
44
+ "num_hidden_layers": 28,
45
+ "num_key_value_heads": 2,
46
+ "pad_token_id": 114691,
47
+ "qk_clip_alpha": 0.5,
48
+ "qk_clip_threshold": 100.0,
49
+ "qk_logit_clip": false,
50
+ "qk_norm": true,
51
+ "rms_norm_eps": 1e-06,
52
+ "rope_theta": 10000000.0,
53
+ "sliding_window_size": 8192,
54
+ "tie_word_embeddings": true,
55
+ "unk_token_id": 114688,
56
+ "use_cache": true,
57
+ "vocab_size": 114944
58
+ },
59
+ "vox_lm_config": {
60
+ "bos_token_id": 1,
61
+ "eos_token_id": 2,
62
+ "hidden_size": 2048,
63
+ "intermediate_size": 6144,
64
+ "max_position_embeddings": 32768,
65
+ "num_attention_heads": 16,
66
+ "num_hidden_layers": 28,
67
+ "num_key_value_heads": 2,
68
+ "rms_norm_eps": 1e-05,
69
+ "rope_scaling": {
70
+ "type": "longrope",
71
+ "long_factor": [
72
+ 0.9977997200264581,
73
+ 1.014658295992452,
74
+ 1.0349680404997148,
75
+ 1.059429246056193,
76
+ 1.0888815016813513,
77
+ 1.1243301355211495,
78
+ 1.166977103606075,
79
+ 1.2182568066927284,
80
+ 1.2798772354275727,
81
+ 1.3538666751582975,
82
+ 1.4426259039919596,
83
+ 1.5489853358570191,
84
+ 1.6762658237220625,
85
+ 1.8283407612492941,
86
+ 2.0096956085876183,
87
+ 2.225478927469756,
88
+ 2.481536379650452,
89
+ 2.784415934557119,
90
+ 3.1413289096347365,
91
+ 3.560047844772632,
92
+ 4.048719380066383,
93
+ 4.615569542115128,
94
+ 5.2684819496549835,
95
+ 6.014438591970396,
96
+ 6.858830049237097,
97
+ 7.804668263503327,
98
+ 8.851768731513417,
99
+ 9.99600492938444,
100
+ 11.228766118181639,
101
+ 12.536757560834843,
102
+ 13.902257701387796,
103
+ 15.303885189125953,
104
+ 16.717837610115794,
105
+ 18.119465097853947,
106
+ 19.484965238406907,
107
+ 20.792956681060105,
108
+ 22.02571786985731,
109
+ 23.16995406772833,
110
+ 24.217054535738416,
111
+ 25.16289275000465,
112
+ 26.007284207271347,
113
+ 26.753240849586767,
114
+ 27.40615325712662,
115
+ 27.973003419175363,
116
+ 28.461674954469114,
117
+ 28.880393889607006,
118
+ 29.237306864684626,
119
+ 29.540186419591297,
120
+ 29.79624387177199,
121
+ 30.01202719065413,
122
+ 30.193382037992453,
123
+ 30.34545697551969,
124
+ 30.47273746338473,
125
+ 30.579096895249787,
126
+ 30.66785612408345,
127
+ 30.741845563814174,
128
+ 30.80346599254902,
129
+ 30.85474569563567,
130
+ 30.897392663720595,
131
+ 30.932841297560394,
132
+ 30.962293553185553,
133
+ 30.986754758742034,
134
+ 31.007064503249293,
135
+ 31.02392307921529
136
+ ],
137
+ "short_factor": [
138
+ 0.9977997200264581,
139
+ 1.014658295992452,
140
+ 1.0349680404997148,
141
+ 1.059429246056193,
142
+ 1.0888815016813513,
143
+ 1.1243301355211495,
144
+ 1.166977103606075,
145
+ 1.2182568066927284,
146
+ 1.2798772354275727,
147
+ 1.3538666751582975,
148
+ 1.4426259039919596,
149
+ 1.5489853358570191,
150
+ 1.6762658237220625,
151
+ 1.8283407612492941,
152
+ 2.0096956085876183,
153
+ 2.225478927469756,
154
+ 2.481536379650452,
155
+ 2.784415934557119,
156
+ 3.1413289096347365,
157
+ 3.560047844772632,
158
+ 4.048719380066383,
159
+ 4.615569542115128,
160
+ 5.2684819496549835,
161
+ 6.014438591970396,
162
+ 6.858830049237097,
163
+ 7.804668263503327,
164
+ 8.851768731513417,
165
+ 9.99600492938444,
166
+ 11.228766118181639,
167
+ 12.536757560834843,
168
+ 13.902257701387796,
169
+ 15.303885189125953,
170
+ 16.717837610115794,
171
+ 18.119465097853947,
172
+ 19.484965238406907,
173
+ 20.792956681060105,
174
+ 22.02571786985731,
175
+ 23.16995406772833,
176
+ 24.217054535738416,
177
+ 25.16289275000465,
178
+ 26.007284207271347,
179
+ 26.753240849586767,
180
+ 27.40615325712662,
181
+ 27.973003419175363,
182
+ 28.461674954469114,
183
+ 28.880393889607006,
184
+ 29.237306864684626,
185
+ 29.540186419591297,
186
+ 29.79624387177199,
187
+ 30.01202719065413,
188
+ 30.193382037992453,
189
+ 30.34545697551969,
190
+ 30.47273746338473,
191
+ 30.579096895249787,
192
+ 30.66785612408345,
193
+ 30.741845563814174,
194
+ 30.80346599254902,
195
+ 30.85474569563567,
196
+ 30.897392663720595,
197
+ 30.932841297560394,
198
+ 30.962293553185553,
199
+ 30.986754758742034,
200
+ 31.007064503249293,
201
+ 31.02392307921529
202
+ ],
203
+ "original_max_position_embeddings": 32768
204
+ },
205
+ "vocab_size": 73448,
206
+ "use_mup": false,
207
+ "scale_emb": 12.0,
208
+ "dim_model_base": 256,
209
+ "scale_depth": 1.4,
210
+ "rope_theta": 10000.0,
211
+ "kv_channels": 128,
212
+ "no_rope": false
213
+ },
214
+ "patch_size": 4,
215
+ "feat_dim": 64,
216
+ "residual_lm_num_layers": 8,
217
+ "residual_lm_no_rope": true,
218
+ "scalar_quantization_latent_dim": 512,
219
+ "scalar_quantization_scale": 9,
220
+ "encoder_config": {
221
+ "hidden_dim": 1024,
222
+ "ffn_dim": 4096,
223
+ "num_heads": 16,
224
+ "num_layers": 12,
225
+ "kv_channels": 128
226
+ },
227
+ "dit_config": {
228
+ "hidden_dim": 1024,
229
+ "ffn_dim": 4096,
230
+ "num_heads": 16,
231
+ "num_layers": 12,
232
+ "kv_channels": 128,
233
+ "dit_mean_mode": false,
234
+ "cfm_config": {
235
+ "sigma_min": 1e-06,
236
+ "solver": "euler",
237
+ "t_scheduler": "log-norm",
238
+ "training_cfg_rate": 0.1,
239
+ "inference_cfg_rate": 2.0,
240
+ "reg_loss_type": "l1",
241
+ "ratio_r_neq_t_range": [
242
+ 0.25,
243
+ 0.75
244
+ ],
245
+ "noise_cond_prob_range": [
246
+ 0.0,
247
+ 0.0
248
+ ],
249
+ "noise_cond_scale": 0.0
250
+ }
251
+ },
252
+ "audio_vae_config": {
253
+ "encoder_dim": 128,
254
+ "encoder_rates": [
255
+ 2,
256
+ 5,
257
+ 8,
258
+ 8
259
+ ],
260
+ "latent_dim": 64,
261
+ "decoder_dim": 2048,
262
+ "decoder_rates": [
263
+ 8,
264
+ 6,
265
+ 5,
266
+ 2,
267
+ 2,
268
+ 2
269
+ ],
270
+ "depthwise": true,
271
+ "sample_rate": 16000,
272
+ "out_sample_rate": 48000,
273
+ "use_noise_block": false,
274
+ "sr_bin_boundaries": [
275
+ 20000,
276
+ 30000,
277
+ 40000
278
+ ],
279
+ "cond_type": "scale_bias",
280
+ "cond_dim": 128,
281
+ "cond_out_layer": false
282
+ },
283
+ "adapter_config": {
284
+ "num_residual_blocks": 1,
285
+ "ffn_mult": 2.0,
286
+ "rms_norm_eps": 1e-06
287
+ },
288
+ "speaker_embed_dim": 192,
289
+ "audio_start_token": -1,
290
+ "audio_end_token": -1,
291
+ "ref_audio_start_token": -1,
292
+ "ref_audio_end_token": -1,
293
+ "spk_token": -1,
294
+ "barbet_effective_vocab_size": null,
295
+ "max_length": 8192,
296
+ "device": "cuda",
297
+ "dtype": "bfloat16",
298
+ "generation_defaults": {
299
+ "cfg_value": 2.8,
300
+ "inference_timesteps": 9,
301
+ "max_len": 2000,
302
+ "retry_badcase": true,
303
+ "retry_badcase_max_times": 3,
304
+ "retry_badcase_ratio_threshold": 6.0,
305
+ "speaker_id": "hung_yi_lee",
306
+ "speaker_source_dataset": "voidful/hung-yi_lee",
307
+ "speaker_centroid_path": "checkpoints/hung_yi_lee_speaker_centroids.pt",
308
+ "speaker_centroid_sha256": "e1d4c95a4c33935ff1fee0ab47fa796dcc13908a183c60e9b02bc0a61c541c4c",
309
+ "speaker_centroid_dim": 192
310
+ },
311
+ "generation_defaults_source": {
312
+ "scope": "tts_hard_sentences_zh_500 + Breeze-ASR-25 normalized CER",
313
+ "sentences": "/home/voidful/tts_hard_sentences_zh_500.txt",
314
+ "asr_model": "MediaTek-Research/Breeze-ASR-25",
315
+ "conversion": "s2twp",
316
+ "normalized_cer": 0.09669792733863977,
317
+ "mixed_token_error_rate": 0.0911015155363644,
318
+ "char_errors": 1227,
319
+ "char_reference_length": 12689,
320
+ "evaluated_examples": 500,
321
+ "trial": "hy_cfg2p8_steps9",
322
+ "run": "hungyi_high_refine_hy_cfg2p8_steps9_20260620"
323
+ }
324
+ }
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:33dc9593a5cf25619853a4140f5114b4fb61954b163c86d28f145321272806dd
3
+ size 7746547131
release_metadata.json ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "bluemagpie-pretrained",
3
+ "checkpoint": "step_0003900",
4
+ "files": [
5
+ "pytorch_model.bin",
6
+ "audiovae.pth",
7
+ "config.json",
8
+ "tokenizer.json",
9
+ "tokenizer_config.json",
10
+ "checkpoints/hung_yi_lee_speaker_centroids.pt"
11
+ ],
12
+ "evaluation": {
13
+ "scope": "internal held-out evaluation",
14
+ "cer": 0.048101,
15
+ "wer": 0.05356,
16
+ "reference_baseline_cer": 0.114483,
17
+ "reference_baseline_wer": 0.148266
18
+ },
19
+ "recommended_generation_defaults": {
20
+ "cfg_value": 2.8,
21
+ "inference_timesteps": 9,
22
+ "max_len": 2000,
23
+ "retry_badcase": true,
24
+ "retry_badcase_max_times": 3,
25
+ "retry_badcase_ratio_threshold": 6.0,
26
+ "speaker_id": "hung_yi_lee",
27
+ "speaker_source_dataset": "voidful/hung-yi_lee",
28
+ "speaker_centroid_path": "checkpoints/hung_yi_lee_speaker_centroids.pt",
29
+ "speaker_centroid_sha256": "e1d4c95a4c33935ff1fee0ab47fa796dcc13908a183c60e9b02bc0a61c541c4c",
30
+ "speaker_centroid_dim": 192
31
+ },
32
+ "recommended_generation_defaults_source": {
33
+ "scope": "tts_hard_sentences_zh_500 + Breeze-ASR-25 normalized CER",
34
+ "sentences": "/home/voidful/tts_hard_sentences_zh_500.txt",
35
+ "asr_model": "MediaTek-Research/Breeze-ASR-25",
36
+ "conversion": "s2twp",
37
+ "normalized_cer": 0.09669792733863977,
38
+ "mixed_token_error_rate": 0.0911015155363644,
39
+ "char_errors": 1227,
40
+ "char_reference_length": 12689,
41
+ "evaluated_examples": 500,
42
+ "trial": "hy_cfg2p8_steps9",
43
+ "run": "hungyi_high_refine_hy_cfg2p8_steps9_20260620"
44
+ }
45
+ }
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": "<s>",
5
+ "clean_up_tokenization_spaces": false,
6
+ "effective_vocab_size": 114822,
7
+ "eos_token": "</s>",
8
+ "errors": "replace",
9
+ "extra_special_tokens": [
10
+ "<|bos|>",
11
+ "<|eos|>",
12
+ "<|unk|>",
13
+ "<|pad|>",
14
+ "<|system|>",
15
+ "<|user_channel|>",
16
+ "<|assistant_channel|>",
17
+ "<|task:speech_to_text|>",
18
+ "<|task:text_to_speech|>",
19
+ "<|input_audio_start|>",
20
+ "<|input_audio_end|>",
21
+ "<|audio_ref_start|>",
22
+ "<|audio_ref_end|>",
23
+ "<|audio_start|>",
24
+ "<|audio_end|>",
25
+ "<|speech_start|>",
26
+ "<|speech_end|>",
27
+ "<|transcript_start|>",
28
+ "<|transcript_end|>",
29
+ "<|segment_start|>",
30
+ "<|segment_end|>",
31
+ "<|speaker|>",
32
+ "<|start_time|>",
33
+ "<|end_time|>",
34
+ "<|duration|>",
35
+ "<|content|>",
36
+ "<|non_speech_event|>",
37
+ "<|retrieval_result_start|>",
38
+ "<|retrieval_result_end|>",
39
+ "<|ocr_start|>",
40
+ "<|ocr_end|>",
41
+ "<|image_start|>",
42
+ "<|image_end|>",
43
+ "<|video_start|>",
44
+ "<|video_end|>",
45
+ "<|user|>",
46
+ "<|assistant|>",
47
+ "<|tool_call|>",
48
+ "<|tool_response|>",
49
+ "<|endoftext|>",
50
+ "<think>",
51
+ "</think>",
52
+ "<|no_think|>",
53
+ "<|think|>",
54
+ "<|think_max|>",
55
+ "<|task:text_to_text|>",
56
+ "<|task:speech_to_speech|>",
57
+ "<|task:text_speech_to_text|>",
58
+ "<|task:text_speech_to_speech|>",
59
+ "<|task:full_duplex_speech|>",
60
+ "<|task:agent|>",
61
+ "<|task:tool_use|>",
62
+ "<|task:rag|>",
63
+ "<|task:code_execution|>",
64
+ "<|task:document_qa|>",
65
+ "<|task:data_analysis|>",
66
+ "<|task:workflow|>",
67
+ "<|reasoning_mode:none|>",
68
+ "<|reasoning_mode:short|>",
69
+ "<|reasoning_mode:deep|>",
70
+ "<|reasoning_mode:verify|>",
71
+ "<|private_reasoning_start|>",
72
+ "<|private_reasoning_end|>",
73
+ "<|reasoning_summary_start|>",
74
+ "<|reasoning_summary_end|>",
75
+ "<|plan_start|>",
76
+ "<|plan_end|>",
77
+ "<|step_start|>",
78
+ "<|step_end|>",
79
+ "<|action_start|>",
80
+ "<|action_end|>",
81
+ "<|observation_start|>",
82
+ "<|observation_end|>",
83
+ "<|reflection_start|>",
84
+ "<|reflection_end|>",
85
+ "<|verification_start|>",
86
+ "<|verification_end|>",
87
+ "<|tool_schema_start|>",
88
+ "<|tool_schema_end|>",
89
+ "<|tool_call_start|>",
90
+ "<|tool_call_end|>",
91
+ "<|tool_result_start|>",
92
+ "<|tool_result_end|>",
93
+ "<|tool_error_start|>",
94
+ "<|tool_error_end|>",
95
+ "<|retrieval_query_start|>",
96
+ "<|retrieval_query_end|>",
97
+ "<|citation_start|>",
98
+ "<|citation_end|>",
99
+ "<|memory_read_start|>",
100
+ "<|memory_read_end|>",
101
+ "<|memory_write_start|>",
102
+ "<|memory_write_end|>",
103
+ "<|final_answer_start|>",
104
+ "<|final_answer_end|>",
105
+ "<|json_start|>",
106
+ "<|json_end|>",
107
+ "<|code_start|>",
108
+ "<|code_end|>",
109
+ "<|markdown_start|>",
110
+ "<|markdown_end|>",
111
+ "<|duplex_start|>",
112
+ "<|duplex_end|>",
113
+ "<|system_channel|>",
114
+ "<|listen|>",
115
+ "<|speak|>",
116
+ "<|listen_speak|>",
117
+ "<|output_audio_start|>",
118
+ "<|output_audio_end|>",
119
+ "<|text_start|>",
120
+ "<|text_end|>",
121
+ "<|overlap|>",
122
+ "<|barge_in|>",
123
+ "<|interruption|>",
124
+ "<|interruption_repair|>",
125
+ "<|backchannel|>",
126
+ "<|turn_yield|>",
127
+ "<|hold|>",
128
+ "<|silence|>",
129
+ "<|non_speech|>",
130
+ "<|voice_reference_start|>",
131
+ "<|voice_reference_end|>",
132
+ "<|voice_reference|>",
133
+ "<|voice_switch|>",
134
+ "<|speaker_style|>",
135
+ "<|prosody_control|>",
136
+ "<|zh_tw|>",
137
+ "<|zh_hant|>",
138
+ "<|taigi|>",
139
+ "<|hakka|>",
140
+ "<|bopomofo|>",
141
+ "<|mixed_en|>",
142
+ "<|en|>",
143
+ "<|ja|>",
144
+ "<|ko|>",
145
+ "<|vi|>",
146
+ "<|id|>",
147
+ "<|th|>",
148
+ "<|asr|>",
149
+ "<|tts|>",
150
+ "<|speaker_0|>",
151
+ "<|speaker_1|>",
152
+ "<|speaker_2|>",
153
+ "<|speaker_3|>",
154
+ "<|timestamp|>",
155
+ "<|noise|>",
156
+ "<|laugh|>",
157
+ "<|breath|>",
158
+ "<|pause|>",
159
+ "<|prosody|>",
160
+ "<|pron|>",
161
+ "</|pron|>",
162
+ "<|image|>",
163
+ "<|ocr|>",
164
+ "<|bbox|>",
165
+ "<|line|>",
166
+ "<|table|>",
167
+ "<|row|>",
168
+ "<|col|>",
169
+ "<|cell|>",
170
+ "<|reading_order|>",
171
+ "<|source|>",
172
+ "<|cite|>",
173
+ "<|evidence|>",
174
+ "<|quote|>"
175
+ ],
176
+ "fix_mistral_regex": true,
177
+ "is_local": true,
178
+ "local_files_only": false,
179
+ "model_max_length": 131072,
180
+ "model_type": "byte_level_bpe",
181
+ "no_audio_codec_tokens": true,
182
+ "no_dense_timestamp_tokens": true,
183
+ "open_formosa": {
184
+ "required_special_token_count": 157,
185
+ "required_special_tokens_present": true,
186
+ "required_special_tokens_single_id": true,
187
+ "standard_special_tokens": {
188
+ "bos_token": "<s>",
189
+ "eos_token": "</s>",
190
+ "pad_token": "<pad>",
191
+ "unk_token": "<unk>"
192
+ }
193
+ },
194
+ "pad_token": "<pad>",
195
+ "padding_side": "right",
196
+ "rich_transcription": {
197
+ "allow_non_speech_events": true,
198
+ "compact_json": true,
199
+ "default_format": "json_segments",
200
+ "enabled": true,
201
+ "include_content": true,
202
+ "include_speaker": true,
203
+ "include_start_end": true,
204
+ "no_dense_timestamp_tokens": true,
205
+ "timestamp_precision_digits": 2,
206
+ "timestamp_unit": "seconds"
207
+ },
208
+ "special_tokens": [
209
+ "<|pad|>",
210
+ "<|bos|>",
211
+ "<|eos|>",
212
+ "<|unk|>",
213
+ "<|system|>",
214
+ "<|user_channel|>",
215
+ "<|assistant_channel|>",
216
+ "<|task:speech_to_text|>",
217
+ "<|task:text_to_speech|>",
218
+ "<|input_audio_start|>",
219
+ "<|input_audio_end|>",
220
+ "<|audio_ref_start|>",
221
+ "<|audio_ref_end|>",
222
+ "<|audio_start|>",
223
+ "<|audio_end|>",
224
+ "<|speech_start|>",
225
+ "<|speech_end|>",
226
+ "<|transcript_start|>",
227
+ "<|transcript_end|>",
228
+ "<|segment_start|>",
229
+ "<|segment_end|>",
230
+ "<|speaker|>",
231
+ "<|start_time|>",
232
+ "<|end_time|>",
233
+ "<|duration|>",
234
+ "<|content|>",
235
+ "<|non_speech_event|>",
236
+ "<|retrieval_result_start|>",
237
+ "<|retrieval_result_end|>",
238
+ "<|ocr_start|>",
239
+ "<|ocr_end|>",
240
+ "<|image_start|>",
241
+ "<|image_end|>",
242
+ "<|video_start|>",
243
+ "<|video_end|>"
244
+ ],
245
+ "strict_no_dense_timestamp_tokens": true,
246
+ "tokenizer_class": "GPT2Tokenizer",
247
+ "truncation_side": "right",
248
+ "unk_token": "<unk>",
249
+ "vocab_size": 114688
250
+ }