Wismut commited on
Commit
0af9841
·
1 Parent(s): 91c4d57

initial commit

Browse files
.gitignore ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ random_voices.json
2
+ mydata/
3
+ batch_output/
4
+ .env
5
+ # Ommit the DS_Store folder automatically created by macOS
6
+ .DS_Store/
7
+
8
+ # python virtual environment folder
9
+ .venv/
10
+ .vscode/
11
+
12
+ # process log file
13
+ process_log.txt*
14
+ process_log.txt
15
+
16
+ # Python cache
17
+ __pycache__/
18
+ /*/__pycache__/
19
+ /*/*/__pycache__/
20
+
21
+ github
22
+ github.pub
Modules/diffusion/diffusion.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from math import pi
2
+ from random import randint
3
+ from typing import Any, Optional, Sequence, Tuple, Union
4
+
5
+ import torch
6
+ from einops import rearrange
7
+ from torch import Tensor, nn
8
+ from tqdm import tqdm
9
+
10
+ from .utils import *
11
+ from .sampler import *
12
+
13
+ """
14
+ Diffusion Classes (generic for 1d data)
15
+ """
16
+
17
+
18
+ class Model1d(nn.Module):
19
+ def __init__(self, unet_type: str = "base", **kwargs):
20
+ super().__init__()
21
+ diffusion_kwargs, kwargs = groupby("diffusion_", kwargs)
22
+ self.unet = None
23
+ self.diffusion = None
24
+
25
+ def forward(self, x: Tensor, **kwargs) -> Tensor:
26
+ return self.diffusion(x, **kwargs)
27
+
28
+ def sample(self, *args, **kwargs) -> Tensor:
29
+ return self.diffusion.sample(*args, **kwargs)
30
+
31
+
32
+ """
33
+ Audio Diffusion Classes (specific for 1d audio data)
34
+ """
35
+
36
+
37
+ def get_default_model_kwargs():
38
+ return dict(
39
+ channels=128,
40
+ patch_size=16,
41
+ multipliers=[1, 2, 4, 4, 4, 4, 4],
42
+ factors=[4, 4, 4, 2, 2, 2],
43
+ num_blocks=[2, 2, 2, 2, 2, 2],
44
+ attentions=[0, 0, 0, 1, 1, 1, 1],
45
+ attention_heads=8,
46
+ attention_features=64,
47
+ attention_multiplier=2,
48
+ attention_use_rel_pos=False,
49
+ diffusion_type="v",
50
+ diffusion_sigma_distribution=UniformDistribution(),
51
+ )
52
+
53
+
54
+ def get_default_sampling_kwargs():
55
+ return dict(sigma_schedule=LinearSchedule(), sampler=VSampler(), clamp=True)
56
+
57
+
58
+ class AudioDiffusionModel(Model1d):
59
+ def __init__(self, **kwargs):
60
+ super().__init__(**{**get_default_model_kwargs(), **kwargs})
61
+
62
+ def sample(self, *args, **kwargs):
63
+ return super().sample(*args, **{**get_default_sampling_kwargs(), **kwargs})
64
+
65
+
66
+ class AudioDiffusionConditional(Model1d):
67
+ def __init__(
68
+ self,
69
+ embedding_features: int,
70
+ embedding_max_length: int,
71
+ embedding_mask_proba: float = 0.1,
72
+ **kwargs,
73
+ ):
74
+ self.embedding_mask_proba = embedding_mask_proba
75
+ default_kwargs = dict(
76
+ **get_default_model_kwargs(),
77
+ unet_type="cfg",
78
+ context_embedding_features=embedding_features,
79
+ context_embedding_max_length=embedding_max_length,
80
+ )
81
+ super().__init__(**{**default_kwargs, **kwargs})
82
+
83
+ def forward(self, *args, **kwargs):
84
+ default_kwargs = dict(embedding_mask_proba=self.embedding_mask_proba)
85
+ return super().forward(*args, **{**default_kwargs, **kwargs})
86
+
87
+ def sample(self, *args, **kwargs):
88
+ default_kwargs = dict(
89
+ **get_default_sampling_kwargs(),
90
+ embedding_scale=5.0,
91
+ )
92
+ return super().sample(*args, **{**default_kwargs, **kwargs})
93
+
94
+
Modules/diffusion/modules.py ADDED
@@ -0,0 +1,693 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from math import floor, log, pi
2
+ from typing import Any, List, Optional, Sequence, Tuple, Union
3
+
4
+ from .utils import *
5
+
6
+ import torch
7
+ import torch.nn as nn
8
+ from einops import rearrange, reduce, repeat
9
+ from einops.layers.torch import Rearrange
10
+ from einops_exts import rearrange_many
11
+ from torch import Tensor, einsum
12
+
13
+
14
+ """
15
+ Utils
16
+ """
17
+
18
+ class AdaLayerNorm(nn.Module):
19
+ def __init__(self, style_dim, channels, eps=1e-5):
20
+ super().__init__()
21
+ self.channels = channels
22
+ self.eps = eps
23
+
24
+ self.fc = nn.Linear(style_dim, channels*2)
25
+
26
+ def forward(self, x, s):
27
+ x = x.transpose(-1, -2)
28
+ x = x.transpose(1, -1)
29
+
30
+ h = self.fc(s)
31
+ h = h.view(h.size(0), h.size(1), 1)
32
+ gamma, beta = torch.chunk(h, chunks=2, dim=1)
33
+ gamma, beta = gamma.transpose(1, -1), beta.transpose(1, -1)
34
+
35
+
36
+ x = F.layer_norm(x, (self.channels,), eps=self.eps)
37
+ x = (1 + gamma) * x + beta
38
+ return x.transpose(1, -1).transpose(-1, -2)
39
+
40
+ class StyleTransformer1d(nn.Module):
41
+ def __init__(
42
+ self,
43
+ num_layers: int,
44
+ channels: int,
45
+ num_heads: int,
46
+ head_features: int,
47
+ multiplier: int,
48
+ use_context_time: bool = True,
49
+ use_rel_pos: bool = False,
50
+ context_features_multiplier: int = 1,
51
+ rel_pos_num_buckets: Optional[int] = None,
52
+ rel_pos_max_distance: Optional[int] = None,
53
+ context_features: Optional[int] = None,
54
+ context_embedding_features: Optional[int] = None,
55
+ embedding_max_length: int = 512,
56
+ ):
57
+ super().__init__()
58
+
59
+ self.blocks = nn.ModuleList(
60
+ [
61
+ StyleTransformerBlock(
62
+ features=channels + context_embedding_features,
63
+ head_features=head_features,
64
+ num_heads=num_heads,
65
+ multiplier=multiplier,
66
+ style_dim=context_features,
67
+ use_rel_pos=use_rel_pos,
68
+ rel_pos_num_buckets=rel_pos_num_buckets,
69
+ rel_pos_max_distance=rel_pos_max_distance,
70
+ )
71
+ for i in range(num_layers)
72
+ ]
73
+ )
74
+
75
+ self.to_out = nn.Sequential(
76
+ Rearrange("b t c -> b c t"),
77
+ nn.Conv1d(
78
+ in_channels=channels + context_embedding_features,
79
+ out_channels=channels,
80
+ kernel_size=1,
81
+ ),
82
+ )
83
+
84
+ use_context_features = exists(context_features)
85
+ self.use_context_features = use_context_features
86
+ self.use_context_time = use_context_time
87
+
88
+ if use_context_time or use_context_features:
89
+ context_mapping_features = channels + context_embedding_features
90
+
91
+ self.to_mapping = nn.Sequential(
92
+ nn.Linear(context_mapping_features, context_mapping_features),
93
+ nn.GELU(),
94
+ nn.Linear(context_mapping_features, context_mapping_features),
95
+ nn.GELU(),
96
+ )
97
+
98
+ if use_context_time:
99
+ assert exists(context_mapping_features)
100
+ self.to_time = nn.Sequential(
101
+ TimePositionalEmbedding(
102
+ dim=channels, out_features=context_mapping_features
103
+ ),
104
+ nn.GELU(),
105
+ )
106
+
107
+ if use_context_features:
108
+ assert exists(context_features) and exists(context_mapping_features)
109
+ self.to_features = nn.Sequential(
110
+ nn.Linear(
111
+ in_features=context_features, out_features=context_mapping_features
112
+ ),
113
+ nn.GELU(),
114
+ )
115
+
116
+ self.fixed_embedding = FixedEmbedding(
117
+ max_length=embedding_max_length, features=context_embedding_features
118
+ )
119
+
120
+
121
+ def get_mapping(
122
+ self, time: Optional[Tensor] = None, features: Optional[Tensor] = None
123
+ ) -> Optional[Tensor]:
124
+ """Combines context time features and features into mapping"""
125
+ items, mapping = [], None
126
+ # Compute time features
127
+ if self.use_context_time:
128
+ assert_message = "use_context_time=True but no time features provided"
129
+ assert exists(time), assert_message
130
+ items += [self.to_time(time)]
131
+ # Compute features
132
+ if self.use_context_features:
133
+ assert_message = "context_features exists but no features provided"
134
+ assert exists(features), assert_message
135
+ items += [self.to_features(features)]
136
+
137
+ # Compute joint mapping
138
+ if self.use_context_time or self.use_context_features:
139
+ mapping = reduce(torch.stack(items), "n b m -> b m", "sum")
140
+ mapping = self.to_mapping(mapping)
141
+
142
+ return mapping
143
+
144
+ def run(self, x, time, embedding, features):
145
+
146
+ mapping = self.get_mapping(time, features)
147
+ x = torch.cat([x.expand(-1, embedding.size(1), -1), embedding], axis=-1)
148
+ mapping = mapping.unsqueeze(1).expand(-1, embedding.size(1), -1)
149
+
150
+ for block in self.blocks:
151
+ x = x + mapping
152
+ x = block(x, features)
153
+
154
+ x = x.mean(axis=1).unsqueeze(1)
155
+ x = self.to_out(x)
156
+ x = x.transpose(-1, -2)
157
+
158
+ return x
159
+
160
+ def forward(self, x: Tensor,
161
+ time: Tensor,
162
+ embedding_mask_proba: float = 0.0,
163
+ embedding: Optional[Tensor] = None,
164
+ features: Optional[Tensor] = None,
165
+ embedding_scale: float = 1.0) -> Tensor:
166
+
167
+ b, device = embedding.shape[0], embedding.device
168
+ fixed_embedding = self.fixed_embedding(embedding)
169
+ if embedding_mask_proba > 0.0:
170
+ # Randomly mask embedding
171
+ batch_mask = rand_bool(
172
+ shape=(b, 1, 1), proba=embedding_mask_proba, device=device
173
+ )
174
+ embedding = torch.where(batch_mask, fixed_embedding, embedding)
175
+
176
+ if embedding_scale != 1.0:
177
+ # Compute both normal and fixed embedding outputs
178
+ out = self.run(x, time, embedding=embedding, features=features)
179
+ out_masked = self.run(x, time, embedding=fixed_embedding, features=features)
180
+ # Scale conditional output using classifier-free guidance
181
+ return out_masked + (out - out_masked) * embedding_scale
182
+ else:
183
+ return self.run(x, time, embedding=embedding, features=features)
184
+
185
+ return x
186
+
187
+
188
+ class StyleTransformerBlock(nn.Module):
189
+ def __init__(
190
+ self,
191
+ features: int,
192
+ num_heads: int,
193
+ head_features: int,
194
+ style_dim: int,
195
+ multiplier: int,
196
+ use_rel_pos: bool,
197
+ rel_pos_num_buckets: Optional[int] = None,
198
+ rel_pos_max_distance: Optional[int] = None,
199
+ context_features: Optional[int] = None,
200
+ ):
201
+ super().__init__()
202
+
203
+ self.use_cross_attention = exists(context_features) and context_features > 0
204
+
205
+ self.attention = StyleAttention(
206
+ features=features,
207
+ style_dim=style_dim,
208
+ num_heads=num_heads,
209
+ head_features=head_features,
210
+ use_rel_pos=use_rel_pos,
211
+ rel_pos_num_buckets=rel_pos_num_buckets,
212
+ rel_pos_max_distance=rel_pos_max_distance,
213
+ )
214
+
215
+ if self.use_cross_attention:
216
+ self.cross_attention = StyleAttention(
217
+ features=features,
218
+ style_dim=style_dim,
219
+ num_heads=num_heads,
220
+ head_features=head_features,
221
+ context_features=context_features,
222
+ use_rel_pos=use_rel_pos,
223
+ rel_pos_num_buckets=rel_pos_num_buckets,
224
+ rel_pos_max_distance=rel_pos_max_distance,
225
+ )
226
+
227
+ self.feed_forward = FeedForward(features=features, multiplier=multiplier)
228
+
229
+ def forward(self, x: Tensor, s: Tensor, *, context: Optional[Tensor] = None) -> Tensor:
230
+ x = self.attention(x, s) + x
231
+ if self.use_cross_attention:
232
+ x = self.cross_attention(x, s, context=context) + x
233
+ x = self.feed_forward(x) + x
234
+ return x
235
+
236
+ class StyleAttention(nn.Module):
237
+ def __init__(
238
+ self,
239
+ features: int,
240
+ *,
241
+ style_dim: int,
242
+ head_features: int,
243
+ num_heads: int,
244
+ context_features: Optional[int] = None,
245
+ use_rel_pos: bool,
246
+ rel_pos_num_buckets: Optional[int] = None,
247
+ rel_pos_max_distance: Optional[int] = None,
248
+ ):
249
+ super().__init__()
250
+ self.context_features = context_features
251
+ mid_features = head_features * num_heads
252
+ context_features = default(context_features, features)
253
+
254
+ self.norm = AdaLayerNorm(style_dim, features)
255
+ self.norm_context = AdaLayerNorm(style_dim, context_features)
256
+ self.to_q = nn.Linear(
257
+ in_features=features, out_features=mid_features, bias=False
258
+ )
259
+ self.to_kv = nn.Linear(
260
+ in_features=context_features, out_features=mid_features * 2, bias=False
261
+ )
262
+ self.attention = AttentionBase(
263
+ features,
264
+ num_heads=num_heads,
265
+ head_features=head_features,
266
+ use_rel_pos=use_rel_pos,
267
+ rel_pos_num_buckets=rel_pos_num_buckets,
268
+ rel_pos_max_distance=rel_pos_max_distance,
269
+ )
270
+
271
+ def forward(self, x: Tensor, s: Tensor, *, context: Optional[Tensor] = None) -> Tensor:
272
+ assert_message = "You must provide a context when using context_features"
273
+ assert not self.context_features or exists(context), assert_message
274
+ # Use context if provided
275
+ context = default(context, x)
276
+ # Normalize then compute q from input and k,v from context
277
+ x, context = self.norm(x, s), self.norm_context(context, s)
278
+
279
+ q, k, v = (self.to_q(x), *torch.chunk(self.to_kv(context), chunks=2, dim=-1))
280
+ # Compute and return attention
281
+ return self.attention(q, k, v)
282
+
283
+ class Transformer1d(nn.Module):
284
+ def __init__(
285
+ self,
286
+ num_layers: int,
287
+ channels: int,
288
+ num_heads: int,
289
+ head_features: int,
290
+ multiplier: int,
291
+ use_context_time: bool = True,
292
+ use_rel_pos: bool = False,
293
+ context_features_multiplier: int = 1,
294
+ rel_pos_num_buckets: Optional[int] = None,
295
+ rel_pos_max_distance: Optional[int] = None,
296
+ context_features: Optional[int] = None,
297
+ context_embedding_features: Optional[int] = None,
298
+ embedding_max_length: int = 512,
299
+ ):
300
+ super().__init__()
301
+
302
+ self.blocks = nn.ModuleList(
303
+ [
304
+ TransformerBlock(
305
+ features=channels + context_embedding_features,
306
+ head_features=head_features,
307
+ num_heads=num_heads,
308
+ multiplier=multiplier,
309
+ use_rel_pos=use_rel_pos,
310
+ rel_pos_num_buckets=rel_pos_num_buckets,
311
+ rel_pos_max_distance=rel_pos_max_distance,
312
+ )
313
+ for i in range(num_layers)
314
+ ]
315
+ )
316
+
317
+ self.to_out = nn.Sequential(
318
+ Rearrange("b t c -> b c t"),
319
+ nn.Conv1d(
320
+ in_channels=channels + context_embedding_features,
321
+ out_channels=channels,
322
+ kernel_size=1,
323
+ ),
324
+ )
325
+
326
+ use_context_features = exists(context_features)
327
+ self.use_context_features = use_context_features
328
+ self.use_context_time = use_context_time
329
+
330
+ if use_context_time or use_context_features:
331
+ context_mapping_features = channels + context_embedding_features
332
+
333
+ self.to_mapping = nn.Sequential(
334
+ nn.Linear(context_mapping_features, context_mapping_features),
335
+ nn.GELU(),
336
+ nn.Linear(context_mapping_features, context_mapping_features),
337
+ nn.GELU(),
338
+ )
339
+
340
+ if use_context_time:
341
+ assert exists(context_mapping_features)
342
+ self.to_time = nn.Sequential(
343
+ TimePositionalEmbedding(
344
+ dim=channels, out_features=context_mapping_features
345
+ ),
346
+ nn.GELU(),
347
+ )
348
+
349
+ if use_context_features:
350
+ assert exists(context_features) and exists(context_mapping_features)
351
+ self.to_features = nn.Sequential(
352
+ nn.Linear(
353
+ in_features=context_features, out_features=context_mapping_features
354
+ ),
355
+ nn.GELU(),
356
+ )
357
+
358
+ self.fixed_embedding = FixedEmbedding(
359
+ max_length=embedding_max_length, features=context_embedding_features
360
+ )
361
+
362
+
363
+ def get_mapping(
364
+ self, time: Optional[Tensor] = None, features: Optional[Tensor] = None
365
+ ) -> Optional[Tensor]:
366
+ """Combines context time features and features into mapping"""
367
+ items, mapping = [], None
368
+ # Compute time features
369
+ if self.use_context_time:
370
+ assert_message = "use_context_time=True but no time features provided"
371
+ assert exists(time), assert_message
372
+ items += [self.to_time(time)]
373
+ # Compute features
374
+ if self.use_context_features:
375
+ assert_message = "context_features exists but no features provided"
376
+ assert exists(features), assert_message
377
+ items += [self.to_features(features)]
378
+
379
+ # Compute joint mapping
380
+ if self.use_context_time or self.use_context_features:
381
+ mapping = reduce(torch.stack(items), "n b m -> b m", "sum")
382
+ mapping = self.to_mapping(mapping)
383
+
384
+ return mapping
385
+
386
+ def run(self, x, time, embedding, features):
387
+
388
+ mapping = self.get_mapping(time, features)
389
+ x = torch.cat([x.expand(-1, embedding.size(1), -1), embedding], axis=-1)
390
+ mapping = mapping.unsqueeze(1).expand(-1, embedding.size(1), -1)
391
+
392
+ for block in self.blocks:
393
+ x = x + mapping
394
+ x = block(x)
395
+
396
+ x = x.mean(axis=1).unsqueeze(1)
397
+ x = self.to_out(x)
398
+ x = x.transpose(-1, -2)
399
+
400
+ return x
401
+
402
+ def forward(self, x: Tensor,
403
+ time: Tensor,
404
+ embedding_mask_proba: float = 0.0,
405
+ embedding: Optional[Tensor] = None,
406
+ features: Optional[Tensor] = None,
407
+ embedding_scale: float = 1.0) -> Tensor:
408
+
409
+ b, device = embedding.shape[0], embedding.device
410
+ fixed_embedding = self.fixed_embedding(embedding)
411
+ if embedding_mask_proba > 0.0:
412
+ # Randomly mask embedding
413
+ batch_mask = rand_bool(
414
+ shape=(b, 1, 1), proba=embedding_mask_proba, device=device
415
+ )
416
+ embedding = torch.where(batch_mask, fixed_embedding, embedding)
417
+
418
+ if embedding_scale != 1.0:
419
+ # Compute both normal and fixed embedding outputs
420
+ out = self.run(x, time, embedding=embedding, features=features)
421
+ out_masked = self.run(x, time, embedding=fixed_embedding, features=features)
422
+ # Scale conditional output using classifier-free guidance
423
+ return out_masked + (out - out_masked) * embedding_scale
424
+ else:
425
+ return self.run(x, time, embedding=embedding, features=features)
426
+
427
+ return x
428
+
429
+
430
+ """
431
+ Attention Components
432
+ """
433
+
434
+
435
+ class RelativePositionBias(nn.Module):
436
+ def __init__(self, num_buckets: int, max_distance: int, num_heads: int):
437
+ super().__init__()
438
+ self.num_buckets = num_buckets
439
+ self.max_distance = max_distance
440
+ self.num_heads = num_heads
441
+ self.relative_attention_bias = nn.Embedding(num_buckets, num_heads)
442
+
443
+ @staticmethod
444
+ def _relative_position_bucket(
445
+ relative_position: Tensor, num_buckets: int, max_distance: int
446
+ ):
447
+ num_buckets //= 2
448
+ ret = (relative_position >= 0).to(torch.long) * num_buckets
449
+ n = torch.abs(relative_position)
450
+
451
+ max_exact = num_buckets // 2
452
+ is_small = n < max_exact
453
+
454
+ val_if_large = (
455
+ max_exact
456
+ + (
457
+ torch.log(n.float() / max_exact)
458
+ / log(max_distance / max_exact)
459
+ * (num_buckets - max_exact)
460
+ ).long()
461
+ )
462
+ val_if_large = torch.min(
463
+ val_if_large, torch.full_like(val_if_large, num_buckets - 1)
464
+ )
465
+
466
+ ret += torch.where(is_small, n, val_if_large)
467
+ return ret
468
+
469
+ def forward(self, num_queries: int, num_keys: int) -> Tensor:
470
+ i, j, device = num_queries, num_keys, self.relative_attention_bias.weight.device
471
+ q_pos = torch.arange(j - i, j, dtype=torch.long, device=device)
472
+ k_pos = torch.arange(j, dtype=torch.long, device=device)
473
+ rel_pos = rearrange(k_pos, "j -> 1 j") - rearrange(q_pos, "i -> i 1")
474
+
475
+ relative_position_bucket = self._relative_position_bucket(
476
+ rel_pos, num_buckets=self.num_buckets, max_distance=self.max_distance
477
+ )
478
+
479
+ bias = self.relative_attention_bias(relative_position_bucket)
480
+ bias = rearrange(bias, "m n h -> 1 h m n")
481
+ return bias
482
+
483
+
484
+ def FeedForward(features: int, multiplier: int) -> nn.Module:
485
+ mid_features = features * multiplier
486
+ return nn.Sequential(
487
+ nn.Linear(in_features=features, out_features=mid_features),
488
+ nn.GELU(),
489
+ nn.Linear(in_features=mid_features, out_features=features),
490
+ )
491
+
492
+
493
+ class AttentionBase(nn.Module):
494
+ def __init__(
495
+ self,
496
+ features: int,
497
+ *,
498
+ head_features: int,
499
+ num_heads: int,
500
+ use_rel_pos: bool,
501
+ out_features: Optional[int] = None,
502
+ rel_pos_num_buckets: Optional[int] = None,
503
+ rel_pos_max_distance: Optional[int] = None,
504
+ ):
505
+ super().__init__()
506
+ self.scale = head_features ** -0.5
507
+ self.num_heads = num_heads
508
+ self.use_rel_pos = use_rel_pos
509
+ mid_features = head_features * num_heads
510
+
511
+ if use_rel_pos:
512
+ assert exists(rel_pos_num_buckets) and exists(rel_pos_max_distance)
513
+ self.rel_pos = RelativePositionBias(
514
+ num_buckets=rel_pos_num_buckets,
515
+ max_distance=rel_pos_max_distance,
516
+ num_heads=num_heads,
517
+ )
518
+ if out_features is None:
519
+ out_features = features
520
+
521
+ self.to_out = nn.Linear(in_features=mid_features, out_features=out_features)
522
+
523
+ def forward(self, q: Tensor, k: Tensor, v: Tensor) -> Tensor:
524
+ # Split heads
525
+ q, k, v = rearrange_many((q, k, v), "b n (h d) -> b h n d", h=self.num_heads)
526
+ # Compute similarity matrix
527
+ sim = einsum("... n d, ... m d -> ... n m", q, k)
528
+ sim = (sim + self.rel_pos(*sim.shape[-2:])) if self.use_rel_pos else sim
529
+ sim = sim * self.scale
530
+ # Get attention matrix with softmax
531
+ attn = sim.softmax(dim=-1)
532
+ # Compute values
533
+ out = einsum("... n m, ... m d -> ... n d", attn, v)
534
+ out = rearrange(out, "b h n d -> b n (h d)")
535
+ return self.to_out(out)
536
+
537
+
538
+ class Attention(nn.Module):
539
+ def __init__(
540
+ self,
541
+ features: int,
542
+ *,
543
+ head_features: int,
544
+ num_heads: int,
545
+ out_features: Optional[int] = None,
546
+ context_features: Optional[int] = None,
547
+ use_rel_pos: bool,
548
+ rel_pos_num_buckets: Optional[int] = None,
549
+ rel_pos_max_distance: Optional[int] = None,
550
+ ):
551
+ super().__init__()
552
+ self.context_features = context_features
553
+ mid_features = head_features * num_heads
554
+ context_features = default(context_features, features)
555
+
556
+ self.norm = nn.LayerNorm(features)
557
+ self.norm_context = nn.LayerNorm(context_features)
558
+ self.to_q = nn.Linear(
559
+ in_features=features, out_features=mid_features, bias=False
560
+ )
561
+ self.to_kv = nn.Linear(
562
+ in_features=context_features, out_features=mid_features * 2, bias=False
563
+ )
564
+
565
+ self.attention = AttentionBase(
566
+ features,
567
+ out_features=out_features,
568
+ num_heads=num_heads,
569
+ head_features=head_features,
570
+ use_rel_pos=use_rel_pos,
571
+ rel_pos_num_buckets=rel_pos_num_buckets,
572
+ rel_pos_max_distance=rel_pos_max_distance,
573
+ )
574
+
575
+ def forward(self, x: Tensor, *, context: Optional[Tensor] = None) -> Tensor:
576
+ assert_message = "You must provide a context when using context_features"
577
+ assert not self.context_features or exists(context), assert_message
578
+ # Use context if provided
579
+ context = default(context, x)
580
+ # Normalize then compute q from input and k,v from context
581
+ x, context = self.norm(x), self.norm_context(context)
582
+ q, k, v = (self.to_q(x), *torch.chunk(self.to_kv(context), chunks=2, dim=-1))
583
+ # Compute and return attention
584
+ return self.attention(q, k, v)
585
+
586
+
587
+ """
588
+ Transformer Blocks
589
+ """
590
+
591
+
592
+ class TransformerBlock(nn.Module):
593
+ def __init__(
594
+ self,
595
+ features: int,
596
+ num_heads: int,
597
+ head_features: int,
598
+ multiplier: int,
599
+ use_rel_pos: bool,
600
+ rel_pos_num_buckets: Optional[int] = None,
601
+ rel_pos_max_distance: Optional[int] = None,
602
+ context_features: Optional[int] = None,
603
+ ):
604
+ super().__init__()
605
+
606
+ self.use_cross_attention = exists(context_features) and context_features > 0
607
+
608
+ self.attention = Attention(
609
+ features=features,
610
+ num_heads=num_heads,
611
+ head_features=head_features,
612
+ use_rel_pos=use_rel_pos,
613
+ rel_pos_num_buckets=rel_pos_num_buckets,
614
+ rel_pos_max_distance=rel_pos_max_distance,
615
+ )
616
+
617
+ if self.use_cross_attention:
618
+ self.cross_attention = Attention(
619
+ features=features,
620
+ num_heads=num_heads,
621
+ head_features=head_features,
622
+ context_features=context_features,
623
+ use_rel_pos=use_rel_pos,
624
+ rel_pos_num_buckets=rel_pos_num_buckets,
625
+ rel_pos_max_distance=rel_pos_max_distance,
626
+ )
627
+
628
+ self.feed_forward = FeedForward(features=features, multiplier=multiplier)
629
+
630
+ def forward(self, x: Tensor, *, context: Optional[Tensor] = None) -> Tensor:
631
+ x = self.attention(x) + x
632
+ if self.use_cross_attention:
633
+ x = self.cross_attention(x, context=context) + x
634
+ x = self.feed_forward(x) + x
635
+ return x
636
+
637
+
638
+
639
+ """
640
+ Time Embeddings
641
+ """
642
+
643
+
644
+ class SinusoidalEmbedding(nn.Module):
645
+ def __init__(self, dim: int):
646
+ super().__init__()
647
+ self.dim = dim
648
+
649
+ def forward(self, x: Tensor) -> Tensor:
650
+ device, half_dim = x.device, self.dim // 2
651
+ emb = torch.tensor(log(10000) / (half_dim - 1), device=device)
652
+ emb = torch.exp(torch.arange(half_dim, device=device) * -emb)
653
+ emb = rearrange(x, "i -> i 1") * rearrange(emb, "j -> 1 j")
654
+ return torch.cat((emb.sin(), emb.cos()), dim=-1)
655
+
656
+
657
+ class LearnedPositionalEmbedding(nn.Module):
658
+ """Used for continuous time"""
659
+
660
+ def __init__(self, dim: int):
661
+ super().__init__()
662
+ assert (dim % 2) == 0
663
+ half_dim = dim // 2
664
+ self.weights = nn.Parameter(torch.randn(half_dim))
665
+
666
+ def forward(self, x: Tensor) -> Tensor:
667
+ x = rearrange(x, "b -> b 1")
668
+ freqs = x * rearrange(self.weights, "d -> 1 d") * 2 * pi
669
+ fouriered = torch.cat((freqs.sin(), freqs.cos()), dim=-1)
670
+ fouriered = torch.cat((x, fouriered), dim=-1)
671
+ return fouriered
672
+
673
+
674
+ def TimePositionalEmbedding(dim: int, out_features: int) -> nn.Module:
675
+ return nn.Sequential(
676
+ LearnedPositionalEmbedding(dim),
677
+ nn.Linear(in_features=dim + 1, out_features=out_features),
678
+ )
679
+
680
+ class FixedEmbedding(nn.Module):
681
+ def __init__(self, max_length: int, features: int):
682
+ super().__init__()
683
+ self.max_length = max_length
684
+ self.embedding = nn.Embedding(max_length, features)
685
+
686
+ def forward(self, x: Tensor) -> Tensor:
687
+ batch_size, length, device = *x.shape[0:2], x.device
688
+ assert_message = "Input sequence length must be <= max_length"
689
+ assert length <= self.max_length, assert_message
690
+ position = torch.arange(length, device=device)
691
+ fixed_embedding = self.embedding(position)
692
+ fixed_embedding = repeat(fixed_embedding, "n d -> b n d", b=batch_size)
693
+ return fixed_embedding
Modules/diffusion/sampler.py ADDED
@@ -0,0 +1,691 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from math import atan, cos, pi, sin, sqrt
2
+ from typing import Any, Callable, List, Optional, Tuple, Type
3
+
4
+ import torch
5
+ import torch.nn as nn
6
+ import torch.nn.functional as F
7
+ from einops import rearrange, reduce
8
+ from torch import Tensor
9
+
10
+ from .utils import *
11
+
12
+ """
13
+ Diffusion Training
14
+ """
15
+
16
+ """ Distributions """
17
+
18
+
19
+ class Distribution:
20
+ def __call__(self, num_samples: int, device: torch.device):
21
+ raise NotImplementedError()
22
+
23
+
24
+ class LogNormalDistribution(Distribution):
25
+ def __init__(self, mean: float, std: float):
26
+ self.mean = mean
27
+ self.std = std
28
+
29
+ def __call__(
30
+ self, num_samples: int, device: torch.device = torch.device("cpu")
31
+ ) -> Tensor:
32
+ normal = self.mean + self.std * torch.randn((num_samples,), device=device)
33
+ return normal.exp()
34
+
35
+
36
+ class UniformDistribution(Distribution):
37
+ def __call__(self, num_samples: int, device: torch.device = torch.device("cpu")):
38
+ return torch.rand(num_samples, device=device)
39
+
40
+
41
+ class VKDistribution(Distribution):
42
+ def __init__(
43
+ self,
44
+ min_value: float = 0.0,
45
+ max_value: float = float("inf"),
46
+ sigma_data: float = 1.0,
47
+ ):
48
+ self.min_value = min_value
49
+ self.max_value = max_value
50
+ self.sigma_data = sigma_data
51
+
52
+ def __call__(
53
+ self, num_samples: int, device: torch.device = torch.device("cpu")
54
+ ) -> Tensor:
55
+ sigma_data = self.sigma_data
56
+ min_cdf = atan(self.min_value / sigma_data) * 2 / pi
57
+ max_cdf = atan(self.max_value / sigma_data) * 2 / pi
58
+ u = (max_cdf - min_cdf) * torch.randn((num_samples,), device=device) + min_cdf
59
+ return torch.tan(u * pi / 2) * sigma_data
60
+
61
+
62
+ """ Diffusion Classes """
63
+
64
+
65
+ def pad_dims(x: Tensor, ndim: int) -> Tensor:
66
+ # Pads additional ndims to the right of the tensor
67
+ return x.view(*x.shape, *((1,) * ndim))
68
+
69
+
70
+ def clip(x: Tensor, dynamic_threshold: float = 0.0):
71
+ if dynamic_threshold == 0.0:
72
+ return x.clamp(-1.0, 1.0)
73
+ else:
74
+ # Dynamic thresholding
75
+ # Find dynamic threshold quantile for each batch
76
+ x_flat = rearrange(x, "b ... -> b (...)")
77
+ scale = torch.quantile(x_flat.abs(), dynamic_threshold, dim=-1)
78
+ # Clamp to a min of 1.0
79
+ scale.clamp_(min=1.0)
80
+ # Clamp all values and scale
81
+ scale = pad_dims(scale, ndim=x.ndim - scale.ndim)
82
+ x = x.clamp(-scale, scale) / scale
83
+ return x
84
+
85
+
86
+ def to_batch(
87
+ batch_size: int,
88
+ device: torch.device,
89
+ x: Optional[float] = None,
90
+ xs: Optional[Tensor] = None,
91
+ ) -> Tensor:
92
+ assert exists(x) ^ exists(xs), "Either x or xs must be provided"
93
+ # If x provided use the same for all batch items
94
+ if exists(x):
95
+ xs = torch.full(size=(batch_size,), fill_value=x).to(device)
96
+ assert exists(xs)
97
+ return xs
98
+
99
+
100
+ class Diffusion(nn.Module):
101
+
102
+ alias: str = ""
103
+
104
+ """Base diffusion class"""
105
+
106
+ def denoise_fn(
107
+ self,
108
+ x_noisy: Tensor,
109
+ sigmas: Optional[Tensor] = None,
110
+ sigma: Optional[float] = None,
111
+ **kwargs,
112
+ ) -> Tensor:
113
+ raise NotImplementedError("Diffusion class missing denoise_fn")
114
+
115
+ def forward(self, x: Tensor, noise: Tensor = None, **kwargs) -> Tensor:
116
+ raise NotImplementedError("Diffusion class missing forward function")
117
+
118
+
119
+ class VDiffusion(Diffusion):
120
+
121
+ alias = "v"
122
+
123
+ def __init__(self, net: nn.Module, *, sigma_distribution: Distribution):
124
+ super().__init__()
125
+ self.net = net
126
+ self.sigma_distribution = sigma_distribution
127
+
128
+ def get_alpha_beta(self, sigmas: Tensor) -> Tuple[Tensor, Tensor]:
129
+ angle = sigmas * pi / 2
130
+ alpha = torch.cos(angle)
131
+ beta = torch.sin(angle)
132
+ return alpha, beta
133
+
134
+ def denoise_fn(
135
+ self,
136
+ x_noisy: Tensor,
137
+ sigmas: Optional[Tensor] = None,
138
+ sigma: Optional[float] = None,
139
+ **kwargs,
140
+ ) -> Tensor:
141
+ batch_size, device = x_noisy.shape[0], x_noisy.device
142
+ sigmas = to_batch(x=sigma, xs=sigmas, batch_size=batch_size, device=device)
143
+ return self.net(x_noisy, sigmas, **kwargs)
144
+
145
+ def forward(self, x: Tensor, noise: Tensor = None, **kwargs) -> Tensor:
146
+ batch_size, device = x.shape[0], x.device
147
+
148
+ # Sample amount of noise to add for each batch element
149
+ sigmas = self.sigma_distribution(num_samples=batch_size, device=device)
150
+ sigmas_padded = rearrange(sigmas, "b -> b 1 1")
151
+
152
+ # Get noise
153
+ noise = default(noise, lambda: torch.randn_like(x))
154
+
155
+ # Combine input and noise weighted by half-circle
156
+ alpha, beta = self.get_alpha_beta(sigmas_padded)
157
+ x_noisy = x * alpha + noise * beta
158
+ x_target = noise * alpha - x * beta
159
+
160
+ # Denoise and return loss
161
+ x_denoised = self.denoise_fn(x_noisy, sigmas, **kwargs)
162
+ return F.mse_loss(x_denoised, x_target)
163
+
164
+
165
+ class KDiffusion(Diffusion):
166
+ """Elucidated Diffusion (Karras et al. 2022): https://arxiv.org/abs/2206.00364"""
167
+
168
+ alias = "k"
169
+
170
+ def __init__(
171
+ self,
172
+ net: nn.Module,
173
+ *,
174
+ sigma_distribution: Distribution,
175
+ sigma_data: float, # data distribution standard deviation
176
+ dynamic_threshold: float = 0.0,
177
+ ):
178
+ super().__init__()
179
+ self.net = net
180
+ self.sigma_data = sigma_data
181
+ self.sigma_distribution = sigma_distribution
182
+ self.dynamic_threshold = dynamic_threshold
183
+
184
+ def get_scale_weights(self, sigmas: Tensor) -> Tuple[Tensor, ...]:
185
+ sigma_data = self.sigma_data
186
+ c_noise = torch.log(sigmas) * 0.25
187
+ sigmas = rearrange(sigmas, "b -> b 1 1")
188
+ c_skip = (sigma_data ** 2) / (sigmas ** 2 + sigma_data ** 2)
189
+ c_out = sigmas * sigma_data * (sigma_data ** 2 + sigmas ** 2) ** -0.5
190
+ c_in = (sigmas ** 2 + sigma_data ** 2) ** -0.5
191
+ return c_skip, c_out, c_in, c_noise
192
+
193
+ def denoise_fn(
194
+ self,
195
+ x_noisy: Tensor,
196
+ sigmas: Optional[Tensor] = None,
197
+ sigma: Optional[float] = None,
198
+ **kwargs,
199
+ ) -> Tensor:
200
+ batch_size, device = x_noisy.shape[0], x_noisy.device
201
+ sigmas = to_batch(x=sigma, xs=sigmas, batch_size=batch_size, device=device)
202
+
203
+ # Predict network output and add skip connection
204
+ c_skip, c_out, c_in, c_noise = self.get_scale_weights(sigmas)
205
+ x_pred = self.net(c_in * x_noisy, c_noise, **kwargs)
206
+ x_denoised = c_skip * x_noisy + c_out * x_pred
207
+
208
+ return x_denoised
209
+
210
+ def loss_weight(self, sigmas: Tensor) -> Tensor:
211
+ # Computes weight depending on data distribution
212
+ return (sigmas ** 2 + self.sigma_data ** 2) * (sigmas * self.sigma_data) ** -2
213
+
214
+ def forward(self, x: Tensor, noise: Tensor = None, **kwargs) -> Tensor:
215
+ batch_size, device = x.shape[0], x.device
216
+ from einops import rearrange, reduce
217
+
218
+ # Sample amount of noise to add for each batch element
219
+ sigmas = self.sigma_distribution(num_samples=batch_size, device=device)
220
+ sigmas_padded = rearrange(sigmas, "b -> b 1 1")
221
+
222
+ # Add noise to input
223
+ noise = default(noise, lambda: torch.randn_like(x))
224
+ x_noisy = x + sigmas_padded * noise
225
+
226
+ # Compute denoised values
227
+ x_denoised = self.denoise_fn(x_noisy, sigmas=sigmas, **kwargs)
228
+
229
+ # Compute weighted loss
230
+ losses = F.mse_loss(x_denoised, x, reduction="none")
231
+ losses = reduce(losses, "b ... -> b", "mean")
232
+ losses = losses * self.loss_weight(sigmas)
233
+ loss = losses.mean()
234
+ return loss
235
+
236
+
237
+ class VKDiffusion(Diffusion):
238
+
239
+ alias = "vk"
240
+
241
+ def __init__(self, net: nn.Module, *, sigma_distribution: Distribution):
242
+ super().__init__()
243
+ self.net = net
244
+ self.sigma_distribution = sigma_distribution
245
+
246
+ def get_scale_weights(self, sigmas: Tensor) -> Tuple[Tensor, ...]:
247
+ sigma_data = 1.0
248
+ sigmas = rearrange(sigmas, "b -> b 1 1")
249
+ c_skip = (sigma_data ** 2) / (sigmas ** 2 + sigma_data ** 2)
250
+ c_out = -sigmas * sigma_data * (sigma_data ** 2 + sigmas ** 2) ** -0.5
251
+ c_in = (sigmas ** 2 + sigma_data ** 2) ** -0.5
252
+ return c_skip, c_out, c_in
253
+
254
+ def sigma_to_t(self, sigmas: Tensor) -> Tensor:
255
+ return sigmas.atan() / pi * 2
256
+
257
+ def t_to_sigma(self, t: Tensor) -> Tensor:
258
+ return (t * pi / 2).tan()
259
+
260
+ def denoise_fn(
261
+ self,
262
+ x_noisy: Tensor,
263
+ sigmas: Optional[Tensor] = None,
264
+ sigma: Optional[float] = None,
265
+ **kwargs,
266
+ ) -> Tensor:
267
+ batch_size, device = x_noisy.shape[0], x_noisy.device
268
+ sigmas = to_batch(x=sigma, xs=sigmas, batch_size=batch_size, device=device)
269
+
270
+ # Predict network output and add skip connection
271
+ c_skip, c_out, c_in = self.get_scale_weights(sigmas)
272
+ x_pred = self.net(c_in * x_noisy, self.sigma_to_t(sigmas), **kwargs)
273
+ x_denoised = c_skip * x_noisy + c_out * x_pred
274
+ return x_denoised
275
+
276
+ def forward(self, x: Tensor, noise: Tensor = None, **kwargs) -> Tensor:
277
+ batch_size, device = x.shape[0], x.device
278
+
279
+ # Sample amount of noise to add for each batch element
280
+ sigmas = self.sigma_distribution(num_samples=batch_size, device=device)
281
+ sigmas_padded = rearrange(sigmas, "b -> b 1 1")
282
+
283
+ # Add noise to input
284
+ noise = default(noise, lambda: torch.randn_like(x))
285
+ x_noisy = x + sigmas_padded * noise
286
+
287
+ # Compute model output
288
+ c_skip, c_out, c_in = self.get_scale_weights(sigmas)
289
+ x_pred = self.net(c_in * x_noisy, self.sigma_to_t(sigmas), **kwargs)
290
+
291
+ # Compute v-objective target
292
+ v_target = (x - c_skip * x_noisy) / (c_out + 1e-7)
293
+
294
+ # Compute loss
295
+ loss = F.mse_loss(x_pred, v_target)
296
+ return loss
297
+
298
+
299
+ """
300
+ Diffusion Sampling
301
+ """
302
+
303
+ """ Schedules """
304
+
305
+
306
+ class Schedule(nn.Module):
307
+ """Interface used by different sampling schedules"""
308
+
309
+ def forward(self, num_steps: int, device: torch.device) -> Tensor:
310
+ raise NotImplementedError()
311
+
312
+
313
+ class LinearSchedule(Schedule):
314
+ def forward(self, num_steps: int, device: Any) -> Tensor:
315
+ sigmas = torch.linspace(1, 0, num_steps + 1)[:-1]
316
+ return sigmas
317
+
318
+
319
+ class KarrasSchedule(Schedule):
320
+ """https://arxiv.org/abs/2206.00364 equation 5"""
321
+
322
+ def __init__(self, sigma_min: float, sigma_max: float, rho: float = 7.0):
323
+ super().__init__()
324
+ self.sigma_min = sigma_min
325
+ self.sigma_max = sigma_max
326
+ self.rho = rho
327
+
328
+ def forward(self, num_steps: int, device: Any) -> Tensor:
329
+ rho_inv = 1.0 / self.rho
330
+ steps = torch.arange(num_steps, device=device, dtype=torch.float32)
331
+ sigmas = (
332
+ self.sigma_max ** rho_inv
333
+ + (steps / (num_steps - 1))
334
+ * (self.sigma_min ** rho_inv - self.sigma_max ** rho_inv)
335
+ ) ** self.rho
336
+ sigmas = F.pad(sigmas, pad=(0, 1), value=0.0)
337
+ return sigmas
338
+
339
+
340
+ """ Samplers """
341
+
342
+
343
+ class Sampler(nn.Module):
344
+
345
+ diffusion_types: List[Type[Diffusion]] = []
346
+
347
+ def forward(
348
+ self, noise: Tensor, fn: Callable, sigmas: Tensor, num_steps: int
349
+ ) -> Tensor:
350
+ raise NotImplementedError()
351
+
352
+ def inpaint(
353
+ self,
354
+ source: Tensor,
355
+ mask: Tensor,
356
+ fn: Callable,
357
+ sigmas: Tensor,
358
+ num_steps: int,
359
+ num_resamples: int,
360
+ ) -> Tensor:
361
+ raise NotImplementedError("Inpainting not available with current sampler")
362
+
363
+
364
+ class VSampler(Sampler):
365
+
366
+ diffusion_types = [VDiffusion]
367
+
368
+ def get_alpha_beta(self, sigma: float) -> Tuple[float, float]:
369
+ angle = sigma * pi / 2
370
+ alpha = cos(angle)
371
+ beta = sin(angle)
372
+ return alpha, beta
373
+
374
+ def forward(
375
+ self, noise: Tensor, fn: Callable, sigmas: Tensor, num_steps: int
376
+ ) -> Tensor:
377
+ x = sigmas[0] * noise
378
+ alpha, beta = self.get_alpha_beta(sigmas[0].item())
379
+
380
+ for i in range(num_steps - 1):
381
+ is_last = i == num_steps - 1
382
+
383
+ x_denoised = fn(x, sigma=sigmas[i])
384
+ x_pred = x * alpha - x_denoised * beta
385
+ x_eps = x * beta + x_denoised * alpha
386
+
387
+ if not is_last:
388
+ alpha, beta = self.get_alpha_beta(sigmas[i + 1].item())
389
+ x = x_pred * alpha + x_eps * beta
390
+
391
+ return x_pred
392
+
393
+
394
+ class KarrasSampler(Sampler):
395
+ """https://arxiv.org/abs/2206.00364 algorithm 1"""
396
+
397
+ diffusion_types = [KDiffusion, VKDiffusion]
398
+
399
+ def __init__(
400
+ self,
401
+ s_tmin: float = 0,
402
+ s_tmax: float = float("inf"),
403
+ s_churn: float = 0.0,
404
+ s_noise: float = 1.0,
405
+ ):
406
+ super().__init__()
407
+ self.s_tmin = s_tmin
408
+ self.s_tmax = s_tmax
409
+ self.s_noise = s_noise
410
+ self.s_churn = s_churn
411
+
412
+ def step(
413
+ self, x: Tensor, fn: Callable, sigma: float, sigma_next: float, gamma: float
414
+ ) -> Tensor:
415
+ """Algorithm 2 (step)"""
416
+ # Select temporarily increased noise level
417
+ sigma_hat = sigma + gamma * sigma
418
+ # Add noise to move from sigma to sigma_hat
419
+ epsilon = self.s_noise * torch.randn_like(x)
420
+ x_hat = x + sqrt(sigma_hat ** 2 - sigma ** 2) * epsilon
421
+ # Evaluate ∂x/∂sigma at sigma_hat
422
+ d = (x_hat - fn(x_hat, sigma=sigma_hat)) / sigma_hat
423
+ # Take euler step from sigma_hat to sigma_next
424
+ x_next = x_hat + (sigma_next - sigma_hat) * d
425
+ # Second order correction
426
+ if sigma_next != 0:
427
+ model_out_next = fn(x_next, sigma=sigma_next)
428
+ d_prime = (x_next - model_out_next) / sigma_next
429
+ x_next = x_hat + 0.5 * (sigma - sigma_hat) * (d + d_prime)
430
+ return x_next
431
+
432
+ def forward(
433
+ self, noise: Tensor, fn: Callable, sigmas: Tensor, num_steps: int
434
+ ) -> Tensor:
435
+ x = sigmas[0] * noise
436
+ # Compute gammas
437
+ gammas = torch.where(
438
+ (sigmas >= self.s_tmin) & (sigmas <= self.s_tmax),
439
+ min(self.s_churn / num_steps, sqrt(2) - 1),
440
+ 0.0,
441
+ )
442
+ # Denoise to sample
443
+ for i in range(num_steps - 1):
444
+ x = self.step(
445
+ x, fn=fn, sigma=sigmas[i], sigma_next=sigmas[i + 1], gamma=gammas[i] # type: ignore # noqa
446
+ )
447
+
448
+ return x
449
+
450
+
451
+ class AEulerSampler(Sampler):
452
+
453
+ diffusion_types = [KDiffusion, VKDiffusion]
454
+
455
+ def get_sigmas(self, sigma: float, sigma_next: float) -> Tuple[float, float]:
456
+ sigma_up = sqrt(sigma_next ** 2 * (sigma ** 2 - sigma_next ** 2) / sigma ** 2)
457
+ sigma_down = sqrt(sigma_next ** 2 - sigma_up ** 2)
458
+ return sigma_up, sigma_down
459
+
460
+ def step(self, x: Tensor, fn: Callable, sigma: float, sigma_next: float) -> Tensor:
461
+ # Sigma steps
462
+ sigma_up, sigma_down = self.get_sigmas(sigma, sigma_next)
463
+ # Derivative at sigma (∂x/∂sigma)
464
+ d = (x - fn(x, sigma=sigma)) / sigma
465
+ # Euler method
466
+ x_next = x + d * (sigma_down - sigma)
467
+ # Add randomness
468
+ x_next = x_next + torch.randn_like(x) * sigma_up
469
+ return x_next
470
+
471
+ def forward(
472
+ self, noise: Tensor, fn: Callable, sigmas: Tensor, num_steps: int
473
+ ) -> Tensor:
474
+ x = sigmas[0] * noise
475
+ # Denoise to sample
476
+ for i in range(num_steps - 1):
477
+ x = self.step(x, fn=fn, sigma=sigmas[i], sigma_next=sigmas[i + 1]) # type: ignore # noqa
478
+ return x
479
+
480
+
481
+ class ADPM2Sampler(Sampler):
482
+ """https://www.desmos.com/calculator/jbxjlqd9mb"""
483
+
484
+ diffusion_types = [KDiffusion, VKDiffusion]
485
+
486
+ def __init__(self, rho: float = 1.0):
487
+ super().__init__()
488
+ self.rho = rho
489
+
490
+ def get_sigmas(self, sigma: float, sigma_next: float) -> Tuple[float, float, float]:
491
+ r = self.rho
492
+ sigma_up = sqrt(sigma_next ** 2 * (sigma ** 2 - sigma_next ** 2) / sigma ** 2)
493
+ sigma_down = sqrt(sigma_next ** 2 - sigma_up ** 2)
494
+ sigma_mid = ((sigma ** (1 / r) + sigma_down ** (1 / r)) / 2) ** r
495
+ return sigma_up, sigma_down, sigma_mid
496
+
497
+ def step(self, x: Tensor, fn: Callable, sigma: float, sigma_next: float) -> Tensor:
498
+ # Sigma steps
499
+ sigma_up, sigma_down, sigma_mid = self.get_sigmas(sigma, sigma_next)
500
+ # Derivative at sigma (∂x/∂sigma)
501
+ d = (x - fn(x, sigma=sigma)) / sigma
502
+ # Denoise to midpoint
503
+ x_mid = x + d * (sigma_mid - sigma)
504
+ # Derivative at sigma_mid (∂x_mid/∂sigma_mid)
505
+ d_mid = (x_mid - fn(x_mid, sigma=sigma_mid)) / sigma_mid
506
+ # Denoise to next
507
+ x = x + d_mid * (sigma_down - sigma)
508
+ # Add randomness
509
+ x_next = x + torch.randn_like(x) * sigma_up
510
+ return x_next
511
+
512
+ def forward(
513
+ self, noise: Tensor, fn: Callable, sigmas: Tensor, num_steps: int
514
+ ) -> Tensor:
515
+ x = sigmas[0] * noise
516
+ # Denoise to sample
517
+ for i in range(num_steps - 1):
518
+ x = self.step(x, fn=fn, sigma=sigmas[i], sigma_next=sigmas[i + 1]) # type: ignore # noqa
519
+ return x
520
+
521
+ def inpaint(
522
+ self,
523
+ source: Tensor,
524
+ mask: Tensor,
525
+ fn: Callable,
526
+ sigmas: Tensor,
527
+ num_steps: int,
528
+ num_resamples: int,
529
+ ) -> Tensor:
530
+ x = sigmas[0] * torch.randn_like(source)
531
+
532
+ for i in range(num_steps - 1):
533
+ # Noise source to current noise level
534
+ source_noisy = source + sigmas[i] * torch.randn_like(source)
535
+ for r in range(num_resamples):
536
+ # Merge noisy source and current then denoise
537
+ x = source_noisy * mask + x * ~mask
538
+ x = self.step(x, fn=fn, sigma=sigmas[i], sigma_next=sigmas[i + 1]) # type: ignore # noqa
539
+ # Renoise if not last resample step
540
+ if r < num_resamples - 1:
541
+ sigma = sqrt(sigmas[i] ** 2 - sigmas[i + 1] ** 2)
542
+ x = x + sigma * torch.randn_like(x)
543
+
544
+ return source * mask + x * ~mask
545
+
546
+
547
+ """ Main Classes """
548
+
549
+
550
+ class DiffusionSampler(nn.Module):
551
+ def __init__(
552
+ self,
553
+ diffusion: Diffusion,
554
+ *,
555
+ sampler: Sampler,
556
+ sigma_schedule: Schedule,
557
+ num_steps: Optional[int] = None,
558
+ clamp: bool = True,
559
+ ):
560
+ super().__init__()
561
+ self.denoise_fn = diffusion.denoise_fn
562
+ self.sampler = sampler
563
+ self.sigma_schedule = sigma_schedule
564
+ self.num_steps = num_steps
565
+ self.clamp = clamp
566
+
567
+ # Check sampler is compatible with diffusion type
568
+ sampler_class = sampler.__class__.__name__
569
+ diffusion_class = diffusion.__class__.__name__
570
+ message = f"{sampler_class} incompatible with {diffusion_class}"
571
+ assert diffusion.alias in [t.alias for t in sampler.diffusion_types], message
572
+
573
+ def forward(
574
+ self, noise: Tensor, num_steps: Optional[int] = None, **kwargs
575
+ ) -> Tensor:
576
+ device = noise.device
577
+ num_steps = default(num_steps, self.num_steps) # type: ignore
578
+ assert exists(num_steps), "Parameter `num_steps` must be provided"
579
+ # Compute sigmas using schedule
580
+ sigmas = self.sigma_schedule(num_steps, device)
581
+ # Append additional kwargs to denoise function (used e.g. for conditional unet)
582
+ fn = lambda *a, **ka: self.denoise_fn(*a, **{**ka, **kwargs}) # noqa
583
+ # Sample using sampler
584
+ x = self.sampler(noise, fn=fn, sigmas=sigmas, num_steps=num_steps)
585
+ x = x.clamp(-1.0, 1.0) if self.clamp else x
586
+ return x
587
+
588
+
589
+ class DiffusionInpainter(nn.Module):
590
+ def __init__(
591
+ self,
592
+ diffusion: Diffusion,
593
+ *,
594
+ num_steps: int,
595
+ num_resamples: int,
596
+ sampler: Sampler,
597
+ sigma_schedule: Schedule,
598
+ ):
599
+ super().__init__()
600
+ self.denoise_fn = diffusion.denoise_fn
601
+ self.num_steps = num_steps
602
+ self.num_resamples = num_resamples
603
+ self.inpaint_fn = sampler.inpaint
604
+ self.sigma_schedule = sigma_schedule
605
+
606
+ @torch.no_grad()
607
+ def forward(self, inpaint: Tensor, inpaint_mask: Tensor) -> Tensor:
608
+ x = self.inpaint_fn(
609
+ source=inpaint,
610
+ mask=inpaint_mask,
611
+ fn=self.denoise_fn,
612
+ sigmas=self.sigma_schedule(self.num_steps, inpaint.device),
613
+ num_steps=self.num_steps,
614
+ num_resamples=self.num_resamples,
615
+ )
616
+ return x
617
+
618
+
619
+ def sequential_mask(like: Tensor, start: int) -> Tensor:
620
+ length, device = like.shape[2], like.device
621
+ mask = torch.ones_like(like, dtype=torch.bool)
622
+ mask[:, :, start:] = torch.zeros((length - start,), device=device)
623
+ return mask
624
+
625
+
626
+ class SpanBySpanComposer(nn.Module):
627
+ def __init__(
628
+ self,
629
+ inpainter: DiffusionInpainter,
630
+ *,
631
+ num_spans: int,
632
+ ):
633
+ super().__init__()
634
+ self.inpainter = inpainter
635
+ self.num_spans = num_spans
636
+
637
+ def forward(self, start: Tensor, keep_start: bool = False) -> Tensor:
638
+ half_length = start.shape[2] // 2
639
+
640
+ spans = list(start.chunk(chunks=2, dim=-1)) if keep_start else []
641
+ # Inpaint second half from first half
642
+ inpaint = torch.zeros_like(start)
643
+ inpaint[:, :, :half_length] = start[:, :, half_length:]
644
+ inpaint_mask = sequential_mask(like=start, start=half_length)
645
+
646
+ for i in range(self.num_spans):
647
+ # Inpaint second half
648
+ span = self.inpainter(inpaint=inpaint, inpaint_mask=inpaint_mask)
649
+ # Replace first half with generated second half
650
+ second_half = span[:, :, half_length:]
651
+ inpaint[:, :, :half_length] = second_half
652
+ # Save generated span
653
+ spans.append(second_half)
654
+
655
+ return torch.cat(spans, dim=2)
656
+
657
+
658
+ class XDiffusion(nn.Module):
659
+ def __init__(self, type: str, net: nn.Module, **kwargs):
660
+ super().__init__()
661
+
662
+ diffusion_classes = [VDiffusion, KDiffusion, VKDiffusion]
663
+ aliases = [t.alias for t in diffusion_classes] # type: ignore
664
+ message = f"type='{type}' must be one of {*aliases,}"
665
+ assert type in aliases, message
666
+ self.net = net
667
+
668
+ for XDiffusion in diffusion_classes:
669
+ if XDiffusion.alias == type: # type: ignore
670
+ self.diffusion = XDiffusion(net=net, **kwargs)
671
+
672
+ def forward(self, *args, **kwargs) -> Tensor:
673
+ return self.diffusion(*args, **kwargs)
674
+
675
+ def sample(
676
+ self,
677
+ noise: Tensor,
678
+ num_steps: int,
679
+ sigma_schedule: Schedule,
680
+ sampler: Sampler,
681
+ clamp: bool,
682
+ **kwargs,
683
+ ) -> Tensor:
684
+ diffusion_sampler = DiffusionSampler(
685
+ diffusion=self.diffusion,
686
+ sampler=sampler,
687
+ sigma_schedule=sigma_schedule,
688
+ num_steps=num_steps,
689
+ clamp=clamp,
690
+ )
691
+ return diffusion_sampler(noise, **kwargs)
Modules/diffusion/utils.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from functools import reduce
2
+ from inspect import isfunction
3
+ from math import ceil, floor, log2, pi
4
+ from typing import Callable, Dict, List, Optional, Sequence, Tuple, TypeVar, Union
5
+
6
+ import torch
7
+ import torch.nn.functional as F
8
+ from einops import rearrange
9
+ from torch import Generator, Tensor
10
+ from typing_extensions import TypeGuard
11
+
12
+ T = TypeVar("T")
13
+
14
+
15
+ def exists(val: Optional[T]) -> TypeGuard[T]:
16
+ return val is not None
17
+
18
+
19
+ def iff(condition: bool, value: T) -> Optional[T]:
20
+ return value if condition else None
21
+
22
+
23
+ def is_sequence(obj: T) -> TypeGuard[Union[list, tuple]]:
24
+ return isinstance(obj, list) or isinstance(obj, tuple)
25
+
26
+
27
+ def default(val: Optional[T], d: Union[Callable[..., T], T]) -> T:
28
+ if exists(val):
29
+ return val
30
+ return d() if isfunction(d) else d
31
+
32
+
33
+ def to_list(val: Union[T, Sequence[T]]) -> List[T]:
34
+ if isinstance(val, tuple):
35
+ return list(val)
36
+ if isinstance(val, list):
37
+ return val
38
+ return [val] # type: ignore
39
+
40
+
41
+ def prod(vals: Sequence[int]) -> int:
42
+ return reduce(lambda x, y: x * y, vals)
43
+
44
+
45
+ def closest_power_2(x: float) -> int:
46
+ exponent = log2(x)
47
+ distance_fn = lambda z: abs(x - 2 ** z) # noqa
48
+ exponent_closest = min((floor(exponent), ceil(exponent)), key=distance_fn)
49
+ return 2 ** int(exponent_closest)
50
+
51
+ def rand_bool(shape, proba, device = None):
52
+ if proba == 1:
53
+ return torch.ones(shape, device=device, dtype=torch.bool)
54
+ elif proba == 0:
55
+ return torch.zeros(shape, device=device, dtype=torch.bool)
56
+ else:
57
+ return torch.bernoulli(torch.full(shape, proba, device=device)).to(torch.bool)
58
+
59
+
60
+ """
61
+ Kwargs Utils
62
+ """
63
+
64
+
65
+ def group_dict_by_prefix(prefix: str, d: Dict) -> Tuple[Dict, Dict]:
66
+ return_dicts: Tuple[Dict, Dict] = ({}, {})
67
+ for key in d.keys():
68
+ no_prefix = int(not key.startswith(prefix))
69
+ return_dicts[no_prefix][key] = d[key]
70
+ return return_dicts
71
+
72
+
73
+ def groupby(prefix: str, d: Dict, keep_prefix: bool = False) -> Tuple[Dict, Dict]:
74
+ kwargs_with_prefix, kwargs = group_dict_by_prefix(prefix, d)
75
+ if keep_prefix:
76
+ return kwargs_with_prefix, kwargs
77
+ kwargs_no_prefix = {k[len(prefix) :]: v for k, v in kwargs_with_prefix.items()}
78
+ return kwargs_no_prefix, kwargs
79
+
80
+
81
+ def prefix_dict(prefix: str, d: Dict) -> Dict:
82
+ return {prefix + str(k): v for k, v in d.items()}
Modules/hifigan.py ADDED
@@ -0,0 +1,477 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn.functional as F
3
+ import torch.nn as nn
4
+ from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d
5
+ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
6
+ from .utils import init_weights, get_padding
7
+
8
+ import math
9
+ import random
10
+ import numpy as np
11
+
12
+ LRELU_SLOPE = 0.1
13
+
14
+ class AdaIN1d(nn.Module):
15
+ def __init__(self, style_dim, num_features):
16
+ super().__init__()
17
+ self.norm = nn.InstanceNorm1d(num_features, affine=False)
18
+ self.fc = nn.Linear(style_dim, num_features*2)
19
+
20
+ def forward(self, x, s):
21
+ h = self.fc(s)
22
+ h = h.view(h.size(0), h.size(1), 1)
23
+ gamma, beta = torch.chunk(h, chunks=2, dim=1)
24
+ return (1 + gamma) * self.norm(x) + beta
25
+
26
+ class AdaINResBlock1(torch.nn.Module):
27
+ def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5), style_dim=64):
28
+ super(AdaINResBlock1, self).__init__()
29
+ self.convs1 = nn.ModuleList([
30
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0],
31
+ padding=get_padding(kernel_size, dilation[0]))),
32
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1],
33
+ padding=get_padding(kernel_size, dilation[1]))),
34
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[2],
35
+ padding=get_padding(kernel_size, dilation[2])))
36
+ ])
37
+ self.convs1.apply(init_weights)
38
+
39
+ self.convs2 = nn.ModuleList([
40
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
41
+ padding=get_padding(kernel_size, 1))),
42
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
43
+ padding=get_padding(kernel_size, 1))),
44
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
45
+ padding=get_padding(kernel_size, 1)))
46
+ ])
47
+ self.convs2.apply(init_weights)
48
+
49
+ self.adain1 = nn.ModuleList([
50
+ AdaIN1d(style_dim, channels),
51
+ AdaIN1d(style_dim, channels),
52
+ AdaIN1d(style_dim, channels),
53
+ ])
54
+
55
+ self.adain2 = nn.ModuleList([
56
+ AdaIN1d(style_dim, channels),
57
+ AdaIN1d(style_dim, channels),
58
+ AdaIN1d(style_dim, channels),
59
+ ])
60
+
61
+ self.alpha1 = nn.ParameterList([nn.Parameter(torch.ones(1, channels, 1)) for i in range(len(self.convs1))])
62
+ self.alpha2 = nn.ParameterList([nn.Parameter(torch.ones(1, channels, 1)) for i in range(len(self.convs2))])
63
+
64
+
65
+ def forward(self, x, s):
66
+ for c1, c2, n1, n2, a1, a2 in zip(self.convs1, self.convs2, self.adain1, self.adain2, self.alpha1, self.alpha2):
67
+ xt = n1(x, s)
68
+ xt = xt + (1 / a1) * (torch.sin(a1 * xt) ** 2) # Snake1D
69
+ xt = c1(xt)
70
+ xt = n2(xt, s)
71
+ xt = xt + (1 / a2) * (torch.sin(a2 * xt) ** 2) # Snake1D
72
+ xt = c2(xt)
73
+ x = xt + x
74
+ return x
75
+
76
+ def remove_weight_norm(self):
77
+ for l in self.convs1:
78
+ remove_weight_norm(l)
79
+ for l in self.convs2:
80
+ remove_weight_norm(l)
81
+
82
+ class SineGen(torch.nn.Module):
83
+ """ Definition of sine generator
84
+ SineGen(samp_rate, harmonic_num = 0,
85
+ sine_amp = 0.1, noise_std = 0.003,
86
+ voiced_threshold = 0,
87
+ flag_for_pulse=False)
88
+ samp_rate: sampling rate in Hz
89
+ harmonic_num: number of harmonic overtones (default 0)
90
+ sine_amp: amplitude of sine-wavefrom (default 0.1)
91
+ noise_std: std of Gaussian noise (default 0.003)
92
+ voiced_thoreshold: F0 threshold for U/V classification (default 0)
93
+ flag_for_pulse: this SinGen is used inside PulseGen (default False)
94
+ Note: when flag_for_pulse is True, the first time step of a voiced
95
+ segment is always sin(np.pi) or cos(0)
96
+ """
97
+
98
+ def __init__(self, samp_rate, upsample_scale, harmonic_num=0,
99
+ sine_amp=0.1, noise_std=0.003,
100
+ voiced_threshold=0,
101
+ flag_for_pulse=False):
102
+ super(SineGen, self).__init__()
103
+ self.sine_amp = sine_amp
104
+ self.noise_std = noise_std
105
+ self.harmonic_num = harmonic_num
106
+ self.dim = self.harmonic_num + 1
107
+ self.sampling_rate = samp_rate
108
+ self.voiced_threshold = voiced_threshold
109
+ self.flag_for_pulse = flag_for_pulse
110
+ self.upsample_scale = upsample_scale
111
+
112
+ def _f02uv(self, f0):
113
+ # generate uv signal
114
+ uv = (f0 > self.voiced_threshold).type(torch.float32)
115
+ return uv
116
+
117
+ def _f02sine(self, f0_values):
118
+ """ f0_values: (batchsize, length, dim)
119
+ where dim indicates fundamental tone and overtones
120
+ """
121
+ # convert to F0 in rad. The interger part n can be ignored
122
+ # because 2 * np.pi * n doesn't affect phase
123
+ rad_values = (f0_values / self.sampling_rate) % 1
124
+
125
+ # initial phase noise (no noise for fundamental component)
126
+ rand_ini = torch.rand(f0_values.shape[0], f0_values.shape[2], \
127
+ device=f0_values.device)
128
+ rand_ini[:, 0] = 0
129
+ rad_values[:, 0, :] = rad_values[:, 0, :] + rand_ini
130
+
131
+ # instantanouse phase sine[t] = sin(2*pi \sum_i=1 ^{t} rad)
132
+ if not self.flag_for_pulse:
133
+ # # for normal case
134
+
135
+ # # To prevent torch.cumsum numerical overflow,
136
+ # # it is necessary to add -1 whenever \sum_k=1^n rad_value_k > 1.
137
+ # # Buffer tmp_over_one_idx indicates the time step to add -1.
138
+ # # This will not change F0 of sine because (x-1) * 2*pi = x * 2*pi
139
+ # tmp_over_one = torch.cumsum(rad_values, 1) % 1
140
+ # tmp_over_one_idx = (padDiff(tmp_over_one)) < 0
141
+ # cumsum_shift = torch.zeros_like(rad_values)
142
+ # cumsum_shift[:, 1:, :] = tmp_over_one_idx * -1.0
143
+
144
+ # phase = torch.cumsum(rad_values, dim=1) * 2 * np.pi
145
+ rad_values = torch.nn.functional.interpolate(rad_values.transpose(1, 2),
146
+ scale_factor=1/self.upsample_scale,
147
+ mode="linear").transpose(1, 2)
148
+
149
+ # tmp_over_one = torch.cumsum(rad_values, 1) % 1
150
+ # tmp_over_one_idx = (padDiff(tmp_over_one)) < 0
151
+ # cumsum_shift = torch.zeros_like(rad_values)
152
+ # cumsum_shift[:, 1:, :] = tmp_over_one_idx * -1.0
153
+
154
+ phase = torch.cumsum(rad_values, dim=1) * 2 * np.pi
155
+ phase = torch.nn.functional.interpolate(phase.transpose(1, 2) * self.upsample_scale,
156
+ scale_factor=self.upsample_scale, mode="linear").transpose(1, 2)
157
+ sines = torch.sin(phase)
158
+
159
+ else:
160
+ # If necessary, make sure that the first time step of every
161
+ # voiced segments is sin(pi) or cos(0)
162
+ # This is used for pulse-train generation
163
+
164
+ # identify the last time step in unvoiced segments
165
+ uv = self._f02uv(f0_values)
166
+ uv_1 = torch.roll(uv, shifts=-1, dims=1)
167
+ uv_1[:, -1, :] = 1
168
+ u_loc = (uv < 1) * (uv_1 > 0)
169
+
170
+ # get the instantanouse phase
171
+ tmp_cumsum = torch.cumsum(rad_values, dim=1)
172
+ # different batch needs to be processed differently
173
+ for idx in range(f0_values.shape[0]):
174
+ temp_sum = tmp_cumsum[idx, u_loc[idx, :, 0], :]
175
+ temp_sum[1:, :] = temp_sum[1:, :] - temp_sum[0:-1, :]
176
+ # stores the accumulation of i.phase within
177
+ # each voiced segments
178
+ tmp_cumsum[idx, :, :] = 0
179
+ tmp_cumsum[idx, u_loc[idx, :, 0], :] = temp_sum
180
+
181
+ # rad_values - tmp_cumsum: remove the accumulation of i.phase
182
+ # within the previous voiced segment.
183
+ i_phase = torch.cumsum(rad_values - tmp_cumsum, dim=1)
184
+
185
+ # get the sines
186
+ sines = torch.cos(i_phase * 2 * np.pi)
187
+ return sines
188
+
189
+ def forward(self, f0):
190
+ """ sine_tensor, uv = forward(f0)
191
+ input F0: tensor(batchsize=1, length, dim=1)
192
+ f0 for unvoiced steps should be 0
193
+ output sine_tensor: tensor(batchsize=1, length, dim)
194
+ output uv: tensor(batchsize=1, length, 1)
195
+ """
196
+ f0_buf = torch.zeros(f0.shape[0], f0.shape[1], self.dim,
197
+ device=f0.device)
198
+ # fundamental component
199
+ fn = torch.multiply(f0, torch.FloatTensor([[range(1, self.harmonic_num + 2)]]).to(f0.device))
200
+
201
+ # generate sine waveforms
202
+ sine_waves = self._f02sine(fn) * self.sine_amp
203
+
204
+ # generate uv signal
205
+ # uv = torch.ones(f0.shape)
206
+ # uv = uv * (f0 > self.voiced_threshold)
207
+ uv = self._f02uv(f0)
208
+
209
+ # noise: for unvoiced should be similar to sine_amp
210
+ # std = self.sine_amp/3 -> max value ~ self.sine_amp
211
+ # . for voiced regions is self.noise_std
212
+ noise_amp = uv * self.noise_std + (1 - uv) * self.sine_amp / 3
213
+ noise = noise_amp * torch.randn_like(sine_waves)
214
+
215
+ # first: set the unvoiced part to 0 by uv
216
+ # then: additive noise
217
+ sine_waves = sine_waves * uv + noise
218
+ return sine_waves, uv, noise
219
+
220
+
221
+ class SourceModuleHnNSF(torch.nn.Module):
222
+ """ SourceModule for hn-nsf
223
+ SourceModule(sampling_rate, harmonic_num=0, sine_amp=0.1,
224
+ add_noise_std=0.003, voiced_threshod=0)
225
+ sampling_rate: sampling_rate in Hz
226
+ harmonic_num: number of harmonic above F0 (default: 0)
227
+ sine_amp: amplitude of sine source signal (default: 0.1)
228
+ add_noise_std: std of additive Gaussian noise (default: 0.003)
229
+ note that amplitude of noise in unvoiced is decided
230
+ by sine_amp
231
+ voiced_threshold: threhold to set U/V given F0 (default: 0)
232
+ Sine_source, noise_source = SourceModuleHnNSF(F0_sampled)
233
+ F0_sampled (batchsize, length, 1)
234
+ Sine_source (batchsize, length, 1)
235
+ noise_source (batchsize, length 1)
236
+ uv (batchsize, length, 1)
237
+ """
238
+
239
+ def __init__(self, sampling_rate, upsample_scale, harmonic_num=0, sine_amp=0.1,
240
+ add_noise_std=0.003, voiced_threshod=0):
241
+ super(SourceModuleHnNSF, self).__init__()
242
+
243
+ self.sine_amp = sine_amp
244
+ self.noise_std = add_noise_std
245
+
246
+ # to produce sine waveforms
247
+ self.l_sin_gen = SineGen(sampling_rate, upsample_scale, harmonic_num,
248
+ sine_amp, add_noise_std, voiced_threshod)
249
+
250
+ # to merge source harmonics into a single excitation
251
+ self.l_linear = torch.nn.Linear(harmonic_num + 1, 1)
252
+ self.l_tanh = torch.nn.Tanh()
253
+
254
+ def forward(self, x):
255
+ """
256
+ Sine_source, noise_source = SourceModuleHnNSF(F0_sampled)
257
+ F0_sampled (batchsize, length, 1)
258
+ Sine_source (batchsize, length, 1)
259
+ noise_source (batchsize, length 1)
260
+ """
261
+ # source for harmonic branch
262
+ with torch.no_grad():
263
+ sine_wavs, uv, _ = self.l_sin_gen(x)
264
+ sine_merge = self.l_tanh(self.l_linear(sine_wavs))
265
+
266
+ # source for noise branch, in the same shape as uv
267
+ noise = torch.randn_like(uv) * self.sine_amp / 3
268
+ return sine_merge, noise, uv
269
+ def padDiff(x):
270
+ return F.pad(F.pad(x, (0,0,-1,1), 'constant', 0) - x, (0,0,0,-1), 'constant', 0)
271
+
272
+ class Generator(torch.nn.Module):
273
+ def __init__(self, style_dim, resblock_kernel_sizes, upsample_rates, upsample_initial_channel, resblock_dilation_sizes, upsample_kernel_sizes):
274
+ super(Generator, self).__init__()
275
+ self.num_kernels = len(resblock_kernel_sizes)
276
+ self.num_upsamples = len(upsample_rates)
277
+ resblock = AdaINResBlock1
278
+
279
+ self.m_source = SourceModuleHnNSF(
280
+ sampling_rate=24000,
281
+ upsample_scale=np.prod(upsample_rates),
282
+ harmonic_num=8, voiced_threshod=10)
283
+
284
+ self.f0_upsamp = torch.nn.Upsample(scale_factor=np.prod(upsample_rates))
285
+ self.noise_convs = nn.ModuleList()
286
+ self.ups = nn.ModuleList()
287
+ self.noise_res = nn.ModuleList()
288
+
289
+ for i, (u, k) in enumerate(zip(upsample_rates, upsample_kernel_sizes)):
290
+ c_cur = upsample_initial_channel // (2 ** (i + 1))
291
+
292
+ self.ups.append(weight_norm(ConvTranspose1d(upsample_initial_channel//(2**i),
293
+ upsample_initial_channel//(2**(i+1)),
294
+ k, u, padding=(u//2 + u%2), output_padding=u%2)))
295
+
296
+ if i + 1 < len(upsample_rates): #
297
+ stride_f0 = np.prod(upsample_rates[i + 1:])
298
+ self.noise_convs.append(Conv1d(
299
+ 1, c_cur, kernel_size=stride_f0 * 2, stride=stride_f0, padding=(stride_f0+1) // 2))
300
+ self.noise_res.append(resblock(c_cur, 7, [1,3,5], style_dim))
301
+ else:
302
+ self.noise_convs.append(Conv1d(1, c_cur, kernel_size=1))
303
+ self.noise_res.append(resblock(c_cur, 11, [1,3,5], style_dim))
304
+
305
+ self.resblocks = nn.ModuleList()
306
+
307
+ self.alphas = nn.ParameterList()
308
+ self.alphas.append(nn.Parameter(torch.ones(1, upsample_initial_channel, 1)))
309
+
310
+ for i in range(len(self.ups)):
311
+ ch = upsample_initial_channel//(2**(i+1))
312
+ self.alphas.append(nn.Parameter(torch.ones(1, ch, 1)))
313
+
314
+ for j, (k, d) in enumerate(zip(resblock_kernel_sizes, resblock_dilation_sizes)):
315
+ self.resblocks.append(resblock(ch, k, d, style_dim))
316
+
317
+ self.conv_post = weight_norm(Conv1d(ch, 1, 7, 1, padding=3))
318
+ self.ups.apply(init_weights)
319
+ self.conv_post.apply(init_weights)
320
+
321
+ def forward(self, x, s, f0):
322
+
323
+ f0 = self.f0_upsamp(f0[:, None]).transpose(1, 2) # bs,n,t
324
+
325
+ har_source, noi_source, uv = self.m_source(f0)
326
+ har_source = har_source.transpose(1, 2)
327
+
328
+ for i in range(self.num_upsamples):
329
+ x = x + (1 / self.alphas[i]) * (torch.sin(self.alphas[i] * x) ** 2)
330
+ x_source = self.noise_convs[i](har_source)
331
+ x_source = self.noise_res[i](x_source, s)
332
+
333
+ x = self.ups[i](x)
334
+ x = x + x_source
335
+
336
+ xs = None
337
+ for j in range(self.num_kernels):
338
+ if xs is None:
339
+ xs = self.resblocks[i*self.num_kernels+j](x, s)
340
+ else:
341
+ xs += self.resblocks[i*self.num_kernels+j](x, s)
342
+ x = xs / self.num_kernels
343
+ x = x + (1 / self.alphas[i+1]) * (torch.sin(self.alphas[i+1] * x) ** 2)
344
+ x = self.conv_post(x)
345
+ x = torch.tanh(x)
346
+
347
+ return x
348
+
349
+ def remove_weight_norm(self):
350
+ print('Removing weight norm...')
351
+ for l in self.ups:
352
+ remove_weight_norm(l)
353
+ for l in self.resblocks:
354
+ l.remove_weight_norm()
355
+ remove_weight_norm(self.conv_pre)
356
+ remove_weight_norm(self.conv_post)
357
+
358
+
359
+ class AdainResBlk1d(nn.Module):
360
+ def __init__(self, dim_in, dim_out, style_dim=64, actv=nn.LeakyReLU(0.2),
361
+ upsample='none', dropout_p=0.0):
362
+ super().__init__()
363
+ self.actv = actv
364
+ self.upsample_type = upsample
365
+ self.upsample = UpSample1d(upsample)
366
+ self.learned_sc = dim_in != dim_out
367
+ self._build_weights(dim_in, dim_out, style_dim)
368
+ self.dropout = nn.Dropout(dropout_p)
369
+
370
+ if upsample == 'none':
371
+ self.pool = nn.Identity()
372
+ else:
373
+ self.pool = weight_norm(nn.ConvTranspose1d(dim_in, dim_in, kernel_size=3, stride=2, groups=dim_in, padding=1, output_padding=1))
374
+
375
+
376
+ def _build_weights(self, dim_in, dim_out, style_dim):
377
+ self.conv1 = weight_norm(nn.Conv1d(dim_in, dim_out, 3, 1, 1))
378
+ self.conv2 = weight_norm(nn.Conv1d(dim_out, dim_out, 3, 1, 1))
379
+ self.norm1 = AdaIN1d(style_dim, dim_in)
380
+ self.norm2 = AdaIN1d(style_dim, dim_out)
381
+ if self.learned_sc:
382
+ self.conv1x1 = weight_norm(nn.Conv1d(dim_in, dim_out, 1, 1, 0, bias=False))
383
+
384
+ def _shortcut(self, x):
385
+ x = self.upsample(x)
386
+ if self.learned_sc:
387
+ x = self.conv1x1(x)
388
+ return x
389
+
390
+ def _residual(self, x, s):
391
+ x = self.norm1(x, s)
392
+ x = self.actv(x)
393
+ x = self.pool(x)
394
+ x = self.conv1(self.dropout(x))
395
+ x = self.norm2(x, s)
396
+ x = self.actv(x)
397
+ x = self.conv2(self.dropout(x))
398
+ return x
399
+
400
+ def forward(self, x, s):
401
+ out = self._residual(x, s)
402
+ out = (out + self._shortcut(x)) / math.sqrt(2)
403
+ return out
404
+
405
+ class UpSample1d(nn.Module):
406
+ def __init__(self, layer_type):
407
+ super().__init__()
408
+ self.layer_type = layer_type
409
+
410
+ def forward(self, x):
411
+ if self.layer_type == 'none':
412
+ return x
413
+ else:
414
+ return F.interpolate(x, scale_factor=2, mode='nearest')
415
+
416
+ class Decoder(nn.Module):
417
+ def __init__(self, dim_in=512, F0_channel=512, style_dim=64, dim_out=80,
418
+ resblock_kernel_sizes = [3,7,11],
419
+ upsample_rates = [10,5,3,2],
420
+ upsample_initial_channel=512,
421
+ resblock_dilation_sizes=[[1,3,5], [1,3,5], [1,3,5]],
422
+ upsample_kernel_sizes=[20,10,6,4]):
423
+ super().__init__()
424
+
425
+ self.decode = nn.ModuleList()
426
+
427
+ self.encode = AdainResBlk1d(dim_in + 2, 1024, style_dim)
428
+
429
+ self.decode.append(AdainResBlk1d(1024 + 2 + 64, 1024, style_dim))
430
+ self.decode.append(AdainResBlk1d(1024 + 2 + 64, 1024, style_dim))
431
+ self.decode.append(AdainResBlk1d(1024 + 2 + 64, 1024, style_dim))
432
+ self.decode.append(AdainResBlk1d(1024 + 2 + 64, 512, style_dim, upsample=True))
433
+
434
+ self.F0_conv = weight_norm(nn.Conv1d(1, 1, kernel_size=3, stride=2, groups=1, padding=1))
435
+
436
+ self.N_conv = weight_norm(nn.Conv1d(1, 1, kernel_size=3, stride=2, groups=1, padding=1))
437
+
438
+ self.asr_res = nn.Sequential(
439
+ weight_norm(nn.Conv1d(512, 64, kernel_size=1)),
440
+ )
441
+
442
+
443
+ self.generator = Generator(style_dim, resblock_kernel_sizes, upsample_rates, upsample_initial_channel, resblock_dilation_sizes, upsample_kernel_sizes)
444
+
445
+
446
+ def forward(self, asr, F0_curve, N, s):
447
+ if self.training:
448
+ downlist = [0, 3, 7]
449
+ F0_down = downlist[random.randint(0, 2)]
450
+ downlist = [0, 3, 7, 15]
451
+ N_down = downlist[random.randint(0, 3)]
452
+ if F0_down:
453
+ F0_curve = nn.functional.conv1d(F0_curve.unsqueeze(1), torch.ones(1, 1, F0_down).to('cuda'), padding=F0_down//2).squeeze(1) / F0_down
454
+ if N_down:
455
+ N = nn.functional.conv1d(N.unsqueeze(1), torch.ones(1, 1, N_down).to('cuda'), padding=N_down//2).squeeze(1) / N_down
456
+
457
+
458
+ F0 = self.F0_conv(F0_curve.unsqueeze(1))
459
+ N = self.N_conv(N.unsqueeze(1))
460
+
461
+ x = torch.cat([asr, F0, N], axis=1)
462
+ x = self.encode(x, s)
463
+
464
+ asr_res = self.asr_res(asr)
465
+
466
+ res = True
467
+ for block in self.decode:
468
+ if res:
469
+ x = torch.cat([x, asr_res, F0, N], axis=1)
470
+ x = block(x, s)
471
+ if block.upsample_type != "none":
472
+ res = False
473
+
474
+ x = self.generator(x, s, F0_curve)
475
+ return x
476
+
477
+
Modules/utils.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ def init_weights(m, mean=0.0, std=0.01):
2
+ classname = m.__class__.__name__
3
+ if classname.find("Conv") != -1:
4
+ m.weight.data.normal_(mean, std)
5
+
6
+
7
+ def apply_weight_norm(m):
8
+ classname = m.__class__.__name__
9
+ if classname.find("Conv") != -1:
10
+ weight_norm(m)
11
+
12
+
13
+ def get_padding(kernel_size, dilation=1):
14
+ return int((kernel_size*dilation - dilation)/2)
README.md CHANGED
@@ -11,4 +11,13 @@ license: mit
11
  short_description: Build custom voices in StyleTTS 2
12
  ---
13
 
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
11
  short_description: Build custom voices in StyleTTS 2
12
  ---
13
 
14
+ # StyleTTS2 Studio
15
+
16
+ Customizable Voices for the StyleTTS2 text-to-speech model based on [StyleTTS2](https://github.com/yl4579/StyleTTS2) and [artificial StyleTTS2](https://huggingface.co/dkounadis/artificial-styletts2/tree/main).
17
+
18
+ I used Label Studio to label 50 randomly generated voices with the following 6 features: Gender, Tone, Quality, Pace, Enunciation and Style.
19
+ These 6 features were used for a Principal Component Analysis (PCA) to reduce the 256-dimensional style vector into manageable dimensions. The results can likely be further enhanced by selecting better features and labeling more samples, but these first results show that it's generally possible to dial in specific voice features.
20
+
21
+ **Disclaimer from the original StyleTTS2 repo:**
22
+
23
+ Pre-Trained Models: Before using these pre-trained models, you agree to inform the listeners that the speech samples are synthesized by the pre-trained models, unless you have the permission to use the voice you synthesize. That is, you agree to only use voices whose speakers grant the permission to have their voice cloned, either directly or by license before making synthesized voices public, or you have to publicly announce that these voices are synthesized if you do not have the permission to use these voices.
Utils/ASR/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+
Utils/ASR/config.yml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ log_dir: "logs/20201006"
2
+ save_freq: 5
3
+ device: "cuda"
4
+ epochs: 180
5
+ batch_size: 64
6
+ pretrained_model: ""
7
+ train_data: "ASRDataset/train_list.txt"
8
+ val_data: "ASRDataset/val_list.txt"
9
+
10
+ dataset_params:
11
+ data_augmentation: false
12
+
13
+ preprocess_parasm:
14
+ sr: 24000
15
+ spect_params:
16
+ n_fft: 2048
17
+ win_length: 1200
18
+ hop_length: 300
19
+ mel_params:
20
+ n_mels: 80
21
+
22
+ model_params:
23
+ input_dim: 80
24
+ hidden_dim: 256
25
+ n_token: 178
26
+ token_embedding_dim: 512
27
+
28
+ optimizer_params:
29
+ lr: 0.0005
Utils/ASR/epoch_00080.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fedd55a1234b0c56e1e8b509c74edf3a5e2f27106a66038a4a946047a775bd6c
3
+ size 94552811
Utils/ASR/layers.py ADDED
@@ -0,0 +1,354 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import torch
3
+ from torch import nn
4
+ from typing import Optional, Any
5
+ from torch import Tensor
6
+ import torch.nn.functional as F
7
+ import torchaudio
8
+ import torchaudio.functional as audio_F
9
+
10
+ import random
11
+ random.seed(0)
12
+
13
+
14
+ def _get_activation_fn(activ):
15
+ if activ == 'relu':
16
+ return nn.ReLU()
17
+ elif activ == 'lrelu':
18
+ return nn.LeakyReLU(0.2)
19
+ elif activ == 'swish':
20
+ return lambda x: x*torch.sigmoid(x)
21
+ else:
22
+ raise RuntimeError('Unexpected activ type %s, expected [relu, lrelu, swish]' % activ)
23
+
24
+ class LinearNorm(torch.nn.Module):
25
+ def __init__(self, in_dim, out_dim, bias=True, w_init_gain='linear'):
26
+ super(LinearNorm, self).__init__()
27
+ self.linear_layer = torch.nn.Linear(in_dim, out_dim, bias=bias)
28
+
29
+ torch.nn.init.xavier_uniform_(
30
+ self.linear_layer.weight,
31
+ gain=torch.nn.init.calculate_gain(w_init_gain))
32
+
33
+ def forward(self, x):
34
+ return self.linear_layer(x)
35
+
36
+
37
+ class ConvNorm(torch.nn.Module):
38
+ def __init__(self, in_channels, out_channels, kernel_size=1, stride=1,
39
+ padding=None, dilation=1, bias=True, w_init_gain='linear', param=None):
40
+ super(ConvNorm, self).__init__()
41
+ if padding is None:
42
+ assert(kernel_size % 2 == 1)
43
+ padding = int(dilation * (kernel_size - 1) / 2)
44
+
45
+ self.conv = torch.nn.Conv1d(in_channels, out_channels,
46
+ kernel_size=kernel_size, stride=stride,
47
+ padding=padding, dilation=dilation,
48
+ bias=bias)
49
+
50
+ torch.nn.init.xavier_uniform_(
51
+ self.conv.weight, gain=torch.nn.init.calculate_gain(w_init_gain, param=param))
52
+
53
+ def forward(self, signal):
54
+ conv_signal = self.conv(signal)
55
+ return conv_signal
56
+
57
+ class CausualConv(nn.Module):
58
+ def __init__(self, in_channels, out_channels, kernel_size=1, stride=1, padding=1, dilation=1, bias=True, w_init_gain='linear', param=None):
59
+ super(CausualConv, self).__init__()
60
+ if padding is None:
61
+ assert(kernel_size % 2 == 1)
62
+ padding = int(dilation * (kernel_size - 1) / 2) * 2
63
+ else:
64
+ self.padding = padding * 2
65
+ self.conv = nn.Conv1d(in_channels, out_channels,
66
+ kernel_size=kernel_size, stride=stride,
67
+ padding=self.padding,
68
+ dilation=dilation,
69
+ bias=bias)
70
+
71
+ torch.nn.init.xavier_uniform_(
72
+ self.conv.weight, gain=torch.nn.init.calculate_gain(w_init_gain, param=param))
73
+
74
+ def forward(self, x):
75
+ x = self.conv(x)
76
+ x = x[:, :, :-self.padding]
77
+ return x
78
+
79
+ class CausualBlock(nn.Module):
80
+ def __init__(self, hidden_dim, n_conv=3, dropout_p=0.2, activ='lrelu'):
81
+ super(CausualBlock, self).__init__()
82
+ self.blocks = nn.ModuleList([
83
+ self._get_conv(hidden_dim, dilation=3**i, activ=activ, dropout_p=dropout_p)
84
+ for i in range(n_conv)])
85
+
86
+ def forward(self, x):
87
+ for block in self.blocks:
88
+ res = x
89
+ x = block(x)
90
+ x += res
91
+ return x
92
+
93
+ def _get_conv(self, hidden_dim, dilation, activ='lrelu', dropout_p=0.2):
94
+ layers = [
95
+ CausualConv(hidden_dim, hidden_dim, kernel_size=3, padding=dilation, dilation=dilation),
96
+ _get_activation_fn(activ),
97
+ nn.BatchNorm1d(hidden_dim),
98
+ nn.Dropout(p=dropout_p),
99
+ CausualConv(hidden_dim, hidden_dim, kernel_size=3, padding=1, dilation=1),
100
+ _get_activation_fn(activ),
101
+ nn.Dropout(p=dropout_p)
102
+ ]
103
+ return nn.Sequential(*layers)
104
+
105
+ class ConvBlock(nn.Module):
106
+ def __init__(self, hidden_dim, n_conv=3, dropout_p=0.2, activ='relu'):
107
+ super().__init__()
108
+ self._n_groups = 8
109
+ self.blocks = nn.ModuleList([
110
+ self._get_conv(hidden_dim, dilation=3**i, activ=activ, dropout_p=dropout_p)
111
+ for i in range(n_conv)])
112
+
113
+
114
+ def forward(self, x):
115
+ for block in self.blocks:
116
+ res = x
117
+ x = block(x)
118
+ x += res
119
+ return x
120
+
121
+ def _get_conv(self, hidden_dim, dilation, activ='relu', dropout_p=0.2):
122
+ layers = [
123
+ ConvNorm(hidden_dim, hidden_dim, kernel_size=3, padding=dilation, dilation=dilation),
124
+ _get_activation_fn(activ),
125
+ nn.GroupNorm(num_groups=self._n_groups, num_channels=hidden_dim),
126
+ nn.Dropout(p=dropout_p),
127
+ ConvNorm(hidden_dim, hidden_dim, kernel_size=3, padding=1, dilation=1),
128
+ _get_activation_fn(activ),
129
+ nn.Dropout(p=dropout_p)
130
+ ]
131
+ return nn.Sequential(*layers)
132
+
133
+ class LocationLayer(nn.Module):
134
+ def __init__(self, attention_n_filters, attention_kernel_size,
135
+ attention_dim):
136
+ super(LocationLayer, self).__init__()
137
+ padding = int((attention_kernel_size - 1) / 2)
138
+ self.location_conv = ConvNorm(2, attention_n_filters,
139
+ kernel_size=attention_kernel_size,
140
+ padding=padding, bias=False, stride=1,
141
+ dilation=1)
142
+ self.location_dense = LinearNorm(attention_n_filters, attention_dim,
143
+ bias=False, w_init_gain='tanh')
144
+
145
+ def forward(self, attention_weights_cat):
146
+ processed_attention = self.location_conv(attention_weights_cat)
147
+ processed_attention = processed_attention.transpose(1, 2)
148
+ processed_attention = self.location_dense(processed_attention)
149
+ return processed_attention
150
+
151
+
152
+ class Attention(nn.Module):
153
+ def __init__(self, attention_rnn_dim, embedding_dim, attention_dim,
154
+ attention_location_n_filters, attention_location_kernel_size):
155
+ super(Attention, self).__init__()
156
+ self.query_layer = LinearNorm(attention_rnn_dim, attention_dim,
157
+ bias=False, w_init_gain='tanh')
158
+ self.memory_layer = LinearNorm(embedding_dim, attention_dim, bias=False,
159
+ w_init_gain='tanh')
160
+ self.v = LinearNorm(attention_dim, 1, bias=False)
161
+ self.location_layer = LocationLayer(attention_location_n_filters,
162
+ attention_location_kernel_size,
163
+ attention_dim)
164
+ self.score_mask_value = -float("inf")
165
+
166
+ def get_alignment_energies(self, query, processed_memory,
167
+ attention_weights_cat):
168
+ """
169
+ PARAMS
170
+ ------
171
+ query: decoder output (batch, n_mel_channels * n_frames_per_step)
172
+ processed_memory: processed encoder outputs (B, T_in, attention_dim)
173
+ attention_weights_cat: cumulative and prev. att weights (B, 2, max_time)
174
+ RETURNS
175
+ -------
176
+ alignment (batch, max_time)
177
+ """
178
+
179
+ processed_query = self.query_layer(query.unsqueeze(1))
180
+ processed_attention_weights = self.location_layer(attention_weights_cat)
181
+ energies = self.v(torch.tanh(
182
+ processed_query + processed_attention_weights + processed_memory))
183
+
184
+ energies = energies.squeeze(-1)
185
+ return energies
186
+
187
+ def forward(self, attention_hidden_state, memory, processed_memory,
188
+ attention_weights_cat, mask):
189
+ """
190
+ PARAMS
191
+ ------
192
+ attention_hidden_state: attention rnn last output
193
+ memory: encoder outputs
194
+ processed_memory: processed encoder outputs
195
+ attention_weights_cat: previous and cummulative attention weights
196
+ mask: binary mask for padded data
197
+ """
198
+ alignment = self.get_alignment_energies(
199
+ attention_hidden_state, processed_memory, attention_weights_cat)
200
+
201
+ if mask is not None:
202
+ alignment.data.masked_fill_(mask, self.score_mask_value)
203
+
204
+ attention_weights = F.softmax(alignment, dim=1)
205
+ attention_context = torch.bmm(attention_weights.unsqueeze(1), memory)
206
+ attention_context = attention_context.squeeze(1)
207
+
208
+ return attention_context, attention_weights
209
+
210
+
211
+ class ForwardAttentionV2(nn.Module):
212
+ def __init__(self, attention_rnn_dim, embedding_dim, attention_dim,
213
+ attention_location_n_filters, attention_location_kernel_size):
214
+ super(ForwardAttentionV2, self).__init__()
215
+ self.query_layer = LinearNorm(attention_rnn_dim, attention_dim,
216
+ bias=False, w_init_gain='tanh')
217
+ self.memory_layer = LinearNorm(embedding_dim, attention_dim, bias=False,
218
+ w_init_gain='tanh')
219
+ self.v = LinearNorm(attention_dim, 1, bias=False)
220
+ self.location_layer = LocationLayer(attention_location_n_filters,
221
+ attention_location_kernel_size,
222
+ attention_dim)
223
+ self.score_mask_value = -float(1e20)
224
+
225
+ def get_alignment_energies(self, query, processed_memory,
226
+ attention_weights_cat):
227
+ """
228
+ PARAMS
229
+ ------
230
+ query: decoder output (batch, n_mel_channels * n_frames_per_step)
231
+ processed_memory: processed encoder outputs (B, T_in, attention_dim)
232
+ attention_weights_cat: prev. and cumulative att weights (B, 2, max_time)
233
+ RETURNS
234
+ -------
235
+ alignment (batch, max_time)
236
+ """
237
+
238
+ processed_query = self.query_layer(query.unsqueeze(1))
239
+ processed_attention_weights = self.location_layer(attention_weights_cat)
240
+ energies = self.v(torch.tanh(
241
+ processed_query + processed_attention_weights + processed_memory))
242
+
243
+ energies = energies.squeeze(-1)
244
+ return energies
245
+
246
+ def forward(self, attention_hidden_state, memory, processed_memory,
247
+ attention_weights_cat, mask, log_alpha):
248
+ """
249
+ PARAMS
250
+ ------
251
+ attention_hidden_state: attention rnn last output
252
+ memory: encoder outputs
253
+ processed_memory: processed encoder outputs
254
+ attention_weights_cat: previous and cummulative attention weights
255
+ mask: binary mask for padded data
256
+ """
257
+ log_energy = self.get_alignment_energies(
258
+ attention_hidden_state, processed_memory, attention_weights_cat)
259
+
260
+ #log_energy =
261
+
262
+ if mask is not None:
263
+ log_energy.data.masked_fill_(mask, self.score_mask_value)
264
+
265
+ #attention_weights = F.softmax(alignment, dim=1)
266
+
267
+ #content_score = log_energy.unsqueeze(1) #[B, MAX_TIME] -> [B, 1, MAX_TIME]
268
+ #log_alpha = log_alpha.unsqueeze(2) #[B, MAX_TIME] -> [B, MAX_TIME, 1]
269
+
270
+ #log_total_score = log_alpha + content_score
271
+
272
+ #previous_attention_weights = attention_weights_cat[:,0,:]
273
+
274
+ log_alpha_shift_padded = []
275
+ max_time = log_energy.size(1)
276
+ for sft in range(2):
277
+ shifted = log_alpha[:,:max_time-sft]
278
+ shift_padded = F.pad(shifted, (sft,0), 'constant', self.score_mask_value)
279
+ log_alpha_shift_padded.append(shift_padded.unsqueeze(2))
280
+
281
+ biased = torch.logsumexp(torch.cat(log_alpha_shift_padded,2), 2)
282
+
283
+ log_alpha_new = biased + log_energy
284
+
285
+ attention_weights = F.softmax(log_alpha_new, dim=1)
286
+
287
+ attention_context = torch.bmm(attention_weights.unsqueeze(1), memory)
288
+ attention_context = attention_context.squeeze(1)
289
+
290
+ return attention_context, attention_weights, log_alpha_new
291
+
292
+
293
+ class PhaseShuffle2d(nn.Module):
294
+ def __init__(self, n=2):
295
+ super(PhaseShuffle2d, self).__init__()
296
+ self.n = n
297
+ self.random = random.Random(1)
298
+
299
+ def forward(self, x, move=None):
300
+ # x.size = (B, C, M, L)
301
+ if move is None:
302
+ move = self.random.randint(-self.n, self.n)
303
+
304
+ if move == 0:
305
+ return x
306
+ else:
307
+ left = x[:, :, :, :move]
308
+ right = x[:, :, :, move:]
309
+ shuffled = torch.cat([right, left], dim=3)
310
+ return shuffled
311
+
312
+ class PhaseShuffle1d(nn.Module):
313
+ def __init__(self, n=2):
314
+ super(PhaseShuffle1d, self).__init__()
315
+ self.n = n
316
+ self.random = random.Random(1)
317
+
318
+ def forward(self, x, move=None):
319
+ # x.size = (B, C, M, L)
320
+ if move is None:
321
+ move = self.random.randint(-self.n, self.n)
322
+
323
+ if move == 0:
324
+ return x
325
+ else:
326
+ left = x[:, :, :move]
327
+ right = x[:, :, move:]
328
+ shuffled = torch.cat([right, left], dim=2)
329
+
330
+ return shuffled
331
+
332
+ class MFCC(nn.Module):
333
+ def __init__(self, n_mfcc=40, n_mels=80):
334
+ super(MFCC, self).__init__()
335
+ self.n_mfcc = n_mfcc
336
+ self.n_mels = n_mels
337
+ self.norm = 'ortho'
338
+ dct_mat = audio_F.create_dct(self.n_mfcc, self.n_mels, self.norm)
339
+ self.register_buffer('dct_mat', dct_mat)
340
+
341
+ def forward(self, mel_specgram):
342
+ if len(mel_specgram.shape) == 2:
343
+ mel_specgram = mel_specgram.unsqueeze(0)
344
+ unsqueezed = True
345
+ else:
346
+ unsqueezed = False
347
+ # (channel, n_mels, time).tranpose(...) dot (n_mels, n_mfcc)
348
+ # -> (channel, time, n_mfcc).tranpose(...)
349
+ mfcc = torch.matmul(mel_specgram.transpose(1, 2), self.dct_mat).transpose(1, 2)
350
+
351
+ # unpack batch
352
+ if unsqueezed:
353
+ mfcc = mfcc.squeeze(0)
354
+ return mfcc
Utils/ASR/models.py ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import torch
3
+ from torch import nn
4
+ from torch.nn import TransformerEncoder
5
+ import torch.nn.functional as F
6
+ from .layers import MFCC, Attention, LinearNorm, ConvNorm, ConvBlock
7
+
8
+ class ASRCNN(nn.Module):
9
+ def __init__(self,
10
+ input_dim=80,
11
+ hidden_dim=256,
12
+ n_token=35,
13
+ n_layers=6,
14
+ token_embedding_dim=256,
15
+
16
+ ):
17
+ super().__init__()
18
+ self.n_token = n_token
19
+ self.n_down = 1
20
+ self.to_mfcc = MFCC()
21
+ self.init_cnn = ConvNorm(input_dim//2, hidden_dim, kernel_size=7, padding=3, stride=2)
22
+ self.cnns = nn.Sequential(
23
+ *[nn.Sequential(
24
+ ConvBlock(hidden_dim),
25
+ nn.GroupNorm(num_groups=1, num_channels=hidden_dim)
26
+ ) for n in range(n_layers)])
27
+ self.projection = ConvNorm(hidden_dim, hidden_dim // 2)
28
+ self.ctc_linear = nn.Sequential(
29
+ LinearNorm(hidden_dim//2, hidden_dim),
30
+ nn.ReLU(),
31
+ LinearNorm(hidden_dim, n_token))
32
+ self.asr_s2s = ASRS2S(
33
+ embedding_dim=token_embedding_dim,
34
+ hidden_dim=hidden_dim//2,
35
+ n_token=n_token)
36
+
37
+ def forward(self, x, src_key_padding_mask=None, text_input=None):
38
+ x = self.to_mfcc(x)
39
+ x = self.init_cnn(x)
40
+ x = self.cnns(x)
41
+ x = self.projection(x)
42
+ x = x.transpose(1, 2)
43
+ ctc_logit = self.ctc_linear(x)
44
+ if text_input is not None:
45
+ _, s2s_logit, s2s_attn = self.asr_s2s(x, src_key_padding_mask, text_input)
46
+ return ctc_logit, s2s_logit, s2s_attn
47
+ else:
48
+ return ctc_logit
49
+
50
+ def get_feature(self, x):
51
+ x = self.to_mfcc(x.squeeze(1))
52
+ x = self.init_cnn(x)
53
+ x = self.cnns(x)
54
+ x = self.projection(x)
55
+ return x
56
+
57
+ def length_to_mask(self, lengths):
58
+ mask = torch.arange(lengths.max()).unsqueeze(0).expand(lengths.shape[0], -1).type_as(lengths)
59
+ mask = torch.gt(mask+1, lengths.unsqueeze(1)).to(lengths.device)
60
+ return mask
61
+
62
+ def get_future_mask(self, out_length, unmask_future_steps=0):
63
+ """
64
+ Args:
65
+ out_length (int): returned mask shape is (out_length, out_length).
66
+ unmask_futre_steps (int): unmasking future step size.
67
+ Return:
68
+ mask (torch.BoolTensor): mask future timesteps mask[i, j] = True if i > j + unmask_future_steps else False
69
+ """
70
+ index_tensor = torch.arange(out_length).unsqueeze(0).expand(out_length, -1)
71
+ mask = torch.gt(index_tensor, index_tensor.T + unmask_future_steps)
72
+ return mask
73
+
74
+ class ASRS2S(nn.Module):
75
+ def __init__(self,
76
+ embedding_dim=256,
77
+ hidden_dim=512,
78
+ n_location_filters=32,
79
+ location_kernel_size=63,
80
+ n_token=40):
81
+ super(ASRS2S, self).__init__()
82
+ self.embedding = nn.Embedding(n_token, embedding_dim)
83
+ val_range = math.sqrt(6 / hidden_dim)
84
+ self.embedding.weight.data.uniform_(-val_range, val_range)
85
+
86
+ self.decoder_rnn_dim = hidden_dim
87
+ self.project_to_n_symbols = nn.Linear(self.decoder_rnn_dim, n_token)
88
+ self.attention_layer = Attention(
89
+ self.decoder_rnn_dim,
90
+ hidden_dim,
91
+ hidden_dim,
92
+ n_location_filters,
93
+ location_kernel_size
94
+ )
95
+ self.decoder_rnn = nn.LSTMCell(self.decoder_rnn_dim + embedding_dim, self.decoder_rnn_dim)
96
+ self.project_to_hidden = nn.Sequential(
97
+ LinearNorm(self.decoder_rnn_dim * 2, hidden_dim),
98
+ nn.Tanh())
99
+ self.sos = 1
100
+ self.eos = 2
101
+
102
+ def initialize_decoder_states(self, memory, mask):
103
+ """
104
+ moemory.shape = (B, L, H) = (Batchsize, Maxtimestep, Hiddendim)
105
+ """
106
+ B, L, H = memory.shape
107
+ self.decoder_hidden = torch.zeros((B, self.decoder_rnn_dim)).type_as(memory)
108
+ self.decoder_cell = torch.zeros((B, self.decoder_rnn_dim)).type_as(memory)
109
+ self.attention_weights = torch.zeros((B, L)).type_as(memory)
110
+ self.attention_weights_cum = torch.zeros((B, L)).type_as(memory)
111
+ self.attention_context = torch.zeros((B, H)).type_as(memory)
112
+ self.memory = memory
113
+ self.processed_memory = self.attention_layer.memory_layer(memory)
114
+ self.mask = mask
115
+ self.unk_index = 3
116
+ self.random_mask = 0.1
117
+
118
+ def forward(self, memory, memory_mask, text_input):
119
+ """
120
+ moemory.shape = (B, L, H) = (Batchsize, Maxtimestep, Hiddendim)
121
+ moemory_mask.shape = (B, L, )
122
+ texts_input.shape = (B, T)
123
+ """
124
+ self.initialize_decoder_states(memory, memory_mask)
125
+ # text random mask
126
+ random_mask = (torch.rand(text_input.shape) < self.random_mask).to(text_input.device)
127
+ _text_input = text_input.clone()
128
+ _text_input.masked_fill_(random_mask, self.unk_index)
129
+ decoder_inputs = self.embedding(_text_input).transpose(0, 1) # -> [T, B, channel]
130
+ start_embedding = self.embedding(
131
+ torch.LongTensor([self.sos]*decoder_inputs.size(1)).to(decoder_inputs.device))
132
+ decoder_inputs = torch.cat((start_embedding.unsqueeze(0), decoder_inputs), dim=0)
133
+
134
+ hidden_outputs, logit_outputs, alignments = [], [], []
135
+ while len(hidden_outputs) < decoder_inputs.size(0):
136
+
137
+ decoder_input = decoder_inputs[len(hidden_outputs)]
138
+ hidden, logit, attention_weights = self.decode(decoder_input)
139
+ hidden_outputs += [hidden]
140
+ logit_outputs += [logit]
141
+ alignments += [attention_weights]
142
+
143
+ hidden_outputs, logit_outputs, alignments = \
144
+ self.parse_decoder_outputs(
145
+ hidden_outputs, logit_outputs, alignments)
146
+
147
+ return hidden_outputs, logit_outputs, alignments
148
+
149
+
150
+ def decode(self, decoder_input):
151
+
152
+ cell_input = torch.cat((decoder_input, self.attention_context), -1)
153
+ self.decoder_hidden, self.decoder_cell = self.decoder_rnn(
154
+ cell_input,
155
+ (self.decoder_hidden, self.decoder_cell))
156
+
157
+ attention_weights_cat = torch.cat(
158
+ (self.attention_weights.unsqueeze(1),
159
+ self.attention_weights_cum.unsqueeze(1)),dim=1)
160
+
161
+ self.attention_context, self.attention_weights = self.attention_layer(
162
+ self.decoder_hidden,
163
+ self.memory,
164
+ self.processed_memory,
165
+ attention_weights_cat,
166
+ self.mask)
167
+
168
+ self.attention_weights_cum += self.attention_weights
169
+
170
+ hidden_and_context = torch.cat((self.decoder_hidden, self.attention_context), -1)
171
+ hidden = self.project_to_hidden(hidden_and_context)
172
+
173
+ # dropout to increasing g
174
+ logit = self.project_to_n_symbols(F.dropout(hidden, 0.5, self.training))
175
+
176
+ return hidden, logit, self.attention_weights
177
+
178
+ def parse_decoder_outputs(self, hidden, logit, alignments):
179
+
180
+ # -> [B, T_out + 1, max_time]
181
+ alignments = torch.stack(alignments).transpose(0,1)
182
+ # [T_out + 1, B, n_symbols] -> [B, T_out + 1, n_symbols]
183
+ logit = torch.stack(logit).transpose(0, 1).contiguous()
184
+ hidden = torch.stack(hidden).transpose(0, 1).contiguous()
185
+
186
+ return hidden, logit, alignments
Utils/JDC/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+
Utils/JDC/bst.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:54dc94364b97e18ac1dfa6287714ed121248cfaac4cfd39d061c6e0a089ef169
3
+ size 21029926
Utils/JDC/model.py ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Implementation of model from:
3
+ Kum et al. - "Joint Detection and Classification of Singing Voice Melody Using
4
+ Convolutional Recurrent Neural Networks" (2019)
5
+ Link: https://www.semanticscholar.org/paper/Joint-Detection-and-Classification-of-Singing-Voice-Kum-Nam/60a2ad4c7db43bace75805054603747fcd062c0d
6
+ """
7
+ import torch
8
+ from torch import nn
9
+
10
+ class JDCNet(nn.Module):
11
+ """
12
+ Joint Detection and Classification Network model for singing voice melody.
13
+ """
14
+ def __init__(self, num_class=722, seq_len=31, leaky_relu_slope=0.01):
15
+ super().__init__()
16
+ self.num_class = num_class
17
+
18
+ # input = (b, 1, 31, 513), b = batch size
19
+ self.conv_block = nn.Sequential(
20
+ nn.Conv2d(in_channels=1, out_channels=64, kernel_size=3, padding=1, bias=False), # out: (b, 64, 31, 513)
21
+ nn.BatchNorm2d(num_features=64),
22
+ nn.LeakyReLU(leaky_relu_slope, inplace=True),
23
+ nn.Conv2d(64, 64, 3, padding=1, bias=False), # (b, 64, 31, 513)
24
+ )
25
+
26
+ # res blocks
27
+ self.res_block1 = ResBlock(in_channels=64, out_channels=128) # (b, 128, 31, 128)
28
+ self.res_block2 = ResBlock(in_channels=128, out_channels=192) # (b, 192, 31, 32)
29
+ self.res_block3 = ResBlock(in_channels=192, out_channels=256) # (b, 256, 31, 8)
30
+
31
+ # pool block
32
+ self.pool_block = nn.Sequential(
33
+ nn.BatchNorm2d(num_features=256),
34
+ nn.LeakyReLU(leaky_relu_slope, inplace=True),
35
+ nn.MaxPool2d(kernel_size=(1, 4)), # (b, 256, 31, 2)
36
+ nn.Dropout(p=0.2),
37
+ )
38
+
39
+ # maxpool layers (for auxiliary network inputs)
40
+ # in = (b, 128, 31, 513) from conv_block, out = (b, 128, 31, 2)
41
+ self.maxpool1 = nn.MaxPool2d(kernel_size=(1, 40))
42
+ # in = (b, 128, 31, 128) from res_block1, out = (b, 128, 31, 2)
43
+ self.maxpool2 = nn.MaxPool2d(kernel_size=(1, 20))
44
+ # in = (b, 128, 31, 32) from res_block2, out = (b, 128, 31, 2)
45
+ self.maxpool3 = nn.MaxPool2d(kernel_size=(1, 10))
46
+
47
+ # in = (b, 640, 31, 2), out = (b, 256, 31, 2)
48
+ self.detector_conv = nn.Sequential(
49
+ nn.Conv2d(640, 256, 1, bias=False),
50
+ nn.BatchNorm2d(256),
51
+ nn.LeakyReLU(leaky_relu_slope, inplace=True),
52
+ nn.Dropout(p=0.2),
53
+ )
54
+
55
+ # input: (b, 31, 512) - resized from (b, 256, 31, 2)
56
+ self.bilstm_classifier = nn.LSTM(
57
+ input_size=512, hidden_size=256,
58
+ batch_first=True, bidirectional=True) # (b, 31, 512)
59
+
60
+ # input: (b, 31, 512) - resized from (b, 256, 31, 2)
61
+ self.bilstm_detector = nn.LSTM(
62
+ input_size=512, hidden_size=256,
63
+ batch_first=True, bidirectional=True) # (b, 31, 512)
64
+
65
+ # input: (b * 31, 512)
66
+ self.classifier = nn.Linear(in_features=512, out_features=self.num_class) # (b * 31, num_class)
67
+
68
+ # input: (b * 31, 512)
69
+ self.detector = nn.Linear(in_features=512, out_features=2) # (b * 31, 2) - binary classifier
70
+
71
+ # initialize weights
72
+ self.apply(self.init_weights)
73
+
74
+ def get_feature_GAN(self, x):
75
+ seq_len = x.shape[-2]
76
+ x = x.float().transpose(-1, -2)
77
+
78
+ convblock_out = self.conv_block(x)
79
+
80
+ resblock1_out = self.res_block1(convblock_out)
81
+ resblock2_out = self.res_block2(resblock1_out)
82
+ resblock3_out = self.res_block3(resblock2_out)
83
+ poolblock_out = self.pool_block[0](resblock3_out)
84
+ poolblock_out = self.pool_block[1](poolblock_out)
85
+
86
+ return poolblock_out.transpose(-1, -2)
87
+
88
+ def get_feature(self, x):
89
+ seq_len = x.shape[-2]
90
+ x = x.float().transpose(-1, -2)
91
+
92
+ convblock_out = self.conv_block(x)
93
+
94
+ resblock1_out = self.res_block1(convblock_out)
95
+ resblock2_out = self.res_block2(resblock1_out)
96
+ resblock3_out = self.res_block3(resblock2_out)
97
+ poolblock_out = self.pool_block[0](resblock3_out)
98
+ poolblock_out = self.pool_block[1](poolblock_out)
99
+
100
+ return self.pool_block[2](poolblock_out)
101
+
102
+ def forward(self, x):
103
+ """
104
+ Returns:
105
+ classification_prediction, detection_prediction
106
+ sizes: (b, 31, 722), (b, 31, 2)
107
+ """
108
+ ###############################
109
+ # forward pass for classifier #
110
+ ###############################
111
+ seq_len = x.shape[-1]
112
+ x = x.float().transpose(-1, -2)
113
+
114
+ convblock_out = self.conv_block(x)
115
+
116
+ resblock1_out = self.res_block1(convblock_out)
117
+ resblock2_out = self.res_block2(resblock1_out)
118
+ resblock3_out = self.res_block3(resblock2_out)
119
+
120
+
121
+ poolblock_out = self.pool_block[0](resblock3_out)
122
+ poolblock_out = self.pool_block[1](poolblock_out)
123
+ GAN_feature = poolblock_out.transpose(-1, -2)
124
+ poolblock_out = self.pool_block[2](poolblock_out)
125
+
126
+ # (b, 256, 31, 2) => (b, 31, 256, 2) => (b, 31, 512)
127
+ classifier_out = poolblock_out.permute(0, 2, 1, 3).contiguous().view((-1, seq_len, 512))
128
+ classifier_out, _ = self.bilstm_classifier(classifier_out) # ignore the hidden states
129
+
130
+ classifier_out = classifier_out.contiguous().view((-1, 512)) # (b * 31, 512)
131
+ classifier_out = self.classifier(classifier_out)
132
+ classifier_out = classifier_out.view((-1, seq_len, self.num_class)) # (b, 31, num_class)
133
+
134
+ # sizes: (b, 31, 722), (b, 31, 2)
135
+ # classifier output consists of predicted pitch classes per frame
136
+ # detector output consists of: (isvoice, notvoice) estimates per frame
137
+ return torch.abs(classifier_out.squeeze()), GAN_feature, poolblock_out
138
+
139
+ @staticmethod
140
+ def init_weights(m):
141
+ if isinstance(m, nn.Linear):
142
+ nn.init.kaiming_uniform_(m.weight)
143
+ if m.bias is not None:
144
+ nn.init.constant_(m.bias, 0)
145
+ elif isinstance(m, nn.Conv2d):
146
+ nn.init.xavier_normal_(m.weight)
147
+ elif isinstance(m, nn.LSTM) or isinstance(m, nn.LSTMCell):
148
+ for p in m.parameters():
149
+ if p.data is None:
150
+ continue
151
+
152
+ if len(p.shape) >= 2:
153
+ nn.init.orthogonal_(p.data)
154
+ else:
155
+ nn.init.normal_(p.data)
156
+
157
+
158
+ class ResBlock(nn.Module):
159
+ def __init__(self, in_channels: int, out_channels: int, leaky_relu_slope=0.01):
160
+ super().__init__()
161
+ self.downsample = in_channels != out_channels
162
+
163
+ # BN / LReLU / MaxPool layer before the conv layer - see Figure 1b in the paper
164
+ self.pre_conv = nn.Sequential(
165
+ nn.BatchNorm2d(num_features=in_channels),
166
+ nn.LeakyReLU(leaky_relu_slope, inplace=True),
167
+ nn.MaxPool2d(kernel_size=(1, 2)), # apply downsampling on the y axis only
168
+ )
169
+
170
+ # conv layers
171
+ self.conv = nn.Sequential(
172
+ nn.Conv2d(in_channels=in_channels, out_channels=out_channels,
173
+ kernel_size=3, padding=1, bias=False),
174
+ nn.BatchNorm2d(out_channels),
175
+ nn.LeakyReLU(leaky_relu_slope, inplace=True),
176
+ nn.Conv2d(out_channels, out_channels, 3, padding=1, bias=False),
177
+ )
178
+
179
+ # 1 x 1 convolution layer to match the feature dimensions
180
+ self.conv1by1 = None
181
+ if self.downsample:
182
+ self.conv1by1 = nn.Conv2d(in_channels, out_channels, 1, bias=False)
183
+
184
+ def forward(self, x):
185
+ x = self.pre_conv(x)
186
+ if self.downsample:
187
+ x = self.conv(x) + self.conv1by1(x)
188
+ else:
189
+ x = self.conv(x) + x
190
+ return x
Utils/PLBERT/config.yml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ log_dir: "Checkpoint"
2
+ mixed_precision: "fp16"
3
+ data_folder: "wikipedia_20220301.en.processed"
4
+ batch_size: 192
5
+ save_interval: 5000
6
+ log_interval: 10
7
+ num_process: 1 # number of GPUs
8
+ num_steps: 1000000
9
+
10
+ dataset_params:
11
+ tokenizer: "transfo-xl-wt103"
12
+ token_separator: " " # token used for phoneme separator (space)
13
+ token_mask: "M" # token used for phoneme mask (M)
14
+ word_separator: 3039 # token used for word separator (<formula>)
15
+ token_maps: "token_maps.pkl" # token map path
16
+
17
+ max_mel_length: 512 # max phoneme length
18
+
19
+ word_mask_prob: 0.15 # probability to mask the entire word
20
+ phoneme_mask_prob: 0.1 # probability to mask each phoneme
21
+ replace_prob: 0.2 # probablity to replace phonemes
22
+
23
+ model_params:
24
+ vocab_size: 178
25
+ hidden_size: 768
26
+ num_attention_heads: 12
27
+ intermediate_size: 2048
28
+ max_position_embeddings: 512
29
+ num_hidden_layers: 12
30
+ dropout: 0.1
Utils/PLBERT/step_1000000.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0714ff85804db43e06b3b0ac5749bf90cf206257c6c5916e8a98c5933b4c21e0
3
+ size 25185187
Utils/PLBERT/util.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import yaml
3
+ import torch
4
+ from transformers import AlbertConfig, AlbertModel
5
+
6
+ class CustomAlbert(AlbertModel):
7
+ def forward(self, *args, **kwargs):
8
+ # Call the original forward method
9
+ outputs = super().forward(*args, **kwargs)
10
+
11
+ # Only return the last_hidden_state
12
+ return outputs.last_hidden_state
13
+
14
+
15
+ def load_plbert(log_dir):
16
+ config_path = os.path.join(log_dir, "config.yml")
17
+ plbert_config = yaml.safe_load(open(config_path))
18
+
19
+ albert_base_configuration = AlbertConfig(**plbert_config['model_params'])
20
+ bert = CustomAlbert(albert_base_configuration)
21
+
22
+ files = os.listdir(log_dir)
23
+ ckpts = []
24
+ for f in os.listdir(log_dir):
25
+ if f.startswith("step_"): ckpts.append(f)
26
+
27
+ iters = [int(f.split('_')[-1].split('.')[0]) for f in ckpts if os.path.isfile(os.path.join(log_dir, f))]
28
+ iters = sorted(iters)[-1]
29
+
30
+ checkpoint = torch.load(log_dir + "/step_" + str(iters) + ".pth", map_location='cpu')
31
+ state_dict = checkpoint['net']
32
+ from collections import OrderedDict
33
+ new_state_dict = OrderedDict()
34
+ for k, v in state_dict.items():
35
+ name = k[7:] # remove `module.`
36
+ if name.startswith('encoder.'):
37
+ name = name[8:] # remove `encoder.`
38
+ new_state_dict[name] = v
39
+ del new_state_dict["embeddings.position_ids"]
40
+ bert.load_state_dict(new_state_dict, strict=False)
41
+
42
+ return bert
Utils/config.yml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {ASR_config: Utils/ASR/config.yml, ASR_path: Utils/ASR/epoch_00080.pth, F0_path: Utils/JDC/bst.t7,
2
+ PLBERT_dir: Utils/PLBERT/, batch_size: 8, data_params: {OOD_data: Data/OOD_texts.txt,
3
+ min_length: 50, root_path: '', train_data: Data/train_list.txt, val_data: Data/val_list.txt},
4
+ device: cuda, epochs_1st: 40, epochs_2nd: 25, first_stage_path: first_stage.pth,
5
+ load_only_params: false, log_dir: Models/LibriTTS, log_interval: 10, loss_params: {
6
+ TMA_epoch: 4, diff_epoch: 0, joint_epoch: 0, lambda_F0: 1.0, lambda_ce: 20.0,
7
+ lambda_diff: 1.0, lambda_dur: 1.0, lambda_gen: 1.0, lambda_mel: 5.0, lambda_mono: 1.0,
8
+ lambda_norm: 1.0, lambda_s2s: 1.0, lambda_slm: 1.0, lambda_sty: 1.0}, max_len: 300,
9
+ model_params: {decoder: {resblock_dilation_sizes: [[1, 3, 5], [1, 3, 5], [1, 3,
10
+ 5]], resblock_kernel_sizes: [3, 7, 11], type: hifigan, upsample_initial_channel: 512,
11
+ upsample_kernel_sizes: [20, 10, 6, 4], upsample_rates: [10, 5, 3, 2]}, diffusion: {
12
+ dist: {estimate_sigma_data: true, mean: -3.0, sigma_data: 0.19926648961191362,
13
+ std: 1.0}, embedding_mask_proba: 0.1, transformer: {head_features: 64, multiplier: 2,
14
+ num_heads: 8, num_layers: 3}}, dim_in: 64, dropout: 0.2, hidden_dim: 512,
15
+ max_conv_dim: 512, max_dur: 50, multispeaker: true, n_layer: 3, n_mels: 80, n_token: 178,
16
+ slm: {hidden: 768, initial_channel: 64, model: microsoft/wavlm-base-plus, nlayers: 13,
17
+ sr: 16000}, style_dim: 128}, optimizer_params: {bert_lr: 1.0e-05, ft_lr: 1.0e-05,
18
+ lr: 0.0001}, preprocess_params: {spect_params: {hop_length: 300, n_fft: 2048,
19
+ win_length: 1200}, sr: 24000}, pretrained_model: Models/LibriTTS/epoch_2nd_00002.pth,
20
+ save_freq: 1, second_stage_load_pretrained: true, slmadv_params: {batch_percentage: 0.5,
21
+ iter: 20, max_len: 500, min_len: 400, scale: 0.01, sig: 1.5, thresh: 5}}
annotated_features.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea4d9a2bd9d3139441989c822d48fc96f887e0d3ea015d55dcb5df9b004836e4
3
+ size 2576
app.py ADDED
@@ -0,0 +1,506 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+
3
+ import gradio as gr
4
+ import numpy as np
5
+ import torch
6
+ import json
7
+ import io
8
+ import soundfile as sf
9
+ from PIL import Image
10
+ import matplotlib
11
+ import joblib
12
+ from sklearn.decomposition import PCA
13
+ from collections import OrderedDict
14
+
15
+ matplotlib.use("Agg") # Use non-interactive backend
16
+ import matplotlib.pyplot as plt
17
+
18
+ from text2speech import tts_randomized, parse_speed, tts_with_style_vector
19
+
20
+ # Constants and Paths
21
+ VOICES_JSON_PATH = "voices.json"
22
+ PCA_MODEL_PATH = "pca_model.pkl"
23
+ ANNOTATED_FEATURES_PATH = "annotated_features.npy"
24
+ VECTOR_DIMENSION = 256
25
+ ANNOTATED_FEATURES_NAMES = ["Gender", "Tone", "Quality", "Enunciation", "Pace", "Style"]
26
+ ANNOTATED_FEATURES_INFO = [
27
+ "Male | Female",
28
+ "High | Low",
29
+ "Noisy | Clean",
30
+ "Clear | Unclear",
31
+ "Rapid | Slow",
32
+ "Colloquial | Formal",
33
+ ]
34
+
35
+ # Load PCA model and annotated features
36
+ try:
37
+ pca = joblib.load(PCA_MODEL_PATH)
38
+ print("PCA model loaded successfully.")
39
+ except FileNotFoundError:
40
+ print(f"Error: PCA model file '{PCA_MODEL_PATH}' not found.")
41
+ pca = None
42
+
43
+ try:
44
+ annotated_features = np.load(ANNOTATED_FEATURES_PATH)
45
+ print("Annotated features loaded successfully.")
46
+ except FileNotFoundError:
47
+ print(f"Error: Annotated features file '{ANNOTATED_FEATURES_PATH}' not found.")
48
+ annotated_features = None
49
+
50
+ # Utility Functions
51
+
52
+
53
+ def load_voices_json():
54
+ """Load the voices.json file."""
55
+ try:
56
+ with open(VOICES_JSON_PATH, "r") as f:
57
+ return json.load(f, object_pairs_hook=OrderedDict)
58
+ except FileNotFoundError:
59
+ print(f"Warning: {VOICES_JSON_PATH} not found. Creating a new one.")
60
+ return OrderedDict()
61
+ except json.JSONDecodeError:
62
+ print(f"Warning: {VOICES_JSON_PATH} is not valid JSON.")
63
+ return OrderedDict()
64
+
65
+
66
+ def save_voices_json(data, path=VOICES_JSON_PATH):
67
+ """Save to voices.json."""
68
+ with open(path, "w") as f:
69
+ json.dump(data, f, indent=2)
70
+ print(f"Voices saved to '{path}'.")
71
+
72
+
73
+ def update_sliders(voice_name):
74
+ """
75
+ Update slider values based on the selected predefined voice using reverse PCA.
76
+
77
+ Args:
78
+ voice_name (str): The name of the selected voice.
79
+
80
+ Returns:
81
+ list: A list of PCA component values to set the sliders.
82
+ """
83
+ if not voice_name:
84
+ # Return default slider values (e.g., zeros) if no voice is selected
85
+ return [0.0] * len(ANNOTATED_FEATURES_NAMES)
86
+
87
+ voices_data = load_voices_json()
88
+ if voice_name not in voices_data:
89
+ print(f"Voice '{voice_name}' not found in {VOICES_JSON_PATH}.")
90
+ return [0.0] * len(ANNOTATED_FEATURES_NAMES)
91
+
92
+ style_vector = np.array(voices_data[voice_name], dtype=np.float32).reshape(1, -1)
93
+
94
+ if pca is None:
95
+ print("PCA model is not loaded.")
96
+ return [0.0] * len(ANNOTATED_FEATURES_NAMES)
97
+
98
+ try:
99
+ # Transform the style vector into PCA component values
100
+ pca_components = pca.transform(style_vector)[0]
101
+ return pca_components.tolist()
102
+ except Exception as e:
103
+ print(f"Error transforming style vector to PCA components: {e}")
104
+ return [0.0] * len(ANNOTATED_FEATURES_NAMES)
105
+
106
+
107
+ def generate_audio_with_voice(text, voice_key, speed_val):
108
+ """
109
+ Generate audio using the style vector of the selected predefined voice.
110
+
111
+ Args:
112
+ text (str): The text to synthesize.
113
+ voice_key (str): The name of the selected voice.
114
+ speed_val (float): The speed multiplier.
115
+
116
+ Returns:
117
+ tuple: (audio_tuple, style_vector)
118
+ """
119
+ try:
120
+ # Load voices data
121
+ voices_data = load_voices_json()
122
+
123
+ if voice_key not in voices_data:
124
+ print(f"Voice '{voice_key}' not found in {VOICES_JSON_PATH}.")
125
+ return None, None, "Selected voice not found."
126
+
127
+ # Retrieve the style vector for the selected voice
128
+ style_vector = np.array(voices_data[voice_key], dtype=np.float32).reshape(1, -1)
129
+ print(f"Selected Voice: {voice_key}")
130
+ print(f"Style Vector (First 6): {style_vector[0][:6]}")
131
+
132
+ # Convert to torch tensor
133
+ style_vec_torch = torch.from_numpy(style_vector).float()
134
+
135
+ # Generate audio using the TTS model
136
+ audio_np = tts_with_style_vector(
137
+ text,
138
+ style_vec=style_vec_torch,
139
+ speed=speed_val,
140
+ alpha=0.3,
141
+ beta=0.7,
142
+ diffusion_steps=7,
143
+ embedding_scale=1.0,
144
+ )
145
+
146
+ if audio_np is None:
147
+ print("Audio generation failed.")
148
+ return None, None, "Audio generation failed."
149
+
150
+ # Prepare audio for Gradio
151
+ sr = 24000 # Adjust based on your actual sampling rate
152
+ audio_tuple = (sr, audio_np)
153
+
154
+ # Return audio, image, and style vector
155
+ return audio_tuple, style_vector.tolist()
156
+
157
+ except Exception as e:
158
+ print(f"Error in generate_audio_with_voice: {e}")
159
+ return None, None, "An error occurred during audio generation."
160
+
161
+
162
+ def build_modified_vector(voice_key, top6_values):
163
+ """Build a modified style vector by updating top 6 PCA components."""
164
+ voices_data = load_voices_json()
165
+ if voice_key not in voices_data:
166
+ print(f"Voice '{voice_key}' not found in {VOICES_JSON_PATH}.")
167
+ return None
168
+
169
+ arr = np.array(voices_data[voice_key], dtype=np.float32).squeeze()
170
+ if arr.ndim != 1 or arr.shape[0] != VECTOR_DIMENSION:
171
+ print(f"Voice '{voice_key}' has invalid shape {arr.shape}. Expected (256,).")
172
+ return None
173
+
174
+ try:
175
+ # Reconstruct the style vector using inverse PCA
176
+ pca_components = np.array(top6_values).reshape(1, -1)
177
+ reconstructed_vec = pca.inverse_transform(pca_components)[0]
178
+ return reconstructed_vec
179
+ except Exception as e:
180
+ print(f"Error reconstructing style vector: {e}")
181
+ return None
182
+
183
+
184
+ def reconstruct_style_vector(pca_components):
185
+ """
186
+ Reconstruct the 256-dimensional style vector from PCA components.
187
+ """
188
+ if pca is None:
189
+ print("PCA model is not loaded.")
190
+ return None
191
+ try:
192
+ return pca.inverse_transform([pca_components])[0]
193
+ except Exception as e:
194
+ print(f"Error during inverse PCA transform: {e}")
195
+ return None
196
+
197
+
198
+ def generate_custom_audio(text, voice_key, randomize, speed_str, *slider_values):
199
+ """
200
+ Generate audio and produce a matplotlib plot of the style vector.
201
+ Returns:
202
+ - audio tuple (sr, np_array) for Gradio's Audio
203
+ - a PIL Image representing the style vector plot
204
+ - the final style vector as a list for State
205
+ """
206
+ try:
207
+ speed_val = parse_speed(speed_str)
208
+ print(f"Parsed speed: {speed_val}")
209
+
210
+ if randomize:
211
+ # Generate randomized style vector
212
+ audio_np, random_style_vec = tts_randomized(text, speed=speed_val)
213
+ if random_style_vec is None:
214
+ print("Failed to generate randomized style vector.")
215
+ return None, None, None
216
+ # Ensure the style vector is flat
217
+ final_vec = (
218
+ random_style_vec.numpy().flatten()
219
+ if isinstance(random_style_vec, torch.Tensor)
220
+ else np.array(random_style_vec).flatten()
221
+ )
222
+ print("Randomized Style Vector (First 6):", final_vec[:6])
223
+ else:
224
+ # Reconstruct the style vector from slider values using inverse PCA
225
+ reconstructed_vec = build_modified_vector(voice_key, slider_values)
226
+ if reconstructed_vec is None:
227
+ print(
228
+ "No reconstructed vector could be constructed, skipping audio generation."
229
+ )
230
+ return None, None, None
231
+
232
+ # Convert to torch tensor
233
+ style_vec_torch = torch.from_numpy(reconstructed_vec).float().unsqueeze(0)
234
+
235
+ # Generate audio with the reconstructed style vector
236
+ audio_np = tts_with_style_vector(
237
+ text,
238
+ style_vec=style_vec_torch,
239
+ speed=speed_val,
240
+ alpha=0.3,
241
+ beta=0.7,
242
+ diffusion_steps=7,
243
+ embedding_scale=1.0,
244
+ )
245
+ final_vec = reconstructed_vec
246
+ print("Reconstructed Style Vector (First 6):", final_vec[:6])
247
+
248
+ if audio_np is None:
249
+ print("Audio generation failed.")
250
+ return None, None, None
251
+
252
+ # Prepare audio for Gradio
253
+ sr = 24000 # Adjust based on your actual sampling rate
254
+ audio_tuple = (sr, audio_np)
255
+
256
+ # Return audio, image, and style vector
257
+ return audio_tuple, final_vec.tolist()
258
+
259
+ except Exception as e:
260
+ print(f"Error generating audio and style plot: {e}")
261
+ return None, None, None
262
+
263
+
264
+ def save_style_to_json(style_data, style_name):
265
+ """Saves the provided style_data (list of floats) into voices.json under style_name."""
266
+ if not style_name.strip():
267
+ return "Please enter a new style name before saving."
268
+
269
+ voices_data = load_voices_json()
270
+ if style_name in voices_data:
271
+ return (
272
+ f"Style name '{style_name}' already exists. Please choose a different name."
273
+ )
274
+
275
+ # Ensure the style_data has the correct length
276
+ if len(style_data) != VECTOR_DIMENSION:
277
+ return f"Style vector length mismatch. Expected {VECTOR_DIMENSION}, got {len(style_data)}."
278
+
279
+ # Save the style vector
280
+ voices_data[style_name] = style_data
281
+ save_voices_json(voices_data)
282
+ return f"Saved style as '{style_name}' in {VOICES_JSON_PATH}."
283
+
284
+
285
+ # Gradio Interface Functions
286
+
287
+
288
+ def rearrange_voices(new_order):
289
+ """Rearrange the voices based on the new_order list."""
290
+ voices_data = load_voices_json()
291
+ new_order_list = [name.strip() for name in new_order.split(",")]
292
+ if not all(name in voices_data for name in new_order_list):
293
+ return "Error: New order contains invalid voice names.", list(
294
+ voices_data.keys()
295
+ )
296
+ ordered_data = OrderedDict()
297
+ for name in new_order_list:
298
+ ordered_data[name] = voices_data[name]
299
+ save_voices_json(ordered_data)
300
+ print(f"Voices rearranged: {list(ordered_data.keys())}")
301
+ return "Voices rearranged successfully.", list(ordered_data.keys())
302
+
303
+
304
+ def delete_voice(selected):
305
+ """Delete voices from the voices.json."""
306
+ if not selected:
307
+ return "No voices selected for deletion.", list(load_voices_json().keys())
308
+ voices_data = load_voices_json()
309
+ for voice_name in selected:
310
+ if voice_name in voices_data:
311
+ del voices_data[voice_name]
312
+ print(f"Voice '{voice_name}' deleted.")
313
+ save_voices_json(voices_data)
314
+ return "Deleted selected voices successfully.", list(voices_data.keys())
315
+
316
+
317
+ def upload_new_voices(uploaded_file):
318
+ """Upload new voices from a JSON file."""
319
+ if uploaded_file is None:
320
+ return "No file uploaded.", list(load_voices_json().keys())
321
+ try:
322
+ uploaded_data = json.load(uploaded_file)
323
+ if not isinstance(uploaded_data, dict):
324
+ return "Invalid JSON format. Expected a dictionary of voices.", list(
325
+ load_voices_json().keys()
326
+ )
327
+ voices_data = load_voices_json()
328
+ voices_data.update(uploaded_data)
329
+ save_voices_json(voices_data)
330
+ print(f"Voices uploaded: {list(uploaded_data.keys())}")
331
+ return "Voices uploaded successfully.", list(voices_data.keys())
332
+ except json.JSONDecodeError:
333
+ return "Uploaded file is not valid JSON.", list(load_voices_json().keys())
334
+
335
+
336
+ # Create Gradio Interface with Tabs
337
+
338
+
339
+ def create_combined_interface():
340
+ voices_data = load_voices_json()
341
+ voice_choices = list(voices_data.keys())
342
+ default_voice = voice_choices[0] if voice_choices else None
343
+
344
+ css = """
345
+ h4 {
346
+ text-align: center;
347
+ display:block;
348
+ }
349
+ """
350
+
351
+ def refresh_voices():
352
+ """Refresh the voices by reloading the JSON."""
353
+ new_choices = list(load_voices_json().keys())
354
+ print(f"Voices refreshed: {new_choices}")
355
+ return gr.Dropdown(choices=new_choices)
356
+
357
+ with gr.Blocks(theme=gr.themes.Ocean(), css=css) as demo:
358
+ gr.Markdown("# StyleTTS2 Studio - Build custom voices")
359
+
360
+ # ----------- Text-to-Speech Tab -----------
361
+ with gr.Tab("Text-to-Speech"):
362
+ gr.Markdown("### Generate Speech with Predefined Voices")
363
+
364
+ with gr.Column():
365
+ text_input = gr.Textbox(
366
+ label="Text to Synthesize",
367
+ value="Hello world from the Gradio + TTS pipeline!",
368
+ lines=3,
369
+ )
370
+ voice_dropdown = gr.Dropdown(
371
+ choices=voice_choices,
372
+ label="Select Base Voice",
373
+ value=default_voice,
374
+ interactive=True,
375
+ )
376
+ speed_slider = gr.Slider(
377
+ minimum=50,
378
+ maximum=200,
379
+ step=1,
380
+ label="Speed (%)",
381
+ value=100,
382
+ )
383
+ with gr.Row():
384
+ generate_btn = gr.Button("Generate Audio")
385
+
386
+ audio_output = gr.Audio(label="Synthesized Audio")
387
+
388
+ # Generate button functionality
389
+ def on_generate_tts(text, voice, speed):
390
+ if not voice:
391
+ return None, "No voice selected."
392
+ speed_val = speed / 100 # Convert percentage to multiplier
393
+ audio, style_vector = generate_audio_with_voice(text, voice, speed_val)
394
+ if audio is None:
395
+ return None, style_vector # style_vector contains the error message
396
+ return audio, "Audio generated successfully."
397
+
398
+ generate_btn.click(
399
+ fn=on_generate_tts,
400
+ inputs=[text_input, voice_dropdown, speed_slider],
401
+ outputs=[audio_output, gr.Textbox(label="Status", visible=False)],
402
+ )
403
+
404
+ # ----------- Voice Studio Tab -----------
405
+ with gr.Tab("Voice Studio"):
406
+ gr.Markdown("### Customize and Create New Voices")
407
+
408
+ with gr.Column():
409
+ text_input_studio = gr.Textbox(
410
+ label="Text to Synthesize",
411
+ value="Customize your voice here!",
412
+ lines=3,
413
+ )
414
+ voice_dropdown_studio = gr.Dropdown(
415
+ choices=voice_choices,
416
+ label="Select Base Voice",
417
+ value=default_voice,
418
+ )
419
+ speed_slider_studio = gr.Slider(
420
+ minimum=50,
421
+ maximum=200,
422
+ step=1,
423
+ label="Speed (%)",
424
+ value=100,
425
+ )
426
+ # Sliders for PCA components (6 sliders)
427
+ pca_sliders = [
428
+ gr.Slider(
429
+ minimum=-2.0,
430
+ maximum=2.0,
431
+ value=0.0,
432
+ step=0.1,
433
+ label=feature,
434
+ )
435
+ for feature in ANNOTATED_FEATURES_NAMES
436
+ ]
437
+
438
+ generate_btn_studio = gr.Button("Generate Customized Audio")
439
+ audio_output_studio = gr.Audio(label="Customized Synthesized Audio")
440
+ new_style_name = gr.Textbox(label="New Style Name", value="")
441
+ save_btn_studio = gr.Button("Save Customized Voice")
442
+ status_text = gr.Textbox(label="Status", visible=True)
443
+
444
+ # State to hold the last style vector
445
+ style_vector_state_studio = gr.State()
446
+
447
+ # Generate button functionality
448
+ def on_generate_studio(text, voice, speed, *pca_values):
449
+ if not voice:
450
+ return None, "No voice selected.", None
451
+ speed_val = speed / 100 # Convert percentage to multiplier
452
+ result = generate_custom_audio(
453
+ text, voice, False, speed_val, *pca_values
454
+ )
455
+ if result is None:
456
+ return None, "Failed to generate audio.", None
457
+ audio_tuple, style_vector = result
458
+ style_vector_state_studio.value = style_vector
459
+ return audio_tuple, "Audio generated successfully.", style_vector
460
+
461
+ generate_btn_studio.click(
462
+ fn=on_generate_studio,
463
+ inputs=[text_input_studio, voice_dropdown_studio, speed_slider_studio]
464
+ + pca_sliders,
465
+ outputs=[audio_output_studio, status_text, style_vector_state_studio],
466
+ )
467
+
468
+ # Save button functionality
469
+ def on_save_style_studio(style_vector, style_name):
470
+ if not style_name:
471
+ return "Please enter a name for the new voice!"
472
+ result = save_style_to_json(style_vector, style_name)
473
+ new_choices = list(load_voices_json().keys())
474
+ # Return multiple values to update both dropdowns and show status
475
+ return (
476
+ gr.Dropdown(choices=new_choices), # Update first dropdown
477
+ gr.Dropdown(choices=new_choices), # Update studio dropdown
478
+ result, # Status message
479
+ )
480
+
481
+ save_btn_studio.click(
482
+ fn=on_save_style_studio,
483
+ inputs=[style_vector_state_studio, new_style_name],
484
+ outputs=[voice_dropdown, voice_dropdown_studio, status_text],
485
+ )
486
+
487
+ # Add callback to update sliders when a voice is selected
488
+ voice_dropdown_studio.change(
489
+ fn=update_sliders,
490
+ inputs=voice_dropdown_studio,
491
+ outputs=pca_sliders,
492
+ )
493
+
494
+ gr.Markdown(
495
+ "#### Based on [StyleTTS2](https://github.com/yl4579/StyleTTS2) and [artificial StyleTTS2](https://huggingface.co/dkounadis/artificial-styletts2/tree/main)"
496
+ )
497
+
498
+ return demo
499
+
500
+
501
+ if __name__ == "__main__":
502
+ try:
503
+ interface = create_combined_interface()
504
+ interface.launch(share=False)
505
+ except Exception as e:
506
+ print(f"An error occurred while launching the interface: {e}")
espeak_util.py ADDED
@@ -0,0 +1,206 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import platform
2
+ import subprocess
3
+ import shutil
4
+ from pathlib import Path
5
+ import os
6
+ from typing import Optional, Tuple
7
+ from phonemizer.backend.espeak.wrapper import EspeakWrapper
8
+
9
+
10
+ class EspeakConfig:
11
+ """Utility class for configuring espeak-ng library and binary."""
12
+
13
+ @staticmethod
14
+ def find_espeak_binary() -> tuple[bool, Optional[str]]:
15
+ """
16
+ Find espeak-ng binary using multiple methods.
17
+
18
+ Returns:
19
+ tuple: (bool indicating if espeak is available, path to espeak binary if found)
20
+ """
21
+ # Common binary names
22
+ binary_names = ["espeak-ng", "espeak"]
23
+ if platform.system() == "Windows":
24
+ binary_names = ["espeak-ng.exe", "espeak.exe"]
25
+
26
+ # Common installation directories for Linux
27
+ linux_paths = [
28
+ "/usr/bin",
29
+ "/usr/local/bin",
30
+ "/usr/lib/espeak-ng",
31
+ "/usr/local/lib/espeak-ng",
32
+ "/opt/espeak-ng/bin",
33
+ ]
34
+
35
+ # First check if it's in PATH
36
+ for name in binary_names:
37
+ espeak_path = shutil.which(name)
38
+ if espeak_path:
39
+ return True, espeak_path
40
+
41
+ # For Linux, check common installation directories
42
+ if platform.system() == "Linux":
43
+ for directory in linux_paths:
44
+ for name in binary_names:
45
+ path = Path(directory) / name
46
+ if path.exists():
47
+ return True, str(path)
48
+
49
+ # Try running the command directly as a last resort
50
+ try:
51
+ subprocess.run(
52
+ ["espeak-ng", "--version"],
53
+ stdout=subprocess.PIPE,
54
+ stderr=subprocess.PIPE,
55
+ check=True,
56
+ )
57
+ return True, "espeak-ng"
58
+ except (subprocess.SubprocessError, FileNotFoundError):
59
+ pass
60
+
61
+ return False, None
62
+
63
+ @staticmethod
64
+ def find_library_path() -> Optional[str]:
65
+ """
66
+ Find the espeak-ng library using multiple search methods.
67
+
68
+ Returns:
69
+ Optional[str]: Path to the library if found, None otherwise
70
+ """
71
+ system = platform.system()
72
+
73
+ if system == "Linux":
74
+ lib_names = ["libespeak-ng.so", "libespeak-ng.so.1"]
75
+ common_paths = [
76
+ # Debian/Ubuntu paths
77
+ "/usr/lib/x86_64-linux-gnu",
78
+ "/usr/lib/aarch64-linux-gnu", # For ARM64
79
+ "/usr/lib/arm-linux-gnueabihf", # For ARM32
80
+ "/usr/lib",
81
+ "/usr/local/lib",
82
+ # Fedora/RHEL paths
83
+ "/usr/lib64",
84
+ "/usr/lib32",
85
+ # Common additional paths
86
+ "/usr/lib/espeak-ng",
87
+ "/usr/local/lib/espeak-ng",
88
+ "/opt/espeak-ng/lib",
89
+ ]
90
+
91
+ # Check common locations first
92
+ for path in common_paths:
93
+ for lib_name in lib_names:
94
+ lib_path = Path(path) / lib_name
95
+ if lib_path.exists():
96
+ return str(lib_path)
97
+
98
+ # Search system library paths
99
+ try:
100
+ # Use ldconfig to find the library
101
+ result = subprocess.run(
102
+ ["ldconfig", "-p"], capture_output=True, text=True, check=True
103
+ )
104
+ for line in result.stdout.splitlines():
105
+ if "libespeak-ng.so" in line:
106
+ # Extract path from ldconfig output
107
+ return line.split("=>")[-1].strip()
108
+ except (subprocess.SubprocessError, FileNotFoundError):
109
+ pass
110
+
111
+ elif system == "Darwin": # macOS
112
+ common_paths = [
113
+ Path("/opt/homebrew/lib/libespeak-ng.dylib"),
114
+ Path("/usr/local/lib/libespeak-ng.dylib"),
115
+ *list(
116
+ Path("/opt/homebrew/Cellar/espeak-ng").glob(
117
+ "*/lib/libespeak-ng.dylib"
118
+ )
119
+ ),
120
+ *list(
121
+ Path("/usr/local/Cellar/espeak-ng").glob("*/lib/libespeak-ng.dylib")
122
+ ),
123
+ ]
124
+
125
+ for path in common_paths:
126
+ if path.exists():
127
+ return str(path)
128
+
129
+ elif system == "Windows":
130
+ common_paths = [
131
+ Path(os.environ.get("PROGRAMFILES", "C:\\Program Files"))
132
+ / "eSpeak NG"
133
+ / "libespeak-ng.dll",
134
+ Path(os.environ.get("PROGRAMFILES(X86)", "C:\\Program Files (x86)"))
135
+ / "eSpeak NG"
136
+ / "libespeak-ng.dll",
137
+ *[
138
+ Path(p) / "libespeak-ng.dll"
139
+ for p in os.environ.get("PATH", "").split(os.pathsep)
140
+ ],
141
+ ]
142
+
143
+ for path in common_paths:
144
+ if path.exists():
145
+ return str(path)
146
+
147
+ return None
148
+
149
+ @classmethod
150
+ def configure_espeak(cls) -> Tuple[bool, str]:
151
+ """
152
+ Configure espeak-ng for use with the phonemizer.
153
+
154
+ Returns:
155
+ Tuple[bool, str]: (Success status, Status message)
156
+ """
157
+ # First check if espeak binary is available
158
+ espeak_available, espeak_path = cls.find_espeak_binary()
159
+ if not espeak_available:
160
+ raise FileNotFoundError(
161
+ "Could not find espeak-ng binary. Please install espeak-ng:\n"
162
+ "Ubuntu/Debian: sudo apt-get install espeak-ng espeak-ng-data\n"
163
+ "Fedora: sudo dnf install espeak-ng\n"
164
+ "Arch: sudo pacman -S espeak-ng\n"
165
+ "MacOS: brew install espeak-ng\n"
166
+ "Windows: Download from https://github.com/espeak-ng/espeak-ng/releases"
167
+ )
168
+
169
+ # Find the library
170
+ library_path = cls.find_library_path()
171
+ if not library_path:
172
+ # On Linux, we might not need to explicitly set the library path
173
+ if platform.system() == "Linux":
174
+ return True, f"Using system espeak-ng installation at: {espeak_path}"
175
+ else:
176
+ raise FileNotFoundError(
177
+ "Could not find espeak-ng library. Please ensure espeak-ng is properly installed."
178
+ )
179
+
180
+ # Try to set the library path
181
+ try:
182
+ EspeakWrapper.set_library(library_path)
183
+ return True, f"Successfully configured espeak-ng library at: {library_path}"
184
+ except Exception as e:
185
+ if platform.system() == "Linux":
186
+ # On Linux, try to continue without explicit library path
187
+ return True, f"Using system espeak-ng installation at: {espeak_path}"
188
+ else:
189
+ raise RuntimeError(f"Failed to configure espeak-ng library: {str(e)}")
190
+
191
+
192
+ def setup_espeak():
193
+ """
194
+ Set up espeak-ng for use with the phonemizer.
195
+ Raises appropriate exceptions if setup fails.
196
+ """
197
+ try:
198
+ success, message = EspeakConfig.configure_espeak()
199
+ print(message)
200
+ except Exception as e:
201
+ print(f"Error configuring espeak-ng: {str(e)}")
202
+ raise
203
+
204
+
205
+ # Replace the original set_espeak_library function with this
206
+ set_espeak_library = setup_espeak
inference.py ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import yaml
2
+ import random
3
+ import librosa
4
+ import numpy as np
5
+ import phonemizer
6
+ import torch
7
+ import torchaudio
8
+
9
+ from collections import OrderedDict
10
+ from munch import Munch
11
+ from nltk.tokenize import word_tokenize
12
+ from cached_path import cached_path
13
+
14
+
15
+ # Local or project imports
16
+ from models import *
17
+ from espeak_util import set_espeak_library
18
+ from Utils.PLBERT.util import load_plbert
19
+ from Modules.diffusion.sampler import DiffusionSampler, ADPM2Sampler, KarrasSchedule
20
+
21
+ # -----------------------------------------------------------------------------
22
+ # SEEDS AND DETERMINISM
23
+ # -----------------------------------------------------------------------------
24
+ random.seed(0)
25
+ np.random.seed(0)
26
+ torch.manual_seed(0)
27
+ torch.backends.cudnn.benchmark = False
28
+ torch.backends.cudnn.deterministic = True
29
+
30
+ # -----------------------------------------------------------------------------
31
+ # CONSTANTS / CHARACTERS
32
+ # -----------------------------------------------------------------------------
33
+ _pad = "$"
34
+ _punctuation = ';:,.!?¡¿—…"«»“” '
35
+ _letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
36
+ _letters_ipa = "ɑɐɒæɓʙβɔɕçɗɖðʤəɘɚɛɜɝɞɟʄɡɠɢʛɦɧħɥʜɨɪʝɭɬɫɮʟɱɯɰŋɳɲɴøɵɸθœɶʘɹɺɾɻʀʁɽʂʃʈʧʉʊʋⱱʌɣɤʍχʎʏʑʐʒʔʡʕʢǀǁǂǃˈˌːˑʼʴʰʱʲʷˠˤ˞↓↑→↗↘'̩'ᵻ"
37
+
38
+ symbols = [_pad] + list(_punctuation) + list(_letters) + list(_letters_ipa)
39
+
40
+ dicts = {symbols[i]: i for i in range(len(symbols))}
41
+
42
+
43
+ # -----------------------------------------------------------------------------
44
+ # TEXT CLEANER
45
+ # -----------------------------------------------------------------------------
46
+ class TextCleaner:
47
+ """
48
+ Maps individual characters to their corresponding indices.
49
+ If an unknown character is found, it prints a warning.
50
+ """
51
+
52
+ def __init__(self, dummy=None):
53
+ self.word_index_dictionary = dicts
54
+ print(len(dicts))
55
+
56
+ def __call__(self, text):
57
+ indexes = []
58
+ for char in text:
59
+ try:
60
+ indexes.append(self.word_index_dictionary[char])
61
+ except KeyError:
62
+ print("CLEAN", text)
63
+ return indexes
64
+
65
+
66
+ textclenaer = TextCleaner()
67
+
68
+ # -----------------------------------------------------------------------------
69
+ # AUDIO PROCESSING
70
+ # -----------------------------------------------------------------------------
71
+ to_mel = torchaudio.transforms.MelSpectrogram(
72
+ n_mels=80, n_fft=2048, win_length=1200, hop_length=300
73
+ )
74
+
75
+ mean, std = -4, 4
76
+
77
+
78
+ def preprocess(wave: np.ndarray) -> torch.Tensor:
79
+ """
80
+ Convert a NumPy audio array into a normalized mel spectrogram tensor.
81
+ """
82
+ wave_tensor = torch.from_numpy(wave).float()
83
+ mel_tensor = to_mel(wave_tensor)
84
+ mel_tensor = (torch.log(1e-5 + mel_tensor.unsqueeze(0)) - mean) / std
85
+ return mel_tensor
86
+
87
+
88
+ def length_to_mask(lengths: torch.Tensor) -> torch.Tensor:
89
+ """
90
+ Return a boolean mask based on the lengths of each item in the batch.
91
+ """
92
+ max_len = lengths.max()
93
+ mask = (
94
+ torch.arange(max_len).unsqueeze(0).expand(lengths.shape[0], -1).type_as(lengths)
95
+ )
96
+ mask = torch.gt(mask + 1, lengths.unsqueeze(1))
97
+ return mask
98
+
99
+
100
+ # -----------------------------------------------------------------------------
101
+ # MISC UTILS
102
+ # -----------------------------------------------------------------------------
103
+ def recursive_munch(d):
104
+ """
105
+ Recursively convert dictionaries to Munch objects.
106
+ """
107
+ if isinstance(d, dict):
108
+ return Munch((k, recursive_munch(v)) for k, v in d.items())
109
+ elif isinstance(d, list):
110
+ return [recursive_munch(v) for v in d]
111
+ else:
112
+ return d
113
+
114
+
115
+ def compute_style(path: str) -> torch.Tensor:
116
+ """
117
+ Load an audio file, trim it, resample if needed, then
118
+ compute and return a style vector by passing through the style encoder
119
+ and predictor encoder.
120
+ """
121
+ wave, sr = librosa.load(path, sr=24000)
122
+ audio, _ = librosa.effects.trim(wave, top_db=30)
123
+ if sr != 24000:
124
+ audio = librosa.resample(audio, sr, 24000)
125
+
126
+ mel_tensor = preprocess(audio).to(device)
127
+ with torch.no_grad():
128
+ ref_s = model.style_encoder(mel_tensor.unsqueeze(1))
129
+ ref_p = model.predictor_encoder(mel_tensor.unsqueeze(1))
130
+
131
+ return torch.cat([ref_s, ref_p], dim=1)
132
+
133
+
134
+ # -----------------------------------------------------------------------------
135
+ # DEVICE SELECTION
136
+ # -----------------------------------------------------------------------------
137
+ device = "cpu"
138
+ if torch.cuda.is_available():
139
+ device = "cuda"
140
+ elif torch.backends.mps.is_available():
141
+ # Optionally enable MPS if appropriate (commented out by default).
142
+ # device = "mps"
143
+ pass
144
+
145
+ # -----------------------------------------------------------------------------
146
+ # PHONEMIZER INITIALIZATION
147
+ # -----------------------------------------------------------------------------
148
+ set_espeak_library()
149
+ global_phonemizer = phonemizer.backend.EspeakBackend(
150
+ language="en-us", preserve_punctuation=True, with_stress=True
151
+ )
152
+
153
+ # -----------------------------------------------------------------------------
154
+ # LOAD CONFIG
155
+ # -----------------------------------------------------------------------------
156
+ config = yaml.safe_load(open("Utils/config.yml"))
157
+
158
+ # -----------------------------------------------------------------------------
159
+ # LOAD MODELS
160
+ # -----------------------------------------------------------------------------
161
+ ASR_config = config.get("ASR_config", False)
162
+ ASR_path = config.get("ASR_path", False)
163
+ text_aligner = load_ASR_models(ASR_path, ASR_config)
164
+
165
+ F0_path = config.get("F0_path", False)
166
+ pitch_extractor = load_F0_models(F0_path)
167
+
168
+ from Utils.PLBERT.util import load_plbert
169
+
170
+ BERT_path = config.get("PLBERT_dir", False)
171
+ plbert = load_plbert(BERT_path)
172
+
173
+ model_params = recursive_munch(config["model_params"])
174
+ model = build_model(model_params, text_aligner, pitch_extractor, plbert)
175
+ _ = [model[key].eval() for key in model]
176
+ _ = [model[key].to(device) for key in model]
177
+
178
+ params_whole = torch.load(
179
+ str(
180
+ cached_path(
181
+ "hf://yl4579/StyleTTS2-LibriTTS/Models/LibriTTS/epochs_2nd_00020.pth"
182
+ )
183
+ ),
184
+ map_location="cpu",
185
+ )
186
+ params = params_whole["net"]
187
+
188
+ # Load model states
189
+ for key in model:
190
+ if key in params:
191
+ print(f"{key} loaded")
192
+ try:
193
+ model[key].load_state_dict(params[key])
194
+ except RuntimeError:
195
+ state_dict = params[key]
196
+ new_state_dict = OrderedDict()
197
+ for k, v in state_dict.items():
198
+ name = k[7:] # remove `module.`
199
+ new_state_dict[name] = v
200
+ model[key].load_state_dict(new_state_dict, strict=False)
201
+
202
+ _ = [model[key].eval() for key in model]
203
+
204
+ sampler = DiffusionSampler(
205
+ model.diffusion.diffusion,
206
+ sampler=ADPM2Sampler(),
207
+ sigma_schedule=KarrasSchedule(sigma_min=0.0001, sigma_max=3.0, rho=9.0),
208
+ clamp=False,
209
+ )
210
+
211
+
212
+ # -----------------------------------------------------------------------------
213
+ # INFERENCE
214
+ # -----------------------------------------------------------------------------
215
+ def inference(
216
+ text: str,
217
+ ref_s: torch.Tensor,
218
+ alpha: float = 0.3,
219
+ beta: float = 0.7,
220
+ diffusion_steps: int = 5,
221
+ embedding_scale: float = 1,
222
+ speed: float = 1.2,
223
+ ):
224
+ """
225
+ Perform TTS inference using StyleTTS2 architecture.
226
+
227
+ Args:
228
+ text (str): The input text to be synthesized.
229
+ ref_s (torch.Tensor): The reference style/predictor embedding.
230
+ alpha (float): Interpolation factor for the style encoder.
231
+ beta (float): Interpolation factor for the predictor encoder.
232
+ diffusion_steps (int): Number of diffusion steps.
233
+ embedding_scale (float): Scaling factor for the BERT embedding.
234
+ speed (float): Speed factor e.g. 1.2 will speed up the audio by 20%
235
+
236
+ Returns:
237
+ np.ndarray: Audio waveform (synthesized speech).
238
+ """
239
+ text = text.strip()
240
+ # Phonemize
241
+ ps = global_phonemizer.phonemize([text])
242
+ ps = word_tokenize(ps[0])
243
+ ps = " ".join(ps)
244
+ tokens = textclenaer(ps)
245
+ tokens.insert(0, 0) # Insert padding index at the start
246
+ tokens = torch.LongTensor(tokens).to(device).unsqueeze(0)
247
+
248
+ with torch.no_grad():
249
+ input_lengths = torch.LongTensor([tokens.shape[-1]]).to(device)
250
+ text_mask = length_to_mask(input_lengths).to(device)
251
+
252
+ # Text encoder
253
+ t_en = model.text_encoder(tokens, input_lengths, text_mask)
254
+
255
+ # BERT duration encoding
256
+ bert_dur = model.bert(tokens, attention_mask=(~text_mask).int())
257
+ d_en = model.bert_encoder(bert_dur).transpose(-1, -2)
258
+
259
+ # Sampler for style
260
+ noise = torch.randn((1, 256)).unsqueeze(1).to(device)
261
+ s_pred = sampler(
262
+ noise=noise,
263
+ embedding=bert_dur,
264
+ embedding_scale=embedding_scale,
265
+ features=ref_s,
266
+ num_steps=diffusion_steps,
267
+ ).squeeze(1)
268
+
269
+ # Split the style vector
270
+ s_style = s_pred[:, 128:]
271
+ s_ref = s_pred[:, :128]
272
+
273
+ # Interpolate with ref_s
274
+ s_ref = alpha * s_ref + (1 - alpha) * ref_s[:, :128]
275
+ s_style = beta * s_style + (1 - beta) * ref_s[:, 128:]
276
+
277
+ # Predictor
278
+ d = model.predictor.text_encoder(d_en, s_style, input_lengths, text_mask)
279
+ x, _ = model.predictor.lstm(d)
280
+ duration = model.predictor.duration_proj(x)
281
+ duration = torch.sigmoid(duration).sum(axis=-1)
282
+ duration = duration / speed # change speed
283
+
284
+ # Create alignment
285
+ pred_dur = torch.round(duration.squeeze()).clamp(min=1)
286
+ pred_aln_trg = torch.zeros(input_lengths, int(pred_dur.sum().data))
287
+
288
+ c_frame = 0
289
+ for i in range(pred_aln_trg.size(0)):
290
+ pd = int(pred_dur[i].data)
291
+ pred_aln_trg[i, c_frame : c_frame + pd] = 1
292
+ c_frame += pd
293
+
294
+ # Encode prosody
295
+ en = d.transpose(-1, -2) @ pred_aln_trg.unsqueeze(0).to(device)
296
+ if model_params.decoder.type == "hifigan":
297
+ asr_new = torch.zeros_like(en)
298
+ asr_new[:, :, 0] = en[:, :, 0]
299
+ asr_new[:, :, 1:] = en[:, :, 0:-1]
300
+ en = asr_new
301
+
302
+ F0_pred, N_pred = model.predictor.F0Ntrain(en, s_style)
303
+
304
+ # ASR-based encoding
305
+ asr = t_en @ pred_aln_trg.unsqueeze(0).to(device)
306
+ if model_params.decoder.type == "hifigan":
307
+ asr_new = torch.zeros_like(asr)
308
+ asr_new[:, :, 0] = asr[:, :, 0]
309
+ asr_new[:, :, 1:] = asr[:, :, 0:-1]
310
+ asr = asr_new
311
+
312
+ out = model.decoder(asr, F0_pred, N_pred, s_ref.squeeze().unsqueeze(0))
313
+
314
+ # Return waveform without the last 50 samples (as per original code)
315
+ return out.squeeze().cpu().numpy()[..., :-50]
models.py ADDED
@@ -0,0 +1,611 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #coding:utf-8
2
+
3
+ import os
4
+ import os.path as osp
5
+
6
+ import copy
7
+ import math
8
+
9
+ import numpy as np
10
+ import torch
11
+ import torch.nn as nn
12
+ import torch.nn.functional as F
13
+ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
14
+
15
+ from Utils.ASR.models import ASRCNN
16
+ from Utils.JDC.model import JDCNet
17
+
18
+ from Modules.diffusion.sampler import KDiffusion, LogNormalDistribution
19
+ from Modules.diffusion.modules import Transformer1d, StyleTransformer1d
20
+ from Modules.diffusion.diffusion import AudioDiffusionConditional
21
+
22
+
23
+
24
+ from munch import Munch
25
+ import yaml
26
+
27
+ class LearnedDownSample(nn.Module):
28
+ def __init__(self, layer_type, dim_in):
29
+ super().__init__()
30
+ self.layer_type = layer_type
31
+
32
+ if self.layer_type == 'none':
33
+ self.conv = nn.Identity()
34
+ elif self.layer_type == 'timepreserve':
35
+ self.conv = spectral_norm(nn.Conv2d(dim_in, dim_in, kernel_size=(3, 1), stride=(2, 1), groups=dim_in, padding=(1, 0)))
36
+ elif self.layer_type == 'half':
37
+ self.conv = spectral_norm(nn.Conv2d(dim_in, dim_in, kernel_size=(3, 3), stride=(2, 2), groups=dim_in, padding=1))
38
+ else:
39
+ raise RuntimeError('Got unexpected donwsampletype %s, expected is [none, timepreserve, half]' % self.layer_type)
40
+
41
+ def forward(self, x):
42
+ return self.conv(x)
43
+
44
+ class LearnedUpSample(nn.Module):
45
+ def __init__(self, layer_type, dim_in):
46
+ super().__init__()
47
+ self.layer_type = layer_type
48
+
49
+ if self.layer_type == 'none':
50
+ self.conv = nn.Identity()
51
+ elif self.layer_type == 'timepreserve':
52
+ self.conv = nn.ConvTranspose2d(dim_in, dim_in, kernel_size=(3, 1), stride=(2, 1), groups=dim_in, output_padding=(1, 0), padding=(1, 0))
53
+ elif self.layer_type == 'half':
54
+ self.conv = nn.ConvTranspose2d(dim_in, dim_in, kernel_size=(3, 3), stride=(2, 2), groups=dim_in, output_padding=1, padding=1)
55
+ else:
56
+ raise RuntimeError('Got unexpected upsampletype %s, expected is [none, timepreserve, half]' % self.layer_type)
57
+
58
+
59
+ def forward(self, x):
60
+ return self.conv(x)
61
+
62
+ class DownSample(nn.Module):
63
+ def __init__(self, layer_type):
64
+ super().__init__()
65
+ self.layer_type = layer_type
66
+
67
+ def forward(self, x):
68
+ if self.layer_type == 'none':
69
+ return x
70
+ elif self.layer_type == 'timepreserve':
71
+ return F.avg_pool2d(x, (2, 1))
72
+ elif self.layer_type == 'half':
73
+ if x.shape[-1] % 2 != 0:
74
+ x = torch.cat([x, x[..., -1].unsqueeze(-1)], dim=-1)
75
+ return F.avg_pool2d(x, 2)
76
+ else:
77
+ raise RuntimeError('Got unexpected donwsampletype %s, expected is [none, timepreserve, half]' % self.layer_type)
78
+
79
+
80
+ class UpSample(nn.Module):
81
+ def __init__(self, layer_type):
82
+ super().__init__()
83
+ self.layer_type = layer_type
84
+
85
+ def forward(self, x):
86
+ if self.layer_type == 'none':
87
+ return x
88
+ elif self.layer_type == 'timepreserve':
89
+ return F.interpolate(x, scale_factor=(2, 1), mode='nearest')
90
+ elif self.layer_type == 'half':
91
+ return F.interpolate(x, scale_factor=2, mode='nearest')
92
+ else:
93
+ raise RuntimeError('Got unexpected upsampletype %s, expected is [none, timepreserve, half]' % self.layer_type)
94
+
95
+
96
+ class ResBlk(nn.Module):
97
+ def __init__(self, dim_in, dim_out, actv=nn.LeakyReLU(0.2),
98
+ normalize=False, downsample='none'):
99
+ super().__init__()
100
+ self.actv = actv
101
+ self.normalize = normalize
102
+ self.downsample = DownSample(downsample)
103
+ self.downsample_res = LearnedDownSample(downsample, dim_in)
104
+ self.learned_sc = dim_in != dim_out
105
+ self._build_weights(dim_in, dim_out)
106
+
107
+ def _build_weights(self, dim_in, dim_out):
108
+ self.conv1 = spectral_norm(nn.Conv2d(dim_in, dim_in, 3, 1, 1))
109
+ self.conv2 = spectral_norm(nn.Conv2d(dim_in, dim_out, 3, 1, 1))
110
+ if self.normalize:
111
+ self.norm1 = nn.InstanceNorm2d(dim_in, affine=True)
112
+ self.norm2 = nn.InstanceNorm2d(dim_in, affine=True)
113
+ if self.learned_sc:
114
+ self.conv1x1 = spectral_norm(nn.Conv2d(dim_in, dim_out, 1, 1, 0, bias=False))
115
+
116
+ def _shortcut(self, x):
117
+ if self.learned_sc:
118
+ x = self.conv1x1(x)
119
+ if self.downsample:
120
+ x = self.downsample(x)
121
+ return x
122
+
123
+ def _residual(self, x):
124
+ if self.normalize:
125
+ x = self.norm1(x)
126
+ x = self.actv(x)
127
+ x = self.conv1(x)
128
+ x = self.downsample_res(x)
129
+ if self.normalize:
130
+ x = self.norm2(x)
131
+ x = self.actv(x)
132
+ x = self.conv2(x)
133
+ return x
134
+
135
+ def forward(self, x):
136
+ x = self._shortcut(x) + self._residual(x)
137
+ return x / math.sqrt(2) # unit variance
138
+
139
+ class StyleEncoder(nn.Module):
140
+ def __init__(self, dim_in=48, style_dim=48, max_conv_dim=384):
141
+ super().__init__()
142
+ blocks = []
143
+ blocks += [spectral_norm(nn.Conv2d(1, dim_in, 3, 1, 1))]
144
+
145
+ repeat_num = 4
146
+ for _ in range(repeat_num):
147
+ dim_out = min(dim_in*2, max_conv_dim)
148
+ blocks += [ResBlk(dim_in, dim_out, downsample='half')]
149
+ dim_in = dim_out
150
+
151
+ blocks += [nn.LeakyReLU(0.2)]
152
+ blocks += [spectral_norm(nn.Conv2d(dim_out, dim_out, 5, 1, 0))]
153
+ blocks += [nn.AdaptiveAvgPool2d(1)]
154
+ blocks += [nn.LeakyReLU(0.2)]
155
+ self.shared = nn.Sequential(*blocks)
156
+
157
+ self.unshared = nn.Linear(dim_out, style_dim)
158
+
159
+ def forward(self, x):
160
+ h = self.shared(x)
161
+ h = h.view(h.size(0), -1)
162
+ s = self.unshared(h)
163
+
164
+ return s
165
+
166
+ class LinearNorm(torch.nn.Module):
167
+ def __init__(self, in_dim, out_dim, bias=True, w_init_gain='linear'):
168
+ super(LinearNorm, self).__init__()
169
+ self.linear_layer = torch.nn.Linear(in_dim, out_dim, bias=bias)
170
+
171
+ torch.nn.init.xavier_uniform_(
172
+ self.linear_layer.weight,
173
+ gain=torch.nn.init.calculate_gain(w_init_gain))
174
+
175
+ def forward(self, x):
176
+ return self.linear_layer(x)
177
+
178
+ class ResBlk1d(nn.Module):
179
+ def __init__(self, dim_in, dim_out, actv=nn.LeakyReLU(0.2),
180
+ normalize=False, downsample='none', dropout_p=0.2):
181
+ super().__init__()
182
+ self.actv = actv
183
+ self.normalize = normalize
184
+ self.downsample_type = downsample
185
+ self.learned_sc = dim_in != dim_out
186
+ self._build_weights(dim_in, dim_out)
187
+ self.dropout_p = dropout_p
188
+
189
+ if self.downsample_type == 'none':
190
+ self.pool = nn.Identity()
191
+ else:
192
+ self.pool = weight_norm(nn.Conv1d(dim_in, dim_in, kernel_size=3, stride=2, groups=dim_in, padding=1))
193
+
194
+ def _build_weights(self, dim_in, dim_out):
195
+ self.conv1 = weight_norm(nn.Conv1d(dim_in, dim_in, 3, 1, 1))
196
+ self.conv2 = weight_norm(nn.Conv1d(dim_in, dim_out, 3, 1, 1))
197
+ if self.normalize:
198
+ self.norm1 = nn.InstanceNorm1d(dim_in, affine=True)
199
+ self.norm2 = nn.InstanceNorm1d(dim_in, affine=True)
200
+ if self.learned_sc:
201
+ self.conv1x1 = weight_norm(nn.Conv1d(dim_in, dim_out, 1, 1, 0, bias=False))
202
+
203
+ def downsample(self, x):
204
+ if self.downsample_type == 'none':
205
+ return x
206
+ else:
207
+ if x.shape[-1] % 2 != 0:
208
+ x = torch.cat([x, x[..., -1].unsqueeze(-1)], dim=-1)
209
+ return F.avg_pool1d(x, 2)
210
+
211
+ def _shortcut(self, x):
212
+ if self.learned_sc:
213
+ x = self.conv1x1(x)
214
+ x = self.downsample(x)
215
+ return x
216
+
217
+ def _residual(self, x):
218
+ if self.normalize:
219
+ x = self.norm1(x)
220
+ x = self.actv(x)
221
+ x = F.dropout(x, p=self.dropout_p, training=self.training)
222
+
223
+ x = self.conv1(x)
224
+ x = self.pool(x)
225
+ if self.normalize:
226
+ x = self.norm2(x)
227
+
228
+ x = self.actv(x)
229
+ x = F.dropout(x, p=self.dropout_p, training=self.training)
230
+
231
+ x = self.conv2(x)
232
+ return x
233
+
234
+ def forward(self, x):
235
+ x = self._shortcut(x) + self._residual(x)
236
+ return x / math.sqrt(2) # unit variance
237
+
238
+ class LayerNorm(nn.Module):
239
+ def __init__(self, channels, eps=1e-5):
240
+ super().__init__()
241
+ self.channels = channels
242
+ self.eps = eps
243
+
244
+ self.gamma = nn.Parameter(torch.ones(channels))
245
+ self.beta = nn.Parameter(torch.zeros(channels))
246
+
247
+ def forward(self, x):
248
+ x = x.transpose(1, -1)
249
+ x = F.layer_norm(x, (self.channels,), self.gamma, self.beta, self.eps)
250
+ return x.transpose(1, -1)
251
+
252
+ class TextEncoder(nn.Module):
253
+ def __init__(self, channels, kernel_size, depth, n_symbols, actv=nn.LeakyReLU(0.2)):
254
+ super().__init__()
255
+ self.embedding = nn.Embedding(n_symbols, channels)
256
+
257
+ padding = (kernel_size - 1) // 2
258
+ self.cnn = nn.ModuleList()
259
+ for _ in range(depth):
260
+ self.cnn.append(nn.Sequential(
261
+ weight_norm(nn.Conv1d(channels, channels, kernel_size=kernel_size, padding=padding)),
262
+ LayerNorm(channels),
263
+ actv,
264
+ nn.Dropout(0.2),
265
+ ))
266
+ # self.cnn = nn.Sequential(*self.cnn)
267
+
268
+ self.lstm = nn.LSTM(channels, channels//2, 1, batch_first=True, bidirectional=True)
269
+
270
+ def forward(self, x, input_lengths, m):
271
+ x = self.embedding(x) # [B, T, emb]
272
+ x = x.transpose(1, 2) # [B, emb, T]
273
+ m = m.to(input_lengths.device).unsqueeze(1)
274
+ x.masked_fill_(m, 0.0)
275
+
276
+ for c in self.cnn:
277
+ x = c(x)
278
+ x.masked_fill_(m, 0.0)
279
+
280
+ x = x.transpose(1, 2) # [B, T, chn]
281
+
282
+ input_lengths = input_lengths.cpu().numpy()
283
+ x = nn.utils.rnn.pack_padded_sequence(
284
+ x, input_lengths, batch_first=True, enforce_sorted=False)
285
+
286
+ self.lstm.flatten_parameters()
287
+ x, _ = self.lstm(x)
288
+ x, _ = nn.utils.rnn.pad_packed_sequence(
289
+ x, batch_first=True)
290
+
291
+ x = x.transpose(-1, -2)
292
+ x_pad = torch.zeros([x.shape[0], x.shape[1], m.shape[-1]])
293
+
294
+ x_pad[:, :, :x.shape[-1]] = x
295
+ x = x_pad.to(x.device)
296
+
297
+ x.masked_fill_(m, 0.0)
298
+
299
+ return x
300
+
301
+ def inference(self, x):
302
+ x = self.embedding(x)
303
+ x = x.transpose(1, 2)
304
+ x = self.cnn(x)
305
+ x = x.transpose(1, 2)
306
+ self.lstm.flatten_parameters()
307
+ x, _ = self.lstm(x)
308
+ return x
309
+
310
+ def length_to_mask(self, lengths):
311
+ mask = torch.arange(lengths.max()).unsqueeze(0).expand(lengths.shape[0], -1).type_as(lengths)
312
+ mask = torch.gt(mask+1, lengths.unsqueeze(1))
313
+ return mask
314
+
315
+
316
+
317
+ class AdaIN1d(nn.Module):
318
+ def __init__(self, style_dim, num_features):
319
+ super().__init__()
320
+ self.norm = nn.InstanceNorm1d(num_features, affine=False)
321
+ self.fc = nn.Linear(style_dim, num_features*2)
322
+
323
+ def forward(self, x, s):
324
+ h = self.fc(s)
325
+ h = h.view(h.size(0), h.size(1), 1)
326
+ gamma, beta = torch.chunk(h, chunks=2, dim=1)
327
+ # affine (1 + lin(x)) * inst(x) + lin(x) is this a skip connection where the weight is a lin of itself
328
+ return (1 + gamma) * self.norm(x) + beta
329
+
330
+ class UpSample1d(nn.Module):
331
+ def __init__(self, layer_type):
332
+ super().__init__()
333
+ self.layer_type = layer_type
334
+
335
+ def forward(self, x):
336
+ if self.layer_type == 'none':
337
+ return x
338
+ else:
339
+ return F.interpolate(x, scale_factor=2, mode='nearest')
340
+
341
+ class AdainResBlk1d(nn.Module):
342
+ def __init__(self, dim_in, dim_out, style_dim=64, actv=nn.LeakyReLU(0.2),
343
+ upsample='none', dropout_p=0.0):
344
+ super().__init__()
345
+ self.actv = actv
346
+ self.upsample_type = upsample
347
+ self.upsample = UpSample1d(upsample)
348
+ self.learned_sc = dim_in != dim_out
349
+ self._build_weights(dim_in, dim_out, style_dim)
350
+ self.dropout = nn.Dropout(dropout_p)
351
+
352
+ if upsample == 'none':
353
+ self.pool = nn.Identity()
354
+ else:
355
+ self.pool = weight_norm(nn.ConvTranspose1d(dim_in, dim_in, kernel_size=3, stride=2, groups=dim_in, padding=1, output_padding=1))
356
+
357
+
358
+ def _build_weights(self, dim_in, dim_out, style_dim):
359
+ self.conv1 = weight_norm(nn.Conv1d(dim_in, dim_out, 3, 1, 1))
360
+ self.conv2 = weight_norm(nn.Conv1d(dim_out, dim_out, 3, 1, 1))
361
+ self.norm1 = AdaIN1d(style_dim, dim_in)
362
+ self.norm2 = AdaIN1d(style_dim, dim_out)
363
+ if self.learned_sc:
364
+ self.conv1x1 = weight_norm(nn.Conv1d(dim_in, dim_out, 1, 1, 0, bias=False))
365
+
366
+ def _shortcut(self, x):
367
+ x = self.upsample(x)
368
+ if self.learned_sc:
369
+ x = self.conv1x1(x)
370
+ return x
371
+
372
+ def _residual(self, x, s):
373
+ x = self.norm1(x, s)
374
+ x = self.actv(x)
375
+ x = self.pool(x)
376
+ x = self.conv1(self.dropout(x))
377
+ x = self.norm2(x, s)
378
+ x = self.actv(x)
379
+ x = self.conv2(self.dropout(x))
380
+ return x
381
+
382
+ def forward(self, x, s):
383
+ out = self._residual(x, s)
384
+ out = (out + self._shortcut(x)) / math.sqrt(2)
385
+ return out
386
+
387
+ class AdaLayerNorm(nn.Module):
388
+ def __init__(self, style_dim, channels, eps=1e-5):
389
+ super().__init__()
390
+ self.channels = channels
391
+ self.eps = eps
392
+
393
+ self.fc = nn.Linear(style_dim, channels*2)
394
+
395
+ def forward(self, x, s):
396
+ x = x.transpose(-1, -2)
397
+ x = x.transpose(1, -1)
398
+
399
+ h = self.fc(s)
400
+ h = h.view(h.size(0), h.size(1), 1)
401
+ gamma, beta = torch.chunk(h, chunks=2, dim=1)
402
+ gamma, beta = gamma.transpose(1, -1), beta.transpose(1, -1)
403
+
404
+
405
+ x = F.layer_norm(x, (self.channels,), eps=self.eps)
406
+ x = (1 + gamma) * x + beta
407
+ return x.transpose(1, -1).transpose(-1, -2)
408
+
409
+ class ProsodyPredictor(nn.Module):
410
+
411
+ def __init__(self, style_dim, d_hid, nlayers, max_dur=50, dropout=0.1):
412
+ super().__init__()
413
+
414
+ self.text_encoder = DurationEncoder(sty_dim=style_dim,
415
+ d_model=d_hid,
416
+ nlayers=nlayers,
417
+ dropout=dropout)
418
+
419
+ self.lstm = nn.LSTM(d_hid + style_dim, d_hid // 2, 1, batch_first=True, bidirectional=True)
420
+ self.duration_proj = LinearNorm(d_hid, max_dur)
421
+
422
+ self.shared = nn.LSTM(d_hid + style_dim, d_hid // 2, 1, batch_first=True, bidirectional=True)
423
+ self.F0 = nn.ModuleList()
424
+ self.F0.append(AdainResBlk1d(d_hid, d_hid, style_dim, dropout_p=dropout))
425
+ self.F0.append(AdainResBlk1d(d_hid, d_hid // 2, style_dim, upsample=True, dropout_p=dropout))
426
+ self.F0.append(AdainResBlk1d(d_hid // 2, d_hid // 2, style_dim, dropout_p=dropout))
427
+
428
+ self.N = nn.ModuleList()
429
+ self.N.append(AdainResBlk1d(d_hid, d_hid, style_dim, dropout_p=dropout))
430
+ self.N.append(AdainResBlk1d(d_hid, d_hid // 2, style_dim, upsample=True, dropout_p=dropout))
431
+ self.N.append(AdainResBlk1d(d_hid // 2, d_hid // 2, style_dim, dropout_p=dropout))
432
+
433
+ self.F0_proj = nn.Conv1d(d_hid // 2, 1, 1, 1, 0)
434
+ self.N_proj = nn.Conv1d(d_hid // 2, 1, 1, 1, 0)
435
+
436
+ def F0Ntrain(self, x, s):
437
+ x, _ = self.shared(x.transpose(-1, -2))
438
+
439
+ F0 = x.transpose(-1, -2)
440
+ for block in self.F0:
441
+ F0 = block(F0, s)
442
+ F0 = self.F0_proj(F0)
443
+
444
+ N = x.transpose(-1, -2)
445
+ for block in self.N:
446
+ N = block(N, s)
447
+ N = self.N_proj(N)
448
+
449
+ return F0.squeeze(1), N.squeeze(1)
450
+
451
+ def length_to_mask(self, lengths):
452
+ mask = torch.arange(lengths.max()).unsqueeze(0).expand(lengths.shape[0], -1).type_as(lengths)
453
+ mask = torch.gt(mask+1, lengths.unsqueeze(1))
454
+ return mask
455
+
456
+ class DurationEncoder(nn.Module):
457
+
458
+ def __init__(self, sty_dim, d_model, nlayers, dropout=0.1):
459
+ super().__init__()
460
+ self.lstms = nn.ModuleList()
461
+ for _ in range(nlayers):
462
+ self.lstms.append(nn.LSTM(d_model + sty_dim,
463
+ d_model // 2,
464
+ num_layers=1,
465
+ batch_first=True,
466
+ bidirectional=True,
467
+ dropout=dropout))
468
+ self.lstms.append(AdaLayerNorm(sty_dim, d_model))
469
+
470
+
471
+ self.dropout = dropout
472
+ self.d_model = d_model
473
+ self.sty_dim = sty_dim
474
+
475
+ def forward(self, x, style, text_lengths, m):
476
+ masks = m.to(text_lengths.device)
477
+
478
+ x = x.permute(2, 0, 1)
479
+ s = style.expand(x.shape[0], x.shape[1], -1)
480
+ x = torch.cat([x, s], axis=-1)
481
+ x.masked_fill_(masks.unsqueeze(-1).transpose(0, 1), 0.0)
482
+
483
+ x = x.transpose(0, 1)
484
+ input_lengths = text_lengths.cpu().numpy()
485
+ x = x.transpose(-1, -2)
486
+
487
+ for block in self.lstms:
488
+ if isinstance(block, AdaLayerNorm):
489
+ x = block(x.transpose(-1, -2), style).transpose(-1, -2)
490
+ x = torch.cat([x, s.permute(1, -1, 0)], axis=1)
491
+ x.masked_fill_(masks.unsqueeze(-1).transpose(-1, -2), 0.0)
492
+ else:
493
+ x = x.transpose(-1, -2)
494
+ x = nn.utils.rnn.pack_padded_sequence(
495
+ x, input_lengths, batch_first=True, enforce_sorted=False)
496
+ block.flatten_parameters()
497
+ x, _ = block(x)
498
+ x, _ = nn.utils.rnn.pad_packed_sequence(
499
+ x, batch_first=True)
500
+ x = F.dropout(x, p=self.dropout, training=self.training)
501
+ x = x.transpose(-1, -2)
502
+
503
+ x_pad = torch.zeros([x.shape[0], x.shape[1], m.shape[-1]])
504
+
505
+ x_pad[:, :, :x.shape[-1]] = x
506
+ x = x_pad.to(x.device)
507
+ # print('Calling Duration Encoder\n\n\n\n',x.shape, x.min(), x.max())
508
+ # Calling Duration Encoder
509
+ # torch.Size([1, 640, 107]) tensor(-3.0903, device='cuda:0') tensor(2.3089, device='cuda:0')
510
+ return x.transpose(-1, -2)
511
+
512
+
513
+
514
+
515
+ def load_F0_models(path):
516
+ # load F0 model
517
+
518
+ F0_model = JDCNet(num_class=1, seq_len=192)
519
+ print(path, 'WHAT ARE YOU TRYING TO LOAD F0 L520')
520
+ path = path.replace('.t7', '.pth')
521
+ params = torch.load(path, map_location='cpu')['net']
522
+ F0_model.load_state_dict(params)
523
+ _ = F0_model.train()
524
+
525
+ return F0_model
526
+
527
+ def load_ASR_models(ASR_MODEL_PATH, ASR_MODEL_CONFIG):
528
+ # load ASR model
529
+ def _load_config(path):
530
+ with open(path) as f:
531
+ config = yaml.safe_load(f)
532
+ model_config = config['model_params']
533
+ return model_config
534
+
535
+ def _load_model(model_config, model_path):
536
+ model = ASRCNN(**model_config)
537
+ params = torch.load(model_path, map_location='cpu')['model']
538
+ model.load_state_dict(params)
539
+ return model
540
+
541
+ asr_model_config = _load_config(ASR_MODEL_CONFIG)
542
+ asr_model = _load_model(asr_model_config, ASR_MODEL_PATH)
543
+ _ = asr_model.train()
544
+
545
+ return asr_model
546
+
547
+ def build_model(args, text_aligner, pitch_extractor, bert):
548
+ print(f'\n==============\n {args.decoder.type=}\n==============L584 models.py @ build_model()\n')
549
+
550
+ from Modules.hifigan import Decoder
551
+ decoder = Decoder(dim_in=args.hidden_dim, style_dim=args.style_dim, dim_out=args.n_mels,
552
+ resblock_kernel_sizes = args.decoder.resblock_kernel_sizes,
553
+ upsample_rates = args.decoder.upsample_rates,
554
+ upsample_initial_channel=args.decoder.upsample_initial_channel,
555
+ resblock_dilation_sizes=args.decoder.resblock_dilation_sizes,
556
+ upsample_kernel_sizes=args.decoder.upsample_kernel_sizes)
557
+
558
+ text_encoder = TextEncoder(channels=args.hidden_dim, kernel_size=5, depth=args.n_layer, n_symbols=args.n_token)
559
+
560
+ predictor = ProsodyPredictor(style_dim=args.style_dim, d_hid=args.hidden_dim, nlayers=args.n_layer, max_dur=args.max_dur, dropout=args.dropout)
561
+
562
+ style_encoder = StyleEncoder(dim_in=args.dim_in, style_dim=args.style_dim, max_conv_dim=args.hidden_dim) # acoustic style encoder
563
+ predictor_encoder = StyleEncoder(dim_in=args.dim_in, style_dim=args.style_dim, max_conv_dim=args.hidden_dim) # prosodic style encoder
564
+
565
+ # define diffusion model
566
+ if args.multispeaker:
567
+ transformer = StyleTransformer1d(channels=args.style_dim*2,
568
+ context_embedding_features=bert.config.hidden_size,
569
+ context_features=args.style_dim*2,
570
+ **args.diffusion.transformer)
571
+ else:
572
+ transformer = Transformer1d(channels=args.style_dim*2,
573
+ context_embedding_features=bert.config.hidden_size,
574
+ **args.diffusion.transformer)
575
+
576
+ diffusion = AudioDiffusionConditional(
577
+ in_channels=1,
578
+ embedding_max_length=bert.config.max_position_embeddings,
579
+ embedding_features=bert.config.hidden_size,
580
+ embedding_mask_proba=args.diffusion.embedding_mask_proba, # Conditional dropout of batch elements,
581
+ channels=args.style_dim*2,
582
+ context_features=args.style_dim*2,
583
+ )
584
+
585
+ diffusion.diffusion = KDiffusion(
586
+ net=diffusion.unet,
587
+ sigma_distribution=LogNormalDistribution(mean = args.diffusion.dist.mean, std = args.diffusion.dist.std),
588
+ sigma_data=args.diffusion.dist.sigma_data, # a placeholder, will be changed dynamically when start training diffusion model
589
+ dynamic_threshold=0.0
590
+ )
591
+ diffusion.diffusion.net = transformer
592
+ diffusion.unet = transformer
593
+
594
+
595
+ nets = Munch(
596
+ bert=bert,
597
+ bert_encoder=nn.Linear(bert.config.hidden_size, args.hidden_dim),
598
+
599
+ predictor=predictor,
600
+ decoder=decoder,
601
+ text_encoder=text_encoder,
602
+
603
+ predictor_encoder=predictor_encoder,
604
+ style_encoder=style_encoder,
605
+ diffusion=diffusion,
606
+
607
+ text_aligner = text_aligner,
608
+ pitch_extractor=pitch_extractor
609
+ )
610
+
611
+ return nets
packages.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ espeak-ng
pca/annotated_features.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea4d9a2bd9d3139441989c822d48fc96f887e0d3ea015d55dcb5df9b004836e4
3
+ size 2576
pca/annotations.json ADDED
@@ -0,0 +1,1991 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "audio": "\/data\/upload\/1\/a0e6621c-09uKIJP6.wav",
4
+ "id": 1,
5
+ "pacing": [
6
+ {
7
+ "rating": 2
8
+ }
9
+ ],
10
+ "gender": [
11
+ {
12
+ "rating": 1
13
+ }
14
+ ],
15
+ "tone": [
16
+ {
17
+ "rating": 1
18
+ }
19
+ ],
20
+ "enunciation": [
21
+ {
22
+ "rating": 3
23
+ }
24
+ ],
25
+ "quality": [
26
+ {
27
+ "rating": 1
28
+ }
29
+ ],
30
+ "style": [
31
+ {
32
+ "rating": 3
33
+ }
34
+ ],
35
+ "annotator": 1,
36
+ "annotation_id": 1,
37
+ "created_at": "2024-12-24T11:07:30.438634Z",
38
+ "updated_at": "2024-12-24T11:07:30.438652Z",
39
+ "lead_time": 78.024
40
+ },
41
+ {
42
+ "audio": "\/data\/upload\/1\/e8e3e271-gKtQS1UY.wav",
43
+ "id": 2,
44
+ "gender": [
45
+ {
46
+ "rating": 3
47
+ }
48
+ ],
49
+ "tone": [
50
+ {
51
+ "rating": 3
52
+ }
53
+ ],
54
+ "pacing": [
55
+ {
56
+ "rating": 3
57
+ }
58
+ ],
59
+ "enunciation": [
60
+ {
61
+ "rating": 4
62
+ }
63
+ ],
64
+ "quality": [
65
+ {
66
+ "rating": 4
67
+ }
68
+ ],
69
+ "style": [
70
+ {
71
+ "rating": 4
72
+ }
73
+ ],
74
+ "annotator": 1,
75
+ "annotation_id": 2,
76
+ "created_at": "2024-12-24T11:07:48.953656Z",
77
+ "updated_at": "2024-12-24T11:07:48.953687Z",
78
+ "lead_time": 18.297
79
+ },
80
+ {
81
+ "audio": "\/data\/upload\/1\/77d7e6d8-PTYJ87FC.wav",
82
+ "id": 3,
83
+ "gender": [
84
+ {
85
+ "rating": 2
86
+ }
87
+ ],
88
+ "tone": [
89
+ {
90
+ "rating": 2
91
+ }
92
+ ],
93
+ "pacing": [
94
+ {
95
+ "rating": 3
96
+ }
97
+ ],
98
+ "enunciation": [
99
+ {
100
+ "rating": 3
101
+ }
102
+ ],
103
+ "quality": [
104
+ {
105
+ "rating": 1
106
+ }
107
+ ],
108
+ "style": [
109
+ {
110
+ "rating": 3
111
+ }
112
+ ],
113
+ "annotator": 1,
114
+ "annotation_id": 3,
115
+ "created_at": "2024-12-24T11:08:08.418844Z",
116
+ "updated_at": "2024-12-24T11:08:08.418858Z",
117
+ "lead_time": 19.242
118
+ },
119
+ {
120
+ "audio": "\/data\/upload\/1\/31246ad1-IPKUCJ5q.wav",
121
+ "id": 4,
122
+ "gender": [
123
+ {
124
+ "rating": 3
125
+ }
126
+ ],
127
+ "tone": [
128
+ {
129
+ "rating": 5
130
+ }
131
+ ],
132
+ "pacing": [
133
+ {
134
+ "rating": 4
135
+ }
136
+ ],
137
+ "enunciation": [
138
+ {
139
+ "rating": 4
140
+ }
141
+ ],
142
+ "quality": [
143
+ {
144
+ "rating": 3
145
+ }
146
+ ],
147
+ "style": [
148
+ {
149
+ "rating": 4
150
+ }
151
+ ],
152
+ "annotator": 1,
153
+ "annotation_id": 4,
154
+ "created_at": "2024-12-24T11:09:05.335687Z",
155
+ "updated_at": "2024-12-24T11:09:05.335705Z",
156
+ "lead_time": 18.536
157
+ },
158
+ {
159
+ "audio": "\/data\/upload\/1\/98bc1f15-aMNM7RnL.wav",
160
+ "id": 5,
161
+ "gender": [
162
+ {
163
+ "rating": 4
164
+ }
165
+ ],
166
+ "tone": [
167
+ {
168
+ "rating": 4
169
+ }
170
+ ],
171
+ "pacing": [
172
+ {
173
+ "rating": 4
174
+ }
175
+ ],
176
+ "enunciation": [
177
+ {
178
+ "rating": 4
179
+ }
180
+ ],
181
+ "quality": [
182
+ {
183
+ "rating": 3
184
+ }
185
+ ],
186
+ "style": [
187
+ {
188
+ "rating": 3
189
+ }
190
+ ],
191
+ "annotator": 1,
192
+ "annotation_id": 5,
193
+ "created_at": "2024-12-24T11:09:22.334461Z",
194
+ "updated_at": "2024-12-24T11:09:22.334478Z",
195
+ "lead_time": 16.818
196
+ },
197
+ {
198
+ "audio": "\/data\/upload\/1\/23109e4f-icIKTMCB.wav",
199
+ "id": 6,
200
+ "gender": [
201
+ {
202
+ "rating": 3
203
+ }
204
+ ],
205
+ "tone": [
206
+ {
207
+ "rating": 3
208
+ }
209
+ ],
210
+ "pacing": [
211
+ {
212
+ "rating": 4
213
+ }
214
+ ],
215
+ "enunciation": [
216
+ {
217
+ "rating": 5
218
+ }
219
+ ],
220
+ "quality": [
221
+ {
222
+ "rating": 2
223
+ }
224
+ ],
225
+ "style": [
226
+ {
227
+ "rating": 4
228
+ }
229
+ ],
230
+ "annotator": 1,
231
+ "annotation_id": 6,
232
+ "created_at": "2024-12-24T11:09:38.553151Z",
233
+ "updated_at": "2024-12-24T11:09:38.553169Z",
234
+ "lead_time": 16.039
235
+ },
236
+ {
237
+ "audio": "\/data\/upload\/1\/224025c1-E5F0dino.wav",
238
+ "id": 7,
239
+ "gender": [
240
+ {
241
+ "rating": 2
242
+ }
243
+ ],
244
+ "tone": [
245
+ {
246
+ "rating": 2
247
+ }
248
+ ],
249
+ "pacing": [
250
+ {
251
+ "rating": 2
252
+ }
253
+ ],
254
+ "enunciation": [
255
+ {
256
+ "rating": 4
257
+ }
258
+ ],
259
+ "quality": [
260
+ {
261
+ "rating": 3
262
+ }
263
+ ],
264
+ "style": [
265
+ {
266
+ "rating": 4
267
+ }
268
+ ],
269
+ "annotator": 1,
270
+ "annotation_id": 7,
271
+ "created_at": "2024-12-24T11:09:56.657942Z",
272
+ "updated_at": "2024-12-24T11:09:56.657961Z",
273
+ "lead_time": 17.889
274
+ },
275
+ {
276
+ "audio": "\/data\/upload\/1\/cb85576d-1EtXTH9V.wav",
277
+ "id": 8,
278
+ "gender": [
279
+ {
280
+ "rating": 4
281
+ }
282
+ ],
283
+ "tone": [
284
+ {
285
+ "rating": 4
286
+ }
287
+ ],
288
+ "pacing": [
289
+ {
290
+ "rating": 4
291
+ }
292
+ ],
293
+ "enunciation": [
294
+ {
295
+ "rating": 4
296
+ }
297
+ ],
298
+ "quality": [
299
+ {
300
+ "rating": 5
301
+ }
302
+ ],
303
+ "style": [
304
+ {
305
+ "rating": 4
306
+ }
307
+ ],
308
+ "annotator": 1,
309
+ "annotation_id": 8,
310
+ "created_at": "2024-12-24T11:10:14.123722Z",
311
+ "updated_at": "2024-12-24T11:10:14.123739Z",
312
+ "lead_time": 17.245
313
+ },
314
+ {
315
+ "audio": "\/data\/upload\/1\/60474851-a1k94fVP.wav",
316
+ "id": 9,
317
+ "gender": [
318
+ {
319
+ "rating": 2
320
+ }
321
+ ],
322
+ "quality": [
323
+ {
324
+ "rating": 1
325
+ }
326
+ ],
327
+ "enunciation": [
328
+ {
329
+ "rating": 3
330
+ }
331
+ ],
332
+ "pacing": [
333
+ {
334
+ "rating": 3
335
+ }
336
+ ],
337
+ "tone": [
338
+ {
339
+ "rating": 2
340
+ }
341
+ ],
342
+ "style": [
343
+ {
344
+ "rating": 3
345
+ }
346
+ ],
347
+ "annotator": 1,
348
+ "annotation_id": 9,
349
+ "created_at": "2024-12-24T11:10:29.310038Z",
350
+ "updated_at": "2024-12-24T11:10:29.310055Z",
351
+ "lead_time": 14.969
352
+ },
353
+ {
354
+ "audio": "\/data\/upload\/1\/38b8e84f-NMbCNxj4.wav",
355
+ "id": 10,
356
+ "gender": [
357
+ {
358
+ "rating": 3
359
+ }
360
+ ],
361
+ "tone": [
362
+ {
363
+ "rating": 3
364
+ }
365
+ ],
366
+ "pacing": [
367
+ {
368
+ "rating": 2
369
+ }
370
+ ],
371
+ "enunciation": [
372
+ {
373
+ "rating": 4
374
+ }
375
+ ],
376
+ "quality": [
377
+ {
378
+ "rating": 2
379
+ }
380
+ ],
381
+ "style": [
382
+ {
383
+ "rating": 4
384
+ }
385
+ ],
386
+ "annotator": 1,
387
+ "annotation_id": 10,
388
+ "created_at": "2024-12-24T11:10:48.858033Z",
389
+ "updated_at": "2024-12-24T11:10:48.858047Z",
390
+ "lead_time": 19.352
391
+ },
392
+ {
393
+ "audio": "\/data\/upload\/1\/5701e1ab-smOpJVPt.wav",
394
+ "id": 11,
395
+ "gender": [
396
+ {
397
+ "rating": 2
398
+ }
399
+ ],
400
+ "tone": [
401
+ {
402
+ "rating": 2
403
+ }
404
+ ],
405
+ "pacing": [
406
+ {
407
+ "rating": 2
408
+ }
409
+ ],
410
+ "enunciation": [
411
+ {
412
+ "rating": 3
413
+ }
414
+ ],
415
+ "quality": [
416
+ {
417
+ "rating": 2
418
+ }
419
+ ],
420
+ "style": [
421
+ {
422
+ "rating": 3
423
+ }
424
+ ],
425
+ "annotator": 1,
426
+ "annotation_id": 11,
427
+ "created_at": "2024-12-24T11:11:09.250985Z",
428
+ "updated_at": "2024-12-24T11:11:09.251003Z",
429
+ "lead_time": 20.202
430
+ },
431
+ {
432
+ "audio": "\/data\/upload\/1\/d2348238-b0hbiZd4.wav",
433
+ "id": 12,
434
+ "gender": [
435
+ {
436
+ "rating": 5
437
+ }
438
+ ],
439
+ "tone": [
440
+ {
441
+ "rating": 5
442
+ }
443
+ ],
444
+ "pacing": [
445
+ {
446
+ "rating": 3
447
+ }
448
+ ],
449
+ "enunciation": [
450
+ {
451
+ "rating": 4
452
+ }
453
+ ],
454
+ "quality": [
455
+ {
456
+ "rating": 4
457
+ }
458
+ ],
459
+ "style": [
460
+ {
461
+ "rating": 3
462
+ }
463
+ ],
464
+ "annotator": 1,
465
+ "annotation_id": 12,
466
+ "created_at": "2024-12-24T11:11:24.519944Z",
467
+ "updated_at": "2024-12-24T11:11:24.519960Z",
468
+ "lead_time": 15.064
469
+ },
470
+ {
471
+ "audio": "\/data\/upload\/1\/e24973a9-w6xb7KtX.wav",
472
+ "id": 13,
473
+ "gender": [
474
+ {
475
+ "rating": 2
476
+ }
477
+ ],
478
+ "tone": [
479
+ {
480
+ "rating": 3
481
+ }
482
+ ],
483
+ "pacing": [
484
+ {
485
+ "rating": 3
486
+ }
487
+ ],
488
+ "enunciation": [
489
+ {
490
+ "rating": 4
491
+ }
492
+ ],
493
+ "quality": [
494
+ {
495
+ "rating": 4
496
+ }
497
+ ],
498
+ "style": [
499
+ {
500
+ "rating": 4
501
+ }
502
+ ],
503
+ "annotator": 1,
504
+ "annotation_id": 13,
505
+ "created_at": "2024-12-24T11:11:43.845338Z",
506
+ "updated_at": "2024-12-24T11:11:43.845355Z",
507
+ "lead_time": 19.115
508
+ },
509
+ {
510
+ "audio": "\/data\/upload\/1\/1c7b216d-9uBvtpvw.wav",
511
+ "id": 14,
512
+ "gender": [
513
+ {
514
+ "rating": 4
515
+ }
516
+ ],
517
+ "tone": [
518
+ {
519
+ "rating": 4
520
+ }
521
+ ],
522
+ "pacing": [
523
+ {
524
+ "rating": 3
525
+ }
526
+ ],
527
+ "enunciation": [
528
+ {
529
+ "rating": 5
530
+ }
531
+ ],
532
+ "quality": [
533
+ {
534
+ "rating": 3
535
+ }
536
+ ],
537
+ "style": [
538
+ {
539
+ "rating": 3
540
+ }
541
+ ],
542
+ "annotator": 1,
543
+ "annotation_id": 14,
544
+ "created_at": "2024-12-24T11:12:05.707588Z",
545
+ "updated_at": "2024-12-24T11:12:05.707607Z",
546
+ "lead_time": 21.646
547
+ },
548
+ {
549
+ "audio": "\/data\/upload\/1\/f4a0294e-U3XBhPBR.wav",
550
+ "id": 15,
551
+ "gender": [
552
+ {
553
+ "rating": 3
554
+ }
555
+ ],
556
+ "tone": [
557
+ {
558
+ "rating": 3
559
+ }
560
+ ],
561
+ "pacing": [
562
+ {
563
+ "rating": 3
564
+ }
565
+ ],
566
+ "enunciation": [
567
+ {
568
+ "rating": 5
569
+ }
570
+ ],
571
+ "quality": [
572
+ {
573
+ "rating": 3
574
+ }
575
+ ],
576
+ "style": [
577
+ {
578
+ "rating": 5
579
+ }
580
+ ],
581
+ "annotator": 1,
582
+ "annotation_id": 15,
583
+ "created_at": "2024-12-24T11:12:24.220074Z",
584
+ "updated_at": "2024-12-24T11:12:24.220103Z",
585
+ "lead_time": 18.288
586
+ },
587
+ {
588
+ "audio": "\/data\/upload\/1\/bf754fd0-c5qSnKvS.wav",
589
+ "id": 16,
590
+ "gender": [
591
+ {
592
+ "rating": 3
593
+ }
594
+ ],
595
+ "tone": [
596
+ {
597
+ "rating": 3
598
+ }
599
+ ],
600
+ "pacing": [
601
+ {
602
+ "rating": 4
603
+ }
604
+ ],
605
+ "enunciation": [
606
+ {
607
+ "rating": 4
608
+ }
609
+ ],
610
+ "quality": [
611
+ {
612
+ "rating": 2
613
+ }
614
+ ],
615
+ "style": [
616
+ {
617
+ "rating": 3
618
+ }
619
+ ],
620
+ "annotator": 1,
621
+ "annotation_id": 16,
622
+ "created_at": "2024-12-24T11:12:44.912272Z",
623
+ "updated_at": "2024-12-24T11:12:44.912290Z",
624
+ "lead_time": 20.478
625
+ },
626
+ {
627
+ "audio": "\/data\/upload\/1\/4f38ebb9-gQGR5r2f.wav",
628
+ "id": 17,
629
+ "gender": [
630
+ {
631
+ "rating": 2
632
+ }
633
+ ],
634
+ "tone": [
635
+ {
636
+ "rating": 2
637
+ }
638
+ ],
639
+ "pacing": [
640
+ {
641
+ "rating": 3
642
+ }
643
+ ],
644
+ "enunciation": [
645
+ {
646
+ "rating": 4
647
+ }
648
+ ],
649
+ "quality": [
650
+ {
651
+ "rating": 3
652
+ }
653
+ ],
654
+ "style": [
655
+ {
656
+ "rating": 4
657
+ }
658
+ ],
659
+ "annotator": 1,
660
+ "annotation_id": 17,
661
+ "created_at": "2024-12-24T11:12:59.915745Z",
662
+ "updated_at": "2024-12-24T11:12:59.915768Z",
663
+ "lead_time": 14.792
664
+ },
665
+ {
666
+ "audio": "\/data\/upload\/1\/d11c1e40-bjFLpT38.wav",
667
+ "id": 18,
668
+ "tone": [
669
+ {
670
+ "rating": 4
671
+ }
672
+ ],
673
+ "gender": [
674
+ {
675
+ "rating": 4
676
+ }
677
+ ],
678
+ "pacing": [
679
+ {
680
+ "rating": 5
681
+ }
682
+ ],
683
+ "enunciation": [
684
+ {
685
+ "rating": 4
686
+ }
687
+ ],
688
+ "quality": [
689
+ {
690
+ "rating": 4
691
+ }
692
+ ],
693
+ "style": [
694
+ {
695
+ "rating": 3
696
+ }
697
+ ],
698
+ "annotator": 1,
699
+ "annotation_id": 18,
700
+ "created_at": "2024-12-24T11:13:18.604486Z",
701
+ "updated_at": "2024-12-24T11:13:18.604513Z",
702
+ "lead_time": 18.46
703
+ },
704
+ {
705
+ "audio": "\/data\/upload\/1\/8bb81706-FAjL28lO.wav",
706
+ "id": 19,
707
+ "gender": [
708
+ {
709
+ "rating": 3
710
+ }
711
+ ],
712
+ "tone": [
713
+ {
714
+ "rating": 3
715
+ }
716
+ ],
717
+ "pacing": [
718
+ {
719
+ "rating": 3
720
+ }
721
+ ],
722
+ "enunciation": [
723
+ {
724
+ "rating": 5
725
+ }
726
+ ],
727
+ "quality": [
728
+ {
729
+ "rating": 3
730
+ }
731
+ ],
732
+ "style": [
733
+ {
734
+ "rating": 5
735
+ }
736
+ ],
737
+ "annotator": 1,
738
+ "annotation_id": 19,
739
+ "created_at": "2024-12-24T11:13:38.605869Z",
740
+ "updated_at": "2024-12-24T11:13:38.605883Z",
741
+ "lead_time": 19.81
742
+ },
743
+ {
744
+ "audio": "\/data\/upload\/1\/aecc6e1e-oWkO6Hjw.wav",
745
+ "id": 20,
746
+ "gender": [
747
+ {
748
+ "rating": 4
749
+ }
750
+ ],
751
+ "tone": [
752
+ {
753
+ "rating": 4
754
+ }
755
+ ],
756
+ "pacing": [
757
+ {
758
+ "rating": 3
759
+ }
760
+ ],
761
+ "enunciation": [
762
+ {
763
+ "rating": 4
764
+ }
765
+ ],
766
+ "quality": [
767
+ {
768
+ "rating": 3
769
+ }
770
+ ],
771
+ "style": [
772
+ {
773
+ "rating": 4
774
+ }
775
+ ],
776
+ "annotator": 1,
777
+ "annotation_id": 20,
778
+ "created_at": "2024-12-24T11:13:56.837635Z",
779
+ "updated_at": "2024-12-24T11:13:56.837651Z",
780
+ "lead_time": 18.017
781
+ },
782
+ {
783
+ "audio": "\/data\/upload\/1\/ebe57847-6784JzTG.wav",
784
+ "id": 21,
785
+ "gender": [
786
+ {
787
+ "rating": 5
788
+ }
789
+ ],
790
+ "tone": [
791
+ {
792
+ "rating": 3
793
+ }
794
+ ],
795
+ "quality": [
796
+ {
797
+ "rating": 2
798
+ }
799
+ ],
800
+ "pacing": [
801
+ {
802
+ "rating": 3
803
+ }
804
+ ],
805
+ "enunciation": [
806
+ {
807
+ "rating": 4
808
+ }
809
+ ],
810
+ "style": [
811
+ {
812
+ "rating": 4
813
+ }
814
+ ],
815
+ "annotator": 1,
816
+ "annotation_id": 21,
817
+ "created_at": "2024-12-24T11:14:10.304635Z",
818
+ "updated_at": "2024-12-24T11:14:10.304650Z",
819
+ "lead_time": 13.261
820
+ },
821
+ {
822
+ "audio": "\/data\/upload\/1\/3e2fb517-eKehysg6.wav",
823
+ "id": 22,
824
+ "gender": [
825
+ {
826
+ "rating": 3
827
+ }
828
+ ],
829
+ "tone": [
830
+ {
831
+ "rating": 2
832
+ }
833
+ ],
834
+ "pacing": [
835
+ {
836
+ "rating": 3
837
+ }
838
+ ],
839
+ "enunciation": [
840
+ {
841
+ "rating": 4
842
+ }
843
+ ],
844
+ "quality": [
845
+ {
846
+ "rating": 2
847
+ }
848
+ ],
849
+ "style": [
850
+ {
851
+ "rating": 4
852
+ }
853
+ ],
854
+ "annotator": 1,
855
+ "annotation_id": 22,
856
+ "created_at": "2024-12-24T11:14:30.874016Z",
857
+ "updated_at": "2024-12-24T11:14:30.874050Z",
858
+ "lead_time": 20.356
859
+ },
860
+ {
861
+ "audio": "\/data\/upload\/1\/e54d1cd4-VyDYticQ.wav",
862
+ "id": 23,
863
+ "gender": [
864
+ {
865
+ "rating": 2
866
+ }
867
+ ],
868
+ "tone": [
869
+ {
870
+ "rating": 3
871
+ }
872
+ ],
873
+ "pacing": [
874
+ {
875
+ "rating": 4
876
+ }
877
+ ],
878
+ "enunciation": [
879
+ {
880
+ "rating": 5
881
+ }
882
+ ],
883
+ "quality": [
884
+ {
885
+ "rating": 5
886
+ }
887
+ ],
888
+ "style": [
889
+ {
890
+ "rating": 5
891
+ }
892
+ ],
893
+ "annotator": 1,
894
+ "annotation_id": 23,
895
+ "created_at": "2024-12-24T11:14:50.274649Z",
896
+ "updated_at": "2024-12-24T11:14:50.274679Z",
897
+ "lead_time": 19.207
898
+ },
899
+ {
900
+ "audio": "\/data\/upload\/1\/06ae990f-u3g9CMFd.wav",
901
+ "id": 24,
902
+ "gender": [
903
+ {
904
+ "rating": 2
905
+ }
906
+ ],
907
+ "tone": [
908
+ {
909
+ "rating": 4
910
+ }
911
+ ],
912
+ "pacing": [
913
+ {
914
+ "rating": 3
915
+ }
916
+ ],
917
+ "enunciation": [
918
+ {
919
+ "rating": 4
920
+ }
921
+ ],
922
+ "quality": [
923
+ {
924
+ "rating": 3
925
+ }
926
+ ],
927
+ "style": [
928
+ {
929
+ "rating": 5
930
+ }
931
+ ],
932
+ "annotator": 1,
933
+ "annotation_id": 24,
934
+ "created_at": "2024-12-24T11:15:09.533558Z",
935
+ "updated_at": "2024-12-24T11:15:09.533575Z",
936
+ "lead_time": 19.046
937
+ },
938
+ {
939
+ "audio": "\/data\/upload\/1\/2b0a0481-60HQeXwq.wav",
940
+ "id": 25,
941
+ "gender": [
942
+ {
943
+ "rating": 4
944
+ }
945
+ ],
946
+ "tone": [
947
+ {
948
+ "rating": 2
949
+ }
950
+ ],
951
+ "pacing": [
952
+ {
953
+ "rating": 2
954
+ }
955
+ ],
956
+ "enunciation": [
957
+ {
958
+ "rating": 4
959
+ }
960
+ ],
961
+ "quality": [
962
+ {
963
+ "rating": 3
964
+ }
965
+ ],
966
+ "style": [
967
+ {
968
+ "rating": 4
969
+ }
970
+ ],
971
+ "annotator": 1,
972
+ "annotation_id": 25,
973
+ "created_at": "2024-12-24T11:15:36.688760Z",
974
+ "updated_at": "2024-12-24T11:15:36.688777Z",
975
+ "lead_time": 26.939
976
+ },
977
+ {
978
+ "audio": "\/data\/upload\/1\/6b789c7b-lXr0TsEs.wav",
979
+ "id": 26,
980
+ "gender": [
981
+ {
982
+ "rating": 3
983
+ }
984
+ ],
985
+ "tone": [
986
+ {
987
+ "rating": 3
988
+ }
989
+ ],
990
+ "pacing": [
991
+ {
992
+ "rating": 2
993
+ }
994
+ ],
995
+ "enunciation": [
996
+ {
997
+ "rating": 5
998
+ }
999
+ ],
1000
+ "quality": [
1001
+ {
1002
+ "rating": 1
1003
+ }
1004
+ ],
1005
+ "style": [
1006
+ {
1007
+ "rating": 4
1008
+ }
1009
+ ],
1010
+ "annotator": 1,
1011
+ "annotation_id": 26,
1012
+ "created_at": "2024-12-24T11:16:02.130089Z",
1013
+ "updated_at": "2024-12-24T11:16:02.130104Z",
1014
+ "lead_time": 25.222
1015
+ },
1016
+ {
1017
+ "audio": "\/data\/upload\/1\/54701cf9-Xmsf8FAI.wav",
1018
+ "id": 27,
1019
+ "gender": [
1020
+ {
1021
+ "rating": 3
1022
+ }
1023
+ ],
1024
+ "tone": [
1025
+ {
1026
+ "rating": 3
1027
+ }
1028
+ ],
1029
+ "pacing": [
1030
+ {
1031
+ "rating": 3
1032
+ }
1033
+ ],
1034
+ "enunciation": [
1035
+ {
1036
+ "rating": 5
1037
+ }
1038
+ ],
1039
+ "quality": [
1040
+ {
1041
+ "rating": 2
1042
+ }
1043
+ ],
1044
+ "style": [
1045
+ {
1046
+ "rating": 4
1047
+ }
1048
+ ],
1049
+ "annotator": 1,
1050
+ "annotation_id": 27,
1051
+ "created_at": "2024-12-24T11:16:24.322800Z",
1052
+ "updated_at": "2024-12-24T11:16:24.322816Z",
1053
+ "lead_time": 21.974
1054
+ },
1055
+ {
1056
+ "audio": "\/data\/upload\/1\/d4c11f09-k74bHcAg.wav",
1057
+ "id": 28,
1058
+ "gender": [
1059
+ {
1060
+ "rating": 2
1061
+ }
1062
+ ],
1063
+ "tone": [
1064
+ {
1065
+ "rating": 3
1066
+ }
1067
+ ],
1068
+ "pacing": [
1069
+ {
1070
+ "rating": 2
1071
+ }
1072
+ ],
1073
+ "enunciation": [
1074
+ {
1075
+ "rating": 4
1076
+ }
1077
+ ],
1078
+ "quality": [
1079
+ {
1080
+ "rating": 2
1081
+ }
1082
+ ],
1083
+ "style": [
1084
+ {
1085
+ "rating": 3
1086
+ }
1087
+ ],
1088
+ "annotator": 1,
1089
+ "annotation_id": 28,
1090
+ "created_at": "2024-12-24T11:16:45.824302Z",
1091
+ "updated_at": "2024-12-24T11:16:45.824318Z",
1092
+ "lead_time": 21.292
1093
+ },
1094
+ {
1095
+ "audio": "\/data\/upload\/1\/47f26601-mvoZlxHp.wav",
1096
+ "id": 29,
1097
+ "gender": [
1098
+ {
1099
+ "rating": 3
1100
+ }
1101
+ ],
1102
+ "tone": [
1103
+ {
1104
+ "rating": 3
1105
+ }
1106
+ ],
1107
+ "pacing": [
1108
+ {
1109
+ "rating": 3
1110
+ }
1111
+ ],
1112
+ "enunciation": [
1113
+ {
1114
+ "rating": 4
1115
+ }
1116
+ ],
1117
+ "style": [
1118
+ {
1119
+ "rating": 3
1120
+ }
1121
+ ],
1122
+ "quality": [
1123
+ {
1124
+ "rating": 3
1125
+ }
1126
+ ],
1127
+ "annotator": 1,
1128
+ "annotation_id": 29,
1129
+ "created_at": "2024-12-24T11:17:03.084102Z",
1130
+ "updated_at": "2024-12-24T11:17:03.084117Z",
1131
+ "lead_time": 17.05
1132
+ },
1133
+ {
1134
+ "audio": "\/data\/upload\/1\/bcfd3f48-PRqxs9Rw.wav",
1135
+ "id": 30,
1136
+ "gender": [
1137
+ {
1138
+ "rating": 1
1139
+ }
1140
+ ],
1141
+ "tone": [
1142
+ {
1143
+ "rating": 1
1144
+ }
1145
+ ],
1146
+ "pacing": [
1147
+ {
1148
+ "rating": 2
1149
+ }
1150
+ ],
1151
+ "enunciation": [
1152
+ {
1153
+ "rating": 3
1154
+ }
1155
+ ],
1156
+ "quality": [
1157
+ {
1158
+ "rating": 2
1159
+ }
1160
+ ],
1161
+ "style": [
1162
+ {
1163
+ "rating": 3
1164
+ }
1165
+ ],
1166
+ "annotator": 1,
1167
+ "annotation_id": 30,
1168
+ "created_at": "2024-12-24T11:17:37.512393Z",
1169
+ "updated_at": "2024-12-24T11:17:37.512413Z",
1170
+ "lead_time": 18.603
1171
+ },
1172
+ {
1173
+ "audio": "\/data\/upload\/1\/8a85e9db-BMW1WUKl.wav",
1174
+ "id": 31,
1175
+ "gender": [
1176
+ {
1177
+ "rating": 3
1178
+ }
1179
+ ],
1180
+ "tone": [
1181
+ {
1182
+ "rating": 3
1183
+ }
1184
+ ],
1185
+ "pacing": [
1186
+ {
1187
+ "rating": 2
1188
+ }
1189
+ ],
1190
+ "enunciation": [
1191
+ {
1192
+ "rating": 5
1193
+ }
1194
+ ],
1195
+ "quality": [
1196
+ {
1197
+ "rating": 4
1198
+ }
1199
+ ],
1200
+ "style": [
1201
+ {
1202
+ "rating": 5
1203
+ }
1204
+ ],
1205
+ "annotator": 1,
1206
+ "annotation_id": 31,
1207
+ "created_at": "2024-12-24T11:17:57.564014Z",
1208
+ "updated_at": "2024-12-24T11:17:57.564028Z",
1209
+ "lead_time": 19.839
1210
+ },
1211
+ {
1212
+ "audio": "\/data\/upload\/1\/2fe4e716-GWHpVwcn.wav",
1213
+ "id": 32,
1214
+ "gender": [
1215
+ {
1216
+ "rating": 1
1217
+ }
1218
+ ],
1219
+ "tone": [
1220
+ {
1221
+ "rating": 2
1222
+ }
1223
+ ],
1224
+ "pacing": [
1225
+ {
1226
+ "rating": 3
1227
+ }
1228
+ ],
1229
+ "enunciation": [
1230
+ {
1231
+ "rating": 4
1232
+ }
1233
+ ],
1234
+ "quality": [
1235
+ {
1236
+ "rating": 2
1237
+ }
1238
+ ],
1239
+ "style": [
1240
+ {
1241
+ "rating": 3
1242
+ }
1243
+ ],
1244
+ "annotator": 1,
1245
+ "annotation_id": 32,
1246
+ "created_at": "2024-12-24T11:18:16.433573Z",
1247
+ "updated_at": "2024-12-24T11:18:16.433589Z",
1248
+ "lead_time": 18.673
1249
+ },
1250
+ {
1251
+ "audio": "\/data\/upload\/1\/a398fdc8-THjkbhMN.wav",
1252
+ "id": 33,
1253
+ "gender": [
1254
+ {
1255
+ "rating": 3
1256
+ }
1257
+ ],
1258
+ "tone": [
1259
+ {
1260
+ "rating": 3
1261
+ }
1262
+ ],
1263
+ "pacing": [
1264
+ {
1265
+ "rating": 4
1266
+ }
1267
+ ],
1268
+ "enunciation": [
1269
+ {
1270
+ "rating": 3
1271
+ }
1272
+ ],
1273
+ "quality": [
1274
+ {
1275
+ "rating": 3
1276
+ }
1277
+ ],
1278
+ "style": [
1279
+ {
1280
+ "rating": 3
1281
+ }
1282
+ ],
1283
+ "annotator": 1,
1284
+ "annotation_id": 33,
1285
+ "created_at": "2024-12-24T11:18:33.011557Z",
1286
+ "updated_at": "2024-12-24T11:18:33.011573Z",
1287
+ "lead_time": 16.387
1288
+ },
1289
+ {
1290
+ "audio": "\/data\/upload\/1\/9479d680-MY4NGnyn.wav",
1291
+ "id": 34,
1292
+ "gender": [
1293
+ {
1294
+ "rating": 2
1295
+ }
1296
+ ],
1297
+ "tone": [
1298
+ {
1299
+ "rating": 4
1300
+ }
1301
+ ],
1302
+ "pacing": [
1303
+ {
1304
+ "rating": 4
1305
+ }
1306
+ ],
1307
+ "enunciation": [
1308
+ {
1309
+ "rating": 5
1310
+ }
1311
+ ],
1312
+ "quality": [
1313
+ {
1314
+ "rating": 4
1315
+ }
1316
+ ],
1317
+ "style": [
1318
+ {
1319
+ "rating": 3
1320
+ }
1321
+ ],
1322
+ "annotator": 1,
1323
+ "annotation_id": 34,
1324
+ "created_at": "2024-12-24T11:18:53.212410Z",
1325
+ "updated_at": "2024-12-24T11:18:53.212424Z",
1326
+ "lead_time": 20.005
1327
+ },
1328
+ {
1329
+ "audio": "\/data\/upload\/1\/099ef5d9-1EXWzyIB.wav",
1330
+ "id": 35,
1331
+ "quality": [
1332
+ {
1333
+ "rating": 1
1334
+ }
1335
+ ],
1336
+ "gender": [
1337
+ {
1338
+ "rating": 3
1339
+ }
1340
+ ],
1341
+ "tone": [
1342
+ {
1343
+ "rating": 3
1344
+ }
1345
+ ],
1346
+ "pacing": [
1347
+ {
1348
+ "rating": 4
1349
+ }
1350
+ ],
1351
+ "enunciation": [
1352
+ {
1353
+ "rating": 3
1354
+ }
1355
+ ],
1356
+ "style": [
1357
+ {
1358
+ "rating": 3
1359
+ }
1360
+ ],
1361
+ "annotator": 1,
1362
+ "annotation_id": 35,
1363
+ "created_at": "2024-12-24T11:19:15.157540Z",
1364
+ "updated_at": "2024-12-24T11:19:15.157555Z",
1365
+ "lead_time": 21.708
1366
+ },
1367
+ {
1368
+ "audio": "\/data\/upload\/1\/7757c410-iJzdxYU8.wav",
1369
+ "id": 36,
1370
+ "gender": [
1371
+ {
1372
+ "rating": 1
1373
+ }
1374
+ ],
1375
+ "tone": [
1376
+ {
1377
+ "rating": 1
1378
+ }
1379
+ ],
1380
+ "pacing": [
1381
+ {
1382
+ "rating": 3
1383
+ }
1384
+ ],
1385
+ "enunciation": [
1386
+ {
1387
+ "rating": 2
1388
+ }
1389
+ ],
1390
+ "quality": [
1391
+ {
1392
+ "rating": 2
1393
+ }
1394
+ ],
1395
+ "style": [
1396
+ {
1397
+ "rating": 3
1398
+ }
1399
+ ],
1400
+ "annotator": 1,
1401
+ "annotation_id": 36,
1402
+ "created_at": "2024-12-24T11:19:33.880308Z",
1403
+ "updated_at": "2024-12-24T11:19:33.880323Z",
1404
+ "lead_time": 18.515
1405
+ },
1406
+ {
1407
+ "audio": "\/data\/upload\/1\/160cf4d1-ClmchUus.wav",
1408
+ "id": 37,
1409
+ "gender": [
1410
+ {
1411
+ "rating": 3
1412
+ }
1413
+ ],
1414
+ "tone": [
1415
+ {
1416
+ "rating": 2
1417
+ }
1418
+ ],
1419
+ "pacing": [
1420
+ {
1421
+ "rating": 3
1422
+ }
1423
+ ],
1424
+ "enunciation": [
1425
+ {
1426
+ "rating": 4
1427
+ }
1428
+ ],
1429
+ "style": [
1430
+ {
1431
+ "rating": 5
1432
+ }
1433
+ ],
1434
+ "quality": [
1435
+ {
1436
+ "rating": 4
1437
+ }
1438
+ ],
1439
+ "annotator": 1,
1440
+ "annotation_id": 37,
1441
+ "created_at": "2024-12-24T11:19:49.775185Z",
1442
+ "updated_at": "2024-12-24T11:19:49.775199Z",
1443
+ "lead_time": 15.7
1444
+ },
1445
+ {
1446
+ "audio": "\/data\/upload\/1\/937219e2-YKQzFNZm.wav",
1447
+ "id": 38,
1448
+ "gender": [
1449
+ {
1450
+ "rating": 3
1451
+ }
1452
+ ],
1453
+ "tone": [
1454
+ {
1455
+ "rating": 3
1456
+ }
1457
+ ],
1458
+ "pacing": [
1459
+ {
1460
+ "rating": 4
1461
+ }
1462
+ ],
1463
+ "enunciation": [
1464
+ {
1465
+ "rating": 4
1466
+ }
1467
+ ],
1468
+ "quality": [
1469
+ {
1470
+ "rating": 3
1471
+ }
1472
+ ],
1473
+ "style": [
1474
+ {
1475
+ "rating": 3
1476
+ }
1477
+ ],
1478
+ "annotator": 1,
1479
+ "annotation_id": 38,
1480
+ "created_at": "2024-12-24T11:20:28.907802Z",
1481
+ "updated_at": "2024-12-24T11:20:28.907820Z",
1482
+ "lead_time": 17.855
1483
+ },
1484
+ {
1485
+ "audio": "\/data\/upload\/1\/85b05ec9-yYkxPNG5.wav",
1486
+ "id": 39,
1487
+ "quality": [
1488
+ {
1489
+ "rating": 1
1490
+ }
1491
+ ],
1492
+ "enunciation": [
1493
+ {
1494
+ "rating": 4
1495
+ }
1496
+ ],
1497
+ "pacing": [
1498
+ {
1499
+ "rating": 3
1500
+ }
1501
+ ],
1502
+ "tone": [
1503
+ {
1504
+ "rating": 3
1505
+ }
1506
+ ],
1507
+ "gender": [
1508
+ {
1509
+ "rating": 3
1510
+ }
1511
+ ],
1512
+ "style": [
1513
+ {
1514
+ "rating": 3
1515
+ }
1516
+ ],
1517
+ "annotator": 1,
1518
+ "annotation_id": 39,
1519
+ "created_at": "2024-12-24T11:20:49.809333Z",
1520
+ "updated_at": "2024-12-24T11:20:49.809349Z",
1521
+ "lead_time": 20.679
1522
+ },
1523
+ {
1524
+ "audio": "\/data\/upload\/1\/3b2dfcc0-cfyLTOg1.wav",
1525
+ "id": 40,
1526
+ "gender": [
1527
+ {
1528
+ "rating": 1
1529
+ }
1530
+ ],
1531
+ "tone": [
1532
+ {
1533
+ "rating": 1
1534
+ }
1535
+ ],
1536
+ "pacing": [
1537
+ {
1538
+ "rating": 3
1539
+ }
1540
+ ],
1541
+ "enunciation": [
1542
+ {
1543
+ "rating": 4
1544
+ }
1545
+ ],
1546
+ "quality": [
1547
+ {
1548
+ "rating": 3
1549
+ }
1550
+ ],
1551
+ "style": [
1552
+ {
1553
+ "rating": 3
1554
+ }
1555
+ ],
1556
+ "annotator": 1,
1557
+ "annotation_id": 40,
1558
+ "created_at": "2024-12-24T11:21:06.264451Z",
1559
+ "updated_at": "2024-12-24T11:21:06.264483Z",
1560
+ "lead_time": 16.248
1561
+ },
1562
+ {
1563
+ "audio": "\/data\/upload\/1\/2411d637-ACYkJHOa.wav",
1564
+ "id": 41,
1565
+ "gender": [
1566
+ {
1567
+ "rating": 3
1568
+ }
1569
+ ],
1570
+ "tone": [
1571
+ {
1572
+ "rating": 3
1573
+ }
1574
+ ],
1575
+ "pacing": [
1576
+ {
1577
+ "rating": 4
1578
+ }
1579
+ ],
1580
+ "enunciation": [
1581
+ {
1582
+ "rating": 3
1583
+ }
1584
+ ],
1585
+ "quality": [
1586
+ {
1587
+ "rating": 2
1588
+ }
1589
+ ],
1590
+ "style": [
1591
+ {
1592
+ "rating": 5
1593
+ }
1594
+ ],
1595
+ "annotator": 1,
1596
+ "annotation_id": 41,
1597
+ "created_at": "2024-12-24T11:21:24.839843Z",
1598
+ "updated_at": "2024-12-24T11:21:24.839861Z",
1599
+ "lead_time": 18.37
1600
+ },
1601
+ {
1602
+ "audio": "\/data\/upload\/1\/079a1904-IvSZLYao.wav",
1603
+ "id": 42,
1604
+ "gender": [
1605
+ {
1606
+ "rating": 4
1607
+ }
1608
+ ],
1609
+ "tone": [
1610
+ {
1611
+ "rating": 3
1612
+ }
1613
+ ],
1614
+ "pacing": [
1615
+ {
1616
+ "rating": 5
1617
+ }
1618
+ ],
1619
+ "enunciation": [
1620
+ {
1621
+ "rating": 4
1622
+ }
1623
+ ],
1624
+ "quality": [
1625
+ {
1626
+ "rating": 4
1627
+ }
1628
+ ],
1629
+ "style": [
1630
+ {
1631
+ "rating": 3
1632
+ }
1633
+ ],
1634
+ "annotator": 1,
1635
+ "annotation_id": 42,
1636
+ "created_at": "2024-12-24T11:21:41.007058Z",
1637
+ "updated_at": "2024-12-24T11:21:41.007073Z",
1638
+ "lead_time": 15.937
1639
+ },
1640
+ {
1641
+ "audio": "\/data\/upload\/1\/1a523970-Kaze7Zvg.wav",
1642
+ "id": 43,
1643
+ "gender": [
1644
+ {
1645
+ "rating": 3
1646
+ }
1647
+ ],
1648
+ "tone": [
1649
+ {
1650
+ "rating": 4
1651
+ }
1652
+ ],
1653
+ "pacing": [
1654
+ {
1655
+ "rating": 3
1656
+ }
1657
+ ],
1658
+ "enunciation": [
1659
+ {
1660
+ "rating": 4
1661
+ }
1662
+ ],
1663
+ "quality": [
1664
+ {
1665
+ "rating": 3
1666
+ }
1667
+ ],
1668
+ "style": [
1669
+ {
1670
+ "rating": 4
1671
+ }
1672
+ ],
1673
+ "annotator": 1,
1674
+ "annotation_id": 43,
1675
+ "created_at": "2024-12-24T11:22:04.349613Z",
1676
+ "updated_at": "2024-12-24T11:22:04.349628Z",
1677
+ "lead_time": 23.163
1678
+ },
1679
+ {
1680
+ "audio": "\/data\/upload\/1\/d157ccb8-xHX2MO3X.wav",
1681
+ "id": 44,
1682
+ "gender": [
1683
+ {
1684
+ "rating": 4
1685
+ }
1686
+ ],
1687
+ "tone": [
1688
+ {
1689
+ "rating": 5
1690
+ }
1691
+ ],
1692
+ "pacing": [
1693
+ {
1694
+ "rating": 5
1695
+ }
1696
+ ],
1697
+ "enunciation": [
1698
+ {
1699
+ "rating": 4
1700
+ }
1701
+ ],
1702
+ "quality": [
1703
+ {
1704
+ "rating": 2
1705
+ }
1706
+ ],
1707
+ "style": [
1708
+ {
1709
+ "rating": 3
1710
+ }
1711
+ ],
1712
+ "annotator": 1,
1713
+ "annotation_id": 44,
1714
+ "created_at": "2024-12-24T11:22:22.055807Z",
1715
+ "updated_at": "2024-12-24T11:22:22.055826Z",
1716
+ "lead_time": 17.508
1717
+ },
1718
+ {
1719
+ "audio": "\/data\/upload\/1\/c37c9115-dlEOGJ9f.wav",
1720
+ "id": 45,
1721
+ "gender": [
1722
+ {
1723
+ "rating": 5
1724
+ }
1725
+ ],
1726
+ "tone": [
1727
+ {
1728
+ "rating": 3
1729
+ }
1730
+ ],
1731
+ "pacing": [
1732
+ {
1733
+ "rating": 2
1734
+ }
1735
+ ],
1736
+ "enunciation": [
1737
+ {
1738
+ "rating": 5
1739
+ }
1740
+ ],
1741
+ "quality": [
1742
+ {
1743
+ "rating": 3
1744
+ }
1745
+ ],
1746
+ "style": [
1747
+ {
1748
+ "rating": 4
1749
+ }
1750
+ ],
1751
+ "annotator": 1,
1752
+ "annotation_id": 45,
1753
+ "created_at": "2024-12-24T11:22:39.871511Z",
1754
+ "updated_at": "2024-12-24T11:22:39.871527Z",
1755
+ "lead_time": 17.6
1756
+ },
1757
+ {
1758
+ "audio": "\/data\/upload\/1\/68bceda3-LL2BqHEb.wav",
1759
+ "id": 46,
1760
+ "tone": [
1761
+ {
1762
+ "rating": 4
1763
+ }
1764
+ ],
1765
+ "gender": [
1766
+ {
1767
+ "rating": 3
1768
+ }
1769
+ ],
1770
+ "pacing": [
1771
+ {
1772
+ "rating": 4
1773
+ }
1774
+ ],
1775
+ "enunciation": [
1776
+ {
1777
+ "rating": 4
1778
+ }
1779
+ ],
1780
+ "quality": [
1781
+ {
1782
+ "rating": 3
1783
+ }
1784
+ ],
1785
+ "style": [
1786
+ {
1787
+ "rating": 3
1788
+ }
1789
+ ],
1790
+ "annotator": 1,
1791
+ "annotation_id": 46,
1792
+ "created_at": "2024-12-24T11:23:08.481278Z",
1793
+ "updated_at": "2024-12-24T11:23:08.481294Z",
1794
+ "lead_time": 28.379
1795
+ },
1796
+ {
1797
+ "audio": "\/data\/upload\/1\/b1a204c2-nU9SXVYj.wav",
1798
+ "id": 47,
1799
+ "gender": [
1800
+ {
1801
+ "rating": 2
1802
+ }
1803
+ ],
1804
+ "tone": [
1805
+ {
1806
+ "rating": 2
1807
+ }
1808
+ ],
1809
+ "pacing": [
1810
+ {
1811
+ "rating": 2
1812
+ }
1813
+ ],
1814
+ "enunciation": [
1815
+ {
1816
+ "rating": 3
1817
+ }
1818
+ ],
1819
+ "quality": [
1820
+ {
1821
+ "rating": 3
1822
+ }
1823
+ ],
1824
+ "style": [
1825
+ {
1826
+ "rating": 4
1827
+ }
1828
+ ],
1829
+ "annotator": 1,
1830
+ "annotation_id": 47,
1831
+ "created_at": "2024-12-24T11:23:29.486018Z",
1832
+ "updated_at": "2024-12-24T11:23:29.486034Z",
1833
+ "lead_time": 20.793
1834
+ },
1835
+ {
1836
+ "audio": "\/data\/upload\/1\/0cd94ebd-7ZZ5zeJH.wav",
1837
+ "id": 48,
1838
+ "gender": [
1839
+ {
1840
+ "rating": 2
1841
+ }
1842
+ ],
1843
+ "tone": [
1844
+ {
1845
+ "rating": 3
1846
+ }
1847
+ ],
1848
+ "pacing": [
1849
+ {
1850
+ "rating": 2
1851
+ }
1852
+ ],
1853
+ "enunciation": [
1854
+ {
1855
+ "rating": 5
1856
+ }
1857
+ ],
1858
+ "quality": [
1859
+ {
1860
+ "rating": 3
1861
+ }
1862
+ ],
1863
+ "style": [
1864
+ {
1865
+ "rating": 4
1866
+ }
1867
+ ],
1868
+ "annotator": 1,
1869
+ "annotation_id": 48,
1870
+ "created_at": "2024-12-24T11:23:46.816956Z",
1871
+ "updated_at": "2024-12-24T11:23:46.816974Z",
1872
+ "lead_time": 17.117
1873
+ },
1874
+ {
1875
+ "audio": "\/data\/upload\/1\/0e73f1d1-vxsp9Z1b.wav",
1876
+ "id": 49,
1877
+ "gender": [
1878
+ {
1879
+ "rating": 3
1880
+ }
1881
+ ],
1882
+ "tone": [
1883
+ {
1884
+ "rating": 3
1885
+ }
1886
+ ],
1887
+ "pacing": [
1888
+ {
1889
+ "rating": 4
1890
+ }
1891
+ ],
1892
+ "enunciation": [
1893
+ {
1894
+ "rating": 3
1895
+ }
1896
+ ],
1897
+ "quality": [
1898
+ {
1899
+ "rating": 2
1900
+ }
1901
+ ],
1902
+ "style": [
1903
+ {
1904
+ "rating": 4
1905
+ }
1906
+ ],
1907
+ "annotator": 1,
1908
+ "annotation_id": 49,
1909
+ "created_at": "2024-12-24T11:24:04.381173Z",
1910
+ "updated_at": "2024-12-24T11:24:04.381190Z",
1911
+ "lead_time": 17.363
1912
+ },
1913
+ {
1914
+ "audio": "\/data\/upload\/1\/8dda7cf2-7IskTrY6.wav",
1915
+ "id": 50,
1916
+ "gender": [
1917
+ {
1918
+ "rating": 3
1919
+ }
1920
+ ],
1921
+ "tone": [
1922
+ {
1923
+ "rating": 2
1924
+ }
1925
+ ],
1926
+ "pacing": [
1927
+ {
1928
+ "rating": 2
1929
+ }
1930
+ ],
1931
+ "enunciation": [
1932
+ {
1933
+ "rating": 4
1934
+ }
1935
+ ],
1936
+ "quality": [
1937
+ {
1938
+ "rating": 2
1939
+ }
1940
+ ],
1941
+ "style": [
1942
+ {
1943
+ "rating": 5
1944
+ }
1945
+ ],
1946
+ "annotator": 1,
1947
+ "annotation_id": 50,
1948
+ "created_at": "2024-12-24T11:24:23.266193Z",
1949
+ "updated_at": "2024-12-24T11:24:23.266207Z",
1950
+ "lead_time": 18.68
1951
+ },
1952
+ {
1953
+ "audio": "\/data\/upload\/1\/d7107f33-TDGKyS0u.wav",
1954
+ "id": 51,
1955
+ "gender": [
1956
+ {
1957
+ "rating": 4
1958
+ }
1959
+ ],
1960
+ "tone": [
1961
+ {
1962
+ "rating": 3
1963
+ }
1964
+ ],
1965
+ "pacing": [
1966
+ {
1967
+ "rating": 3
1968
+ }
1969
+ ],
1970
+ "enunciation": [
1971
+ {
1972
+ "rating": 3
1973
+ }
1974
+ ],
1975
+ "quality": [
1976
+ {
1977
+ "rating": 3
1978
+ }
1979
+ ],
1980
+ "style": [
1981
+ {
1982
+ "rating": 4
1983
+ }
1984
+ ],
1985
+ "annotator": 1,
1986
+ "annotation_id": 51,
1987
+ "created_at": "2024-12-24T11:24:41.890559Z",
1988
+ "updated_at": "2024-12-24T11:24:41.890574Z",
1989
+ "lead_time": 18.436
1990
+ }
1991
+ ]
pca/generate_pca.py ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import json
3
+ from sklearn.decomposition import PCA
4
+ import joblib
5
+
6
+ # File paths
7
+ VOICES_JSON_PATH = "voices.json"
8
+ ANNOTATIONS_JSON_PATH = "annotations.json"
9
+ PCA_MODEL_PATH = "pca_model.pkl"
10
+ VECTOR_DIMENSION = 256 # Adjust based on your actual vector size
11
+ N_COMPONENTS = 6 # Number of PCA components for annotated features
12
+
13
+
14
+ def load_json(file_path):
15
+ """Load a JSON file."""
16
+ try:
17
+ with open(file_path, "r") as f:
18
+ return json.load(f)
19
+ except FileNotFoundError:
20
+ print(f"Error: {file_path} not found.")
21
+ return {}
22
+ except json.JSONDecodeError:
23
+ print(f"Error: {file_path} is not valid JSON.")
24
+ return {}
25
+
26
+
27
+ def extract_annotated_vectors():
28
+ """
29
+ Load annotations and match annotated features with style vectors.
30
+ Returns:
31
+ np.ndarray: Style vectors (256-dim).
32
+ np.ndarray: Annotated features (n_components-dim).
33
+ """
34
+ # Load data
35
+ voices_data = load_json(VOICES_JSON_PATH)
36
+ annotations = load_json(ANNOTATIONS_JSON_PATH)
37
+
38
+ style_vectors = []
39
+ annotated_features = []
40
+
41
+ # Extract annotated features and match style vectors
42
+ for item in annotations:
43
+ # Extract the key for the style vector
44
+ audio_path = item.get("audio", "")
45
+ key = audio_path.split("/")[-1].split("-")[-1].replace(".wav", "")
46
+
47
+ # Skip if the style vector is missing
48
+ if key not in voices_data:
49
+ print(f"Warning: No style vector found for key '{key}'. Skipping.")
50
+ continue
51
+
52
+ # Get the style vector and ensure it's flattened to 1D
53
+ style_vector = np.array(voices_data[key], dtype=np.float32).squeeze()
54
+ if style_vector.ndim != 1:
55
+ print(f"Skipping vector with unexpected dimensions: {style_vector.shape}")
56
+ continue
57
+
58
+ # Extract annotated features (pacing, gender, tone, enunciation, style)
59
+ features = [
60
+ item["gender"][0]["rating"],
61
+ item["tone"][0]["rating"],
62
+ item["pacing"][0]["rating"],
63
+ item["enunciation"][0]["rating"],
64
+ item["quality"][0]["rating"],
65
+ item["style"][0]["rating"],
66
+ ]
67
+
68
+ # Append data
69
+ style_vectors.append(style_vector)
70
+ annotated_features.append(features)
71
+
72
+ if not style_vectors or not annotated_features:
73
+ print("Error: No valid style vectors or annotations found.")
74
+ return None, None
75
+
76
+ return np.array(style_vectors), np.array(annotated_features)
77
+
78
+
79
+ def train_and_save_pca_model():
80
+ """
81
+ Train the PCA model using annotated style vectors and save the model.
82
+ """
83
+ # Extract style vectors and annotated features
84
+ style_vectors, annotated_features = extract_annotated_vectors()
85
+ if style_vectors is None or annotated_features is None:
86
+ print("Error: Unable to extract annotated data.")
87
+ return
88
+
89
+ # Validate shape of style_vectors
90
+ print(f"Style vectors shape: {style_vectors.shape}") # Should be (n_samples, 256)
91
+ print(
92
+ f"Annotated features shape: {annotated_features.shape}"
93
+ ) # Should be (n_samples, 5)
94
+
95
+ # Train PCA on style vectors
96
+ print(f"Training PCA on {len(style_vectors)} style vectors...")
97
+ pca = PCA(n_components=N_COMPONENTS)
98
+ pca.fit(style_vectors)
99
+
100
+ # Save PCA model
101
+ joblib.dump(pca, PCA_MODEL_PATH)
102
+ print(f"PCA model saved to {PCA_MODEL_PATH}.")
103
+
104
+ # Optionally save annotated features for downstream tasks
105
+ np.save("annotated_features.npy", annotated_features)
106
+ print("Annotated features saved to 'annotated_features.npy'.")
107
+
108
+
109
+ def load_pca_model():
110
+ """Load the trained PCA model."""
111
+ try:
112
+ return joblib.load(PCA_MODEL_PATH)
113
+ except FileNotFoundError:
114
+ print(f"Error: {PCA_MODEL_PATH} not found.")
115
+ return None
116
+
117
+
118
+ def reduce_to_pca_components(style_vector, pca):
119
+ """
120
+ Reduce a 256-dimensional style vector to PCA space.
121
+
122
+ Args:
123
+ style_vector (np.ndarray): Original style vector (256-dim).
124
+ pca (PCA): Trained PCA model.
125
+
126
+ Returns:
127
+ np.ndarray: Reduced vector in PCA space (n_components-dim).
128
+ """
129
+ return pca.transform([style_vector])[0]
130
+
131
+
132
+ def reconstruct_from_pca_components(pca_vector, pca):
133
+ """
134
+ Reconstruct the original style vector from PCA space.
135
+
136
+ Args:
137
+ pca_vector (np.ndarray): Vector in PCA space (n_components-dim).
138
+ pca (PCA): Trained PCA model.
139
+
140
+ Returns:
141
+ np.ndarray: Reconstructed style vector (256-dim).
142
+ """
143
+ return pca.inverse_transform([pca_vector])[0]
144
+
145
+
146
+ if __name__ == "__main__":
147
+ train_and_save_pca_model()
pca/pca_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1e81889d232f9a2c09355466b8069e29f3368f4ccc2e7d640be6223c1eea1d8c
3
+ size 8175
pca/voices.json ADDED
The diff for this file is too large to render. See raw diff
 
pca_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1e81889d232f9a2c09355466b8069e29f3368f4ccc2e7d640be6223c1eea1d8c
3
+ size 8175
pyproject.toml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "artificial-styletts2"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ dependencies = [
8
+ "audiofile>=1.5.0",
9
+ "cached-path>=1.6.6",
10
+ "einops>=0.8.0",
11
+ "einops-exts>=0.0.4",
12
+ "gradio>=5.9.1",
13
+ "huggingface-hub>=0.26.5",
14
+ "librosa>=0.10.2.post1",
15
+ "markdown>=3.7",
16
+ "matplotlib>=3.10.0",
17
+ "monotonic-align",
18
+ "munch>=4.0.0",
19
+ "nltk>=3.9.1",
20
+ "numpy==2.0",
21
+ "phonemizer>=3.3.0",
22
+ "scikit-learn>=1.6.0",
23
+ "soundfile>=0.12.1",
24
+ "torch>=2.5.1",
25
+ "torchaudio>=2.5.1",
26
+ "tqdm>=4.67.1",
27
+ "transformers>=4.47.1",
28
+ "txtsplit>=1.0.0",
29
+ ]
30
+
31
+ [tool.uv.sources]
32
+ monotonic-align = { git = "https://github.com/resemble-ai/monotonic_align.git" }
requirements.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ git+https://github.com/resemble-ai/monotonic_align.git
2
+ gradio
3
+ audiofile==1.5.0
4
+ cached_path
5
+ einops==0.8.0
6
+ einops_exts==0.0.4
7
+ huggingface_hub
8
+ librosa
9
+ Markdown==3.7
10
+ matplotlib==3.10.0
11
+ munch==4.0.0
12
+ nltk==3.9.1
13
+ numpy
14
+ phonemizer==3.3.0
15
+ scikit-learn
16
+ soundfile==0.12.1
17
+ torch
18
+ torchaudio==2.5.1
19
+ tqdm==4.67.1
20
+ transformers==4.47.1
21
+ txtsplit==1.0.0
text2speech.py ADDED
@@ -0,0 +1,598 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+
4
+ import json
5
+ import os
6
+ import argparse
7
+ import random
8
+ import string
9
+
10
+ import numpy as np
11
+ import soundfile as sf # Alias for clarity
12
+ import torch
13
+
14
+ import inference
15
+ from txtsplit import txtsplit # Import txtsplit
16
+ from typing import Optional, Tuple, List
17
+
18
+ VOICES_JSON_PATH = "voices.json" # Contains your known style vectors
19
+ RANDOM_VOICES_JSON_PATH = "random_voices.json" # We'll store newly sampled vectors here
20
+
21
+
22
+ ##############################################################################
23
+ # JSON LOAD/SAVE
24
+ ##############################################################################
25
+ def load_json(path: str) -> dict:
26
+ """
27
+ Load existing style vectors from the given JSON file.
28
+
29
+ Additionally, validates that all style vectors have the same length.
30
+
31
+ Args:
32
+ path (str): Path to the JSON file.
33
+
34
+ Returns:
35
+ dict: Loaded JSON data.
36
+ """
37
+ data = {}
38
+ if os.path.exists(path):
39
+ with open(path, "r") as f:
40
+ data = json.load(f)
41
+ # Verify all vectors have the same length
42
+ lengths = set(len(vec) for vec in data.values())
43
+ if len(lengths) > 1:
44
+ raise ValueError(
45
+ f"Inconsistent vector lengths found in '{path}': {lengths}. "
46
+ "All style vectors must have the same dimensionality."
47
+ )
48
+ print(f"Loaded {len(data)} style vectors from '{path}'.")
49
+ else:
50
+ print(f"No existing '{path}' found. Starting with an empty dictionary.")
51
+ return data
52
+
53
+
54
+ def save_json(data: dict, path: str) -> None:
55
+ """
56
+ Save a dict of style vectors to the given JSON file.
57
+
58
+ Args:
59
+ data (dict): Data to save.
60
+ path (str): Path to the JSON file.
61
+ """
62
+ with open(path, "w") as f:
63
+ json.dump(data, f, indent=2)
64
+ print(f"Saved {len(data)} style vectors to '{path}'.")
65
+
66
+
67
+ ##############################################################################
68
+ # GAUSSIAN FIT AND SAMPLING
69
+ ##############################################################################
70
+
71
+
72
+ def fit_gaussian_to_voices(voices_data: dict) -> Tuple[np.ndarray, np.ndarray]:
73
+ """
74
+ Fit a Gaussian distribution (mean & cov) to the style vectors in 'voices_data'.
75
+ 'voices_data' is a dict: { "key.wav": <list-of-floats>, ... }
76
+
77
+ Args:
78
+ voices_data (dict): Dictionary containing style vectors.
79
+
80
+ Returns:
81
+ Tuple[np.ndarray, np.ndarray]: Mean and covariance of the fitted Gaussian.
82
+ """
83
+ all_vecs = []
84
+
85
+ for key, data in voices_data.items():
86
+ # Convert to array
87
+ arr = np.array(data, dtype=np.float32)
88
+ # Squeeze out any dimension of size 1
89
+ arr = np.squeeze(arr)
90
+
91
+ if arr.ndim == 1:
92
+ # It's shape (D,)
93
+ all_vecs.append(arr)
94
+ else:
95
+ # If still not 1D, we skip or warn
96
+ print(
97
+ f"Skipping '{key}' because shape is {arr.shape}, not 1D after squeeze."
98
+ )
99
+
100
+ # Must have at least 2 valid vectors to compute a meaningful covariance
101
+ if len(all_vecs) < 2:
102
+ raise ValueError(
103
+ "Need at least 2 valid style vectors to fit a Gaussian distribution.\n"
104
+ "Check that each entry is 1D (or (1,D) which can be squeezed)."
105
+ )
106
+
107
+ # Stack into (N, D)
108
+ mat = np.stack(all_vecs, axis=0) # shape => (N, D)
109
+ # Sanity check
110
+ if mat.ndim != 2:
111
+ raise ValueError("Style vectors must collectively form a 2D array (N, D).")
112
+
113
+ # Compute mean & covariance
114
+ mean = np.mean(mat, axis=0) # shape (D,)
115
+ cov = np.cov(mat, rowvar=False) # shape (D, D)
116
+ print("Fitted Gaussian distribution to style vectors.")
117
+ return mean, cov
118
+
119
+
120
+ def sample_random_style(mean: np.ndarray, cov: np.ndarray) -> torch.Tensor:
121
+ """
122
+ Sample a random style vector from a Gaussian distribution.
123
+
124
+ Args:
125
+ mean (np.ndarray): Mean vector of the Gaussian.
126
+ cov (np.ndarray): Covariance matrix of the Gaussian.
127
+
128
+ Returns:
129
+ torch.Tensor: Sampled style vector as a tensor of shape (1, D).
130
+ """
131
+ # Sample from multivariate normal distribution
132
+ z = np.random.multivariate_normal(mean, cov)
133
+ # Convert to torch tensor
134
+ style_tensor = torch.tensor(z, dtype=torch.float32)
135
+ # Unsqueeze to shape (1, D)
136
+ style_tensor = style_tensor.unsqueeze(0)
137
+ print(f"Sampled a new random style vector with shape {style_tensor.shape}.")
138
+ return style_tensor
139
+
140
+
141
+ ##############################################################################
142
+ # UTILITIES
143
+ ##############################################################################
144
+
145
+
146
+ def parse_speed(value) -> float:
147
+ """
148
+ Convert 'value' into a float between 0.5 and 2.0 based on custom logic.
149
+
150
+ Examples:
151
+ parse_speed("120%") -> 1.2
152
+ parse_speed(0.3) -> 0.5 (clamped)
153
+ parse_speed(5) -> 2.0 (clamped)
154
+ parse_speed("100%") -> 1.0
155
+ parse_speed(1) -> 1.0
156
+ parse_speed(3) -> 2.0 (clamped)
157
+ parse_speed(50) -> 0.5
158
+ parse_speed(100) -> 1.0
159
+ parse_speed(130) -> 1.3
160
+ parse_speed("150") -> 1.5
161
+ """
162
+
163
+ # 1) If string ends with '%', parse percentage
164
+ if isinstance(value, str):
165
+ value = value.strip()
166
+ if value.endswith("%"):
167
+ numeric_str = value[:-1].strip() # remove '%' suffix
168
+ try:
169
+ f = float(numeric_str)
170
+ except ValueError:
171
+ print(
172
+ f"Invalid speed format '{value}'. Falling back to default speed 1.0."
173
+ )
174
+ f = 100.0 # fallback to "100%" -> 1.0
175
+ speed = f / 100.0
176
+ else:
177
+ # It's a normal string; parse as float
178
+ try:
179
+ f = float(value)
180
+ except ValueError:
181
+ print(
182
+ f"Invalid speed format '{value}'. Falling back to default speed 1.0."
183
+ )
184
+ f = 100.0 # fallback to "100" -> 1.0
185
+ # If f >= 10, treat as f/100. Example: 50 -> 0.5, 150 -> 1.5
186
+ speed = f / 100.0 if f >= 10 else f
187
+ else:
188
+ # 2) If not string, parse as float
189
+ try:
190
+ f = float(value)
191
+ except ValueError:
192
+ print(f"Invalid speed value '{value}'. Falling back to default speed 1.0.")
193
+ f = 1.0 # fallback to 1.0
194
+ # If f >= 10, treat as f/100
195
+ speed = f / 100.0 if f >= 10 else f
196
+
197
+ # 3) Clamp to [0.5, 2.0]
198
+ clamped_speed = max(0.5, min(2.0, speed))
199
+ if clamped_speed != speed:
200
+ print(f"Speed {speed} clamped to {clamped_speed}.")
201
+ else:
202
+ print(f"Parsed speed: {clamped_speed}")
203
+ return clamped_speed
204
+
205
+
206
+ def concatenate_audios(audios: List[np.ndarray]) -> np.ndarray:
207
+ """
208
+ Concatenate a list of NumPy audio arrays into a single array.
209
+
210
+ Args:
211
+ audios (List[np.ndarray]): List of audio waveforms to concatenate.
212
+
213
+ Returns:
214
+ np.ndarray: Concatenated audio waveform.
215
+ """
216
+ return np.concatenate(audios, axis=0)
217
+
218
+
219
+ ##############################################################################
220
+ # SYNTHESIS CORE FUNCTION
221
+ ##############################################################################
222
+ def synthesize_audio(
223
+ text_chunks: List[str],
224
+ style_vec: torch.Tensor,
225
+ speed: float,
226
+ alpha: float = 0.3,
227
+ beta: float = 0.7,
228
+ diffusion_steps: int = 7,
229
+ embedding_scale: float = 1.0,
230
+ ) -> Optional[np.ndarray]:
231
+ """
232
+ Core function to synthesize audio from text chunks and a style vector.
233
+
234
+ Args:
235
+ text_chunks (List[str]): List of text segments to synthesize.
236
+ style_vec (torch.Tensor): Style vector tensor of shape (1, D).
237
+ speed (float): Parsed speed factor.
238
+ alpha (float): Alpha parameter for inference.
239
+ beta (float): Beta parameter for inference.
240
+ diffusion_steps (int): Number of diffusion steps for inference.
241
+ embedding_scale (float): Embedding scale parameter.
242
+
243
+ Returns:
244
+ Optional[np.ndarray]: Concatenated audio waveform, or None if synthesis fails.
245
+ """
246
+ audios = []
247
+ for idx, chunk in enumerate(text_chunks, 1):
248
+ print(f"Synthesizing chunk {idx}/{len(text_chunks)}...")
249
+ audio_segment = inference.inference(
250
+ chunk,
251
+ style_vec,
252
+ alpha=alpha,
253
+ beta=beta,
254
+ diffusion_steps=diffusion_steps,
255
+ embedding_scale=embedding_scale,
256
+ speed=speed,
257
+ )
258
+ if audio_segment is not None:
259
+ audios.append(audio_segment)
260
+ print(f"Chunk {idx} synthesized successfully.")
261
+ else:
262
+ print(f"Inference returned None for text segment {idx}: {chunk[:30]}...")
263
+
264
+ if not audios:
265
+ print("No audio segments were generated.")
266
+ return None
267
+
268
+ # Concatenate all audio segments
269
+ print("Concatenating audio segments...")
270
+ full_audio = concatenate_audios(audios)
271
+ print(f"Concatenated audio length: {len(full_audio)} samples.")
272
+ return full_audio
273
+
274
+
275
+ ##############################################################################
276
+ # TTS USING A RANDOMLY SAMPLED STYLE
277
+ ##############################################################################
278
+ def tts_randomized(
279
+ text: str, speed: float = 1.2
280
+ ) -> Tuple[Optional[np.ndarray], Optional[torch.Tensor]]:
281
+ """
282
+ 1) Loads style vectors from voices.json
283
+ 2) Fits a Gaussian to those vectors
284
+ 3) Samples a new style vector from that distribution
285
+ 4) Saves it in random_voices.json
286
+ 5) Synthesizes TTS using that random style, handling long texts.
287
+
288
+ Args:
289
+ text (str): The text to be synthesized.
290
+ speed (float): Speed of the generated audio.
291
+
292
+ Returns:
293
+ Tuple[Optional[np.ndarray], Optional[torch.Tensor]]: (audio_waveform, style_vector)
294
+ """
295
+ # Load known style vectors from voices.json
296
+ voices_data = load_json(VOICES_JSON_PATH)
297
+ if not voices_data:
298
+ print(f"No data found in '{VOICES_JSON_PATH}'; cannot sample a random style.")
299
+ return None, None
300
+
301
+ # Fit Gaussian
302
+ try:
303
+ mean, cov = fit_gaussian_to_voices(voices_data)
304
+ except ValueError as e:
305
+ print(f"Error fitting Gaussian: {e}")
306
+ return None, None
307
+
308
+ # Sample new vector
309
+ random_style_tensor = sample_random_style(mean, cov)
310
+
311
+ # Optionally create a random key for storing
312
+ random_key = "random_" + "".join(random.choices(string.digits, k=6))
313
+ print(f"Generated random style key: '{random_key}'")
314
+
315
+ # Save in random_voices.json
316
+ random_voices_data = load_json(RANDOM_VOICES_JSON_PATH)
317
+ random_voices_data[random_key] = random_style_tensor.squeeze(0).tolist()
318
+ save_json(random_voices_data, RANDOM_VOICES_JSON_PATH)
319
+ print(
320
+ f"Saved random style vector to '{RANDOM_VOICES_JSON_PATH}' under key '{random_key}'."
321
+ )
322
+
323
+ # Parse speed
324
+ speed = parse_speed(speed)
325
+
326
+ # Split text into manageable chunks using txtsplit
327
+ print("Splitting text into chunks...")
328
+ text_chunks = txtsplit(text)
329
+ print(f"Text split into {len(text_chunks)} chunks.")
330
+
331
+ # Synthesize audio using the core function
332
+ full_audio = synthesize_audio(
333
+ text_chunks=text_chunks, style_vec=random_style_tensor, speed=speed
334
+ )
335
+
336
+ return full_audio, random_style_tensor
337
+
338
+
339
+ ##############################################################################
340
+ # NORMAL (NON-RANDOM) TTS LOGIC
341
+ ##############################################################################
342
+ def get_or_compute_style_vector(key_or_path: str, voices_data: dict) -> torch.Tensor:
343
+ """
344
+ If key_or_path is in voices_data, load it.
345
+ If it's a file path, compute style from audio.
346
+ Otherwise, raise an error.
347
+
348
+ Args:
349
+ key_or_path (str): Voice key or file path.
350
+ voices_data (dict): Dictionary of existing style vectors.
351
+
352
+ Returns:
353
+ torch.Tensor: Style vector tensor of shape (1, D).
354
+ """
355
+ if key_or_path in voices_data:
356
+ print(f"Found style vector for '{key_or_path}' in '{VOICES_JSON_PATH}'.")
357
+ style_vec = torch.tensor(voices_data[key_or_path], dtype=torch.float32)
358
+ elif os.path.isfile(key_or_path):
359
+ print(
360
+ f"No existing style for '{key_or_path}'. Attempting to compute from audio..."
361
+ )
362
+ style_vec = inference.compute_style(key_or_path)
363
+ if style_vec is None:
364
+ raise ValueError(f"Failed to compute style vector from '{key_or_path}'.")
365
+ voices_data[key_or_path] = style_vec.squeeze(0).tolist()
366
+ save_json(voices_data, VOICES_JSON_PATH)
367
+ print(
368
+ f"Computed and saved new style vector for '{key_or_path}' to '{VOICES_JSON_PATH}'."
369
+ )
370
+ else:
371
+ raise ValueError(
372
+ f"'{key_or_path}' not found in '{VOICES_JSON_PATH}' and is not a valid file path."
373
+ )
374
+
375
+ print(f"Original style vector shape: {style_vec.shape}")
376
+
377
+ # Ensure style_vec is 2D: (1, D)
378
+ if style_vec.dim() == 1:
379
+ style_vec = style_vec.unsqueeze(0)
380
+ print(f"Unsqueezed style vector to shape: {style_vec.shape}")
381
+ elif style_vec.dim() == 3:
382
+ style_vec = style_vec.squeeze(1)
383
+ print(f"Squeezed style vector to shape: {style_vec.shape}")
384
+ elif style_vec.dim() != 2:
385
+ raise ValueError(
386
+ f"Unexpected style vector dimensions: {style_vec.shape}. Expected 2D tensor."
387
+ )
388
+
389
+ print(f"Processed style vector shape: {style_vec.shape}")
390
+ return style_vec
391
+
392
+
393
+ def validate_style_vectors(voices_data: dict):
394
+ """
395
+ Validates that all style vectors in voices_data have the same dimensionality.
396
+
397
+ Args:
398
+ voices_data (dict): Dictionary containing style vectors.
399
+
400
+ Raises:
401
+ ValueError: If inconsistent vector lengths are found.
402
+ """
403
+ if not voices_data:
404
+ print("No style vectors to validate.")
405
+ return
406
+
407
+ lengths = set(len(vec) for vec in voices_data.values())
408
+ if len(lengths) > 1:
409
+ raise ValueError(
410
+ f"Inconsistent style vector lengths found: {lengths}. "
411
+ "All style vectors must have the same dimensionality."
412
+ )
413
+ print("All style vectors have consistent lengths.")
414
+
415
+
416
+ def tts_normal(text: str, voice: str, speed: float = 1.2) -> Optional[np.ndarray]:
417
+ """
418
+ Load an existing style vector from voices.json if it exists and has 'voice'.
419
+ Otherwise, if 'voice' is a valid .wav file, compute its style vector
420
+ and store it. Finally, run normal TTS with the obtained style vector,
421
+ handling long texts.
422
+
423
+ Args:
424
+ text (str): The text to be synthesized.
425
+ voice (str): Either the key in voices.json or a .wav file path.
426
+ speed (float): Speed of the generated audio.
427
+
428
+ Returns:
429
+ Optional[np.ndarray]: Synthesized audio waveform, or None if something fails.
430
+ """
431
+ # Load voices_data
432
+ try:
433
+ voices_data = load_json(VOICES_JSON_PATH)
434
+ validate_style_vectors(voices_data)
435
+ except ValueError as e:
436
+ print(f"Error loading/validating '{VOICES_JSON_PATH}': {e}")
437
+ return None
438
+
439
+ try:
440
+ style_vec = get_or_compute_style_vector(voice, voices_data)
441
+ except ValueError as e:
442
+ print(e)
443
+ return None
444
+
445
+ if style_vec is None:
446
+ print("No style vector found or computed; cannot run TTS.")
447
+ return None
448
+
449
+ # Parse speed
450
+ speed = parse_speed(speed)
451
+
452
+ # Split text into manageable chunks using txtsplit
453
+ print("Splitting text into chunks...")
454
+ text_chunks = txtsplit(text)
455
+ print(f"Text split into {len(text_chunks)} chunks.")
456
+
457
+ # Synthesize audio using the core function
458
+ full_audio = synthesize_audio(
459
+ text_chunks=text_chunks,
460
+ style_vec=style_vec,
461
+ speed=speed,
462
+ )
463
+
464
+ return full_audio
465
+
466
+
467
+ ##############################################################################
468
+ # TTS USING A DIRECTLY PROVIDED STYLE VECTOR
469
+ ##############################################################################
470
+ def tts_with_style_vector(
471
+ text: str,
472
+ style_vec: torch.Tensor,
473
+ speed: float = 1.2,
474
+ alpha: float = 0.3,
475
+ beta: float = 0.7,
476
+ diffusion_steps: int = 7,
477
+ embedding_scale: float = 1.0,
478
+ ) -> Optional[np.ndarray]:
479
+ """
480
+ Perform TTS synthesis using a *directly provided* style vector.
481
+
482
+ Args:
483
+ text (str): The text to be spoken.
484
+ style_vec (torch.Tensor): A PyTorch tensor representing the style vector.
485
+ Should be shape (1, D) if the pipeline expects a batch dimension.
486
+ speed (float): Speed factor for TTS. (Use parse_speed to handle fancy inputs.)
487
+ alpha (float): Weight for alpha in your inference function.
488
+ beta (float): Weight for beta in your inference function.
489
+ diffusion_steps (int): Number of diffusion steps for your TTS pipeline.
490
+ embedding_scale (float): Classifier-free guidance scale or similar.
491
+
492
+ Returns:
493
+ Optional[np.ndarray]: Synthesized audio waveform as a NumPy array (float32), or None if synthesis fails.
494
+ """
495
+ # Ensure style_vec has shape (1, D)
496
+ if style_vec.dim() == 1:
497
+ style_vec = style_vec.unsqueeze(0) # e.g. (D,) -> (1, D)
498
+ print(f"Unsqueezed style vector to shape: {style_vec.shape}")
499
+ elif style_vec.dim() == 3:
500
+ style_vec = style_vec.squeeze(1)
501
+ print(f"Squeezed style vector to shape: {style_vec.shape}")
502
+ elif style_vec.dim() != 2:
503
+ print(f"Unexpected style vector shape: {style_vec.shape}. Expected 2D tensor.")
504
+ return None
505
+
506
+ print(f"Style vector shape for synthesis: {style_vec.shape}")
507
+
508
+ # Parse speed
509
+ speed_val = parse_speed(speed)
510
+
511
+ # Split text into manageable chunks using txtsplit
512
+ print("Splitting text into chunks...")
513
+ text_chunks = txtsplit(text)
514
+ print(f"Text split into {len(text_chunks)} chunks.")
515
+
516
+ # Synthesize audio using the core function
517
+ full_audio = synthesize_audio(
518
+ text_chunks=text_chunks,
519
+ style_vec=style_vec,
520
+ speed=speed_val,
521
+ alpha=alpha,
522
+ beta=beta,
523
+ diffusion_steps=diffusion_steps,
524
+ embedding_scale=embedding_scale,
525
+ )
526
+
527
+ return full_audio
528
+
529
+
530
+ ##############################################################################
531
+ # MAIN CLI
532
+ ##############################################################################
533
+ def main():
534
+ parser = argparse.ArgumentParser(
535
+ description="Script to TTS with either random style sampling or normal style usage."
536
+ )
537
+ parser.add_argument(
538
+ "--text",
539
+ type=str,
540
+ default="Hello from a random style or normal style TTS script!",
541
+ help="Text to be spoken.",
542
+ )
543
+ parser.add_argument(
544
+ "--speed",
545
+ type=str, # Changed to str to handle inputs like "120%"
546
+ default="1.2",
547
+ help="Speed of the generated audio (e.g., '120%', '1.2').",
548
+ )
549
+ parser.add_argument(
550
+ "--voice",
551
+ type=str,
552
+ default=None,
553
+ help="If not using --randomize, specify a voice key or .wav path to load/compute style.",
554
+ )
555
+ parser.add_argument(
556
+ "--randomize",
557
+ action="store_true",
558
+ help="Use random style sampling from a fitted Gaussian of known styles.",
559
+ )
560
+ parser.add_argument(
561
+ "--output", type=str, default="output.wav", help="Output WAV file name."
562
+ )
563
+ args = parser.parse_args()
564
+
565
+ if args.randomize:
566
+ # Approach: random style from distribution
567
+ print("Sampling a new random style vector from 'voices.json' distribution...")
568
+ audio, _ = tts_randomized(text=args.text, speed=args.speed)
569
+ else:
570
+ # Normal approach: use a style key or fallback
571
+ print("Using normal style approach (loading or computing from 'voices.json').")
572
+ if args.voice is None:
573
+ print("Error: --voice must be specified when not using --randomize.")
574
+ parser.print_help()
575
+ return
576
+ audio = tts_normal(text=args.text, voice=args.voice, speed=args.speed)
577
+
578
+ if audio is not None:
579
+ # Ensure audio is a NumPy array of type float32
580
+ if not isinstance(audio, np.ndarray):
581
+ print("Error: Synthesized audio is not a NumPy array.")
582
+ return
583
+ if audio.dtype != np.float32:
584
+ print(f"Converting audio from {audio.dtype} to float32.")
585
+ audio = audio.astype(np.float32)
586
+
587
+ # Save the concatenated audio
588
+ try:
589
+ sf.write(args.output, audio, 24000)
590
+ print(f"Audio saved to '{args.output}'.")
591
+ except Exception as e:
592
+ print(f"Failed to save audio to '{args.output}': {e}")
593
+ else:
594
+ print("No audio was generated. Check logs above for errors.")
595
+
596
+
597
+ if __name__ == "__main__":
598
+ main()
uv.lock ADDED
The diff for this file is too large to render. See raw diff
 
voices.json ADDED
@@ -0,0 +1,2840 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Richard_Male_EN_US": [
3
+ 0.0838528722524643,
4
+ -0.20531457662582397,
5
+ -0.10166072100400925,
6
+ -0.08704791963100433,
7
+ -0.16887575387954712,
8
+ 0.07563386857509613,
9
+ -0.11252004653215408,
10
+ 0.0405205562710762,
11
+ 0.17604444921016693,
12
+ -0.0022975243628025055,
13
+ 0.07261361181735992,
14
+ 0.01948651298880577,
15
+ 0.03549861162900925,
16
+ 0.10135026276111603,
17
+ -0.028263121843338013,
18
+ 0.002969518303871155,
19
+ 0.0983193963766098,
20
+ -0.0498846136033535,
21
+ -0.059726495295763016,
22
+ 0.14428836107254028,
23
+ 0.22363322973251343,
24
+ -0.18453018367290497,
25
+ -0.02805022895336151,
26
+ -0.04543690383434296,
27
+ -0.11356891691684723,
28
+ -0.13455606997013092,
29
+ 0.09829540550708771,
30
+ -0.08688592910766602,
31
+ 0.07672901451587677,
32
+ -0.18105418980121613,
33
+ -0.18634817004203796,
34
+ 0.12421728670597076,
35
+ -0.007412530481815338,
36
+ -0.05725667625665665,
37
+ -0.1923050880432129,
38
+ 0.12631717324256897,
39
+ 0.19541586935520172,
40
+ -0.07617154717445374,
41
+ -0.08994933217763901,
42
+ -0.046437621116638184,
43
+ -0.043646734207868576,
44
+ -0.14466425776481628,
45
+ -0.10671895742416382,
46
+ -0.013705611228942871,
47
+ -0.207138791680336,
48
+ -0.752566933631897,
49
+ -0.1562556028366089,
50
+ 0.15995296835899353,
51
+ -0.17764419317245483,
52
+ 0.016572676599025726,
53
+ 0.10811036825180054,
54
+ 0.08399468660354614,
55
+ -0.08008511364459991,
56
+ -0.03857298195362091,
57
+ -0.0649266391992569,
58
+ -0.22515754401683807,
59
+ 0.11427924036979675,
60
+ -0.24663931131362915,
61
+ 0.1547779142856598,
62
+ -0.14620377123355865,
63
+ 0.5633630752563477,
64
+ -0.1662401258945465,
65
+ -0.09044578671455383,
66
+ 0.004183262586593628,
67
+ -0.0022140033543109894,
68
+ -0.04644201323390007,
69
+ 0.09777267277240753,
70
+ 0.007478602230548859,
71
+ 0.09729039669036865,
72
+ 0.014121796935796738,
73
+ -0.1283886432647705,
74
+ 0.016886277124285698,
75
+ 0.14353325963020325,
76
+ -0.019632495939731598,
77
+ -0.08626653999090195,
78
+ -0.13174456357955933,
79
+ -0.07509270310401917,
80
+ 0.13293522596359253,
81
+ -0.006963282823562622,
82
+ 0.04489506036043167,
83
+ 0.1364283263683319,
84
+ -0.023780206218361855,
85
+ -0.13672304153442383,
86
+ 0.0834212377667427,
87
+ -0.0881689265370369,
88
+ 0.12765783071517944,
89
+ -0.04777761548757553,
90
+ 0.006771944463253021,
91
+ 0.10008896142244339,
92
+ -0.0004957094788551331,
93
+ -0.3792557418346405,
94
+ -0.2995077669620514,
95
+ -0.18048475682735443,
96
+ -0.05329251289367676,
97
+ 0.15887054800987244,
98
+ -0.05502178147435188,
99
+ -0.002659738063812256,
100
+ -0.1500413417816162,
101
+ 0.02029288560152054,
102
+ -0.13041751086711884,
103
+ -0.02238699235022068,
104
+ 0.13223209977149963,
105
+ 0.008205652236938477,
106
+ 0.09628777951002121,
107
+ -0.005202248692512512,
108
+ 0.06322506815195084,
109
+ 0.2893131375312805,
110
+ 0.13000035285949707,
111
+ -0.12980809807777405,
112
+ -0.19357866048812866,
113
+ 0.010631434619426727,
114
+ -0.09848842024803162,
115
+ 0.43145453929901123,
116
+ -0.07535015791654587,
117
+ 0.030972477048635483,
118
+ -0.005491979420185089,
119
+ -0.23411263525485992,
120
+ 0.0034233778715133667,
121
+ -0.03615764528512955,
122
+ 0.11543036997318268,
123
+ -0.04371267557144165,
124
+ -0.11525161564350128,
125
+ 0.023816093802452087,
126
+ 0.028308294713497162,
127
+ -0.0039406418800354,
128
+ -0.13210836052894592,
129
+ 0.06155262142419815,
130
+ -0.17223545908927917,
131
+ -0.07812541723251343,
132
+ -0.04739491268992424,
133
+ 0.012321650981903076,
134
+ 0.2732156217098236,
135
+ -0.006376683712005615,
136
+ 0.2102227807044983,
137
+ -0.026796162128448486,
138
+ 0.023160047829151154,
139
+ 0.4432758688926697,
140
+ 0.05461269989609718,
141
+ -0.05827128142118454,
142
+ -0.23424984514713287,
143
+ 0.004663914442062378,
144
+ 0.22082097828388214,
145
+ 0.28713545203208923,
146
+ -0.08923299610614777,
147
+ -0.11788474768400192,
148
+ -0.14981813728809357,
149
+ 0.008348524570465088,
150
+ 0.15658962726593018,
151
+ 0.2602955102920532,
152
+ -0.32679831981658936,
153
+ -0.38099929690361023,
154
+ 0.22179332375526428,
155
+ -0.18678224086761475,
156
+ 0.1026342585682869,
157
+ 0.03508329764008522,
158
+ -0.0821741446852684,
159
+ -0.08279386162757874,
160
+ -0.2976434528827667,
161
+ -0.4842967391014099,
162
+ -0.22528287768363953,
163
+ 0.05699944496154785,
164
+ -0.16488179564476013,
165
+ -0.15537670254707336,
166
+ 0.17949746549129486,
167
+ -0.0883849710226059,
168
+ -0.07729420065879822,
169
+ -0.011546742171049118,
170
+ 0.055838439613580704,
171
+ -0.2754920423030853,
172
+ 0.24266156554222107,
173
+ -0.25005173683166504,
174
+ 0.15594978630542755,
175
+ -0.2281457483768463,
176
+ -0.022545501589775085,
177
+ -0.18430665135383606,
178
+ -0.09129363298416138,
179
+ -0.46234992146492004,
180
+ 0.18292169272899628,
181
+ 0.3553994596004486,
182
+ 0.18489143252372742,
183
+ 0.16369718313217163,
184
+ 0.06524109095335007,
185
+ -0.13083520531654358,
186
+ -0.004223830997943878,
187
+ 0.5248246192932129,
188
+ -0.4541511535644531,
189
+ 0.33416515588760376,
190
+ -0.23953655362129211,
191
+ 0.039670318365097046,
192
+ -0.2775384485721588,
193
+ -0.06698162853717804,
194
+ -0.04875987395644188,
195
+ 0.095211923122406,
196
+ -0.2521704435348511,
197
+ -0.1613994985818863,
198
+ -0.11273781210184097,
199
+ 0.089663565158844,
200
+ 0.4533567726612091,
201
+ -0.12889298796653748,
202
+ 0.04630730301141739,
203
+ 0.3440477252006531,
204
+ -0.29735368490219116,
205
+ -0.16942940652370453,
206
+ -0.30063536763191223,
207
+ -0.04887039214372635,
208
+ 0.07650876045227051,
209
+ -0.24708417057991028,
210
+ 0.11167217791080475,
211
+ 0.41300496459007263,
212
+ -0.1990889608860016,
213
+ -0.03628714382648468,
214
+ 0.1947430670261383,
215
+ 0.002185918390750885,
216
+ -0.1734754890203476,
217
+ 0.007325600832700729,
218
+ 0.0758146345615387,
219
+ 0.14343833923339844,
220
+ 0.16034956276416779,
221
+ 0.09238007664680481,
222
+ -0.14523102343082428,
223
+ 0.07370740175247192,
224
+ -0.05756370723247528,
225
+ 0.3471793532371521,
226
+ -0.09545806050300598,
227
+ -0.32518574595451355,
228
+ 0.01974405348300934,
229
+ -0.07413671910762787,
230
+ -0.07332949340343475,
231
+ 0.09689724445343018,
232
+ 0.33527132868766785,
233
+ 0.07647977769374847,
234
+ -0.07537016272544861,
235
+ 0.19729986786842346,
236
+ -0.054191842675209045,
237
+ 0.019159607589244843,
238
+ 0.28645795583724976,
239
+ -0.0029614195227622986,
240
+ 0.050225719809532166,
241
+ 0.058712102472782135,
242
+ -0.020884737372398376,
243
+ 0.32063227891921997,
244
+ 0.13905727863311768,
245
+ -0.08830951899290085,
246
+ -0.2068493664264679,
247
+ -0.5085070133209229,
248
+ -0.19245725870132446,
249
+ 0.07536047697067261,
250
+ 0.3520141541957855,
251
+ -0.004317941144108772,
252
+ 0.11286243796348572,
253
+ 0.4874182343482971,
254
+ 0.197415292263031,
255
+ -0.11710592359304428,
256
+ 0.41149505972862244,
257
+ -0.024338984861969948,
258
+ -0.3128387928009033
259
+ ],
260
+ "Chuck_Male_EN_US": [
261
+ -0.080739326775074,
262
+ -0.05186597257852554,
263
+ -0.04643955081701279,
264
+ -0.16995930671691895,
265
+ -0.08520634472370148,
266
+ 0.26354464888572693,
267
+ -0.16335150599479675,
268
+ 0.03762347623705864,
269
+ 0.12310560047626495,
270
+ 0.11882100999355316,
271
+ 0.25169509649276733,
272
+ 0.16642478108406067,
273
+ 0.04346868768334389,
274
+ 0.05879981815814972,
275
+ -0.10555227845907211,
276
+ 0.098129041492939,
277
+ 0.07805588096380234,
278
+ 0.07993364334106445,
279
+ 0.02878241240978241,
280
+ 0.10626713931560516,
281
+ 0.18884220719337463,
282
+ -0.15791675448417664,
283
+ -0.046336084604263306,
284
+ -0.06054564565420151,
285
+ 0.14667274057865143,
286
+ -0.1686663031578064,
287
+ 0.13676004111766815,
288
+ 0.017875753343105316,
289
+ 0.034988172352313995,
290
+ -0.15061573684215546,
291
+ -0.06622567772865295,
292
+ -0.018525442108511925,
293
+ -0.0815289169549942,
294
+ -0.11815841495990753,
295
+ -0.2079353630542755,
296
+ -0.12242597341537476,
297
+ 0.1685279756784439,
298
+ 0.005029462277889252,
299
+ -0.04868243634700775,
300
+ -0.006423652172088623,
301
+ -0.03062119334936142,
302
+ -0.10892745107412338,
303
+ -0.029393166303634644,
304
+ -0.14687927067279816,
305
+ -0.10593554377555847,
306
+ -0.7461926937103271,
307
+ -0.1311473250389099,
308
+ 0.19617816805839539,
309
+ 0.0034797536209225655,
310
+ 0.017870396375656128,
311
+ 0.1417236328125,
312
+ 0.14160263538360596,
313
+ -0.13305433094501495,
314
+ -0.019239917397499084,
315
+ 0.0768553614616394,
316
+ -0.2461501657962799,
317
+ 0.11662117391824722,
318
+ -0.3004859685897827,
319
+ 0.07660801708698273,
320
+ -0.08291581273078918,
321
+ 0.646587610244751,
322
+ 0.05630920082330704,
323
+ 0.018290594220161438,
324
+ -0.076407790184021,
325
+ -0.022635802626609802,
326
+ -0.033361952751874924,
327
+ 0.13813386857509613,
328
+ 0.23338472843170166,
329
+ 0.1526336669921875,
330
+ -0.010544595308601856,
331
+ 0.0645538792014122,
332
+ -0.12352045625448227,
333
+ 0.23500092327594757,
334
+ 0.023993253707885742,
335
+ -0.18476025760173798,
336
+ 0.08681316673755646,
337
+ -0.24495398998260498,
338
+ 0.1805841475725174,
339
+ 0.019407637417316437,
340
+ -0.1164683923125267,
341
+ 0.04219061881303787,
342
+ -0.05617094039916992,
343
+ -0.06486696004867554,
344
+ 0.11154982447624207,
345
+ 0.1624276340007782,
346
+ 0.037209782749414444,
347
+ 0.024621259421110153,
348
+ -0.011263281106948853,
349
+ 0.07437050342559814,
350
+ -0.027852090075612068,
351
+ -0.38197386264801025,
352
+ -0.12534263730049133,
353
+ -0.15090727806091309,
354
+ -0.016294121742248535,
355
+ 0.20195062458515167,
356
+ -0.10578630119562149,
357
+ 0.0834207683801651,
358
+ -0.2002831995487213,
359
+ 0.08801543712615967,
360
+ -0.1744777411222458,
361
+ -0.019703160971403122,
362
+ 0.18256394565105438,
363
+ 0.019218653440475464,
364
+ -0.06123323366045952,
365
+ 0.03127707168459892,
366
+ 0.1301468461751938,
367
+ 0.2009834200143814,
368
+ 0.07228143513202667,
369
+ -0.05553338676691055,
370
+ -0.44165605306625366,
371
+ 0.27527377009391785,
372
+ -0.08356539905071259,
373
+ 0.5484572649002075,
374
+ -0.22545355558395386,
375
+ 0.10192038118839264,
376
+ 0.13001194596290588,
377
+ -0.1598789542913437,
378
+ 0.03745634853839874,
379
+ 0.1973172128200531,
380
+ 0.10266508162021637,
381
+ -0.10606272518634796,
382
+ -0.043102242052555084,
383
+ 0.023647010326385498,
384
+ 0.0016689617186784744,
385
+ 0.35201117396354675,
386
+ -0.24116483330726624,
387
+ 0.022700302302837372,
388
+ -0.29655206203460693,
389
+ -0.11883702874183655,
390
+ 0.06606853753328323,
391
+ -0.09965553879737854,
392
+ 0.3298850655555725,
393
+ -0.10845916718244553,
394
+ 0.12123875319957733,
395
+ -0.2904745042324066,
396
+ 0.16466909646987915,
397
+ 0.5250499844551086,
398
+ 0.26844123005867004,
399
+ -0.1581430584192276,
400
+ -0.01679089665412903,
401
+ 0.10683909058570862,
402
+ 0.13829728960990906,
403
+ -0.0774451196193695,
404
+ -0.09715490788221359,
405
+ -0.15488898754119873,
406
+ 0.09843119978904724,
407
+ 0.18665491044521332,
408
+ 0.499192476272583,
409
+ 0.25495558977127075,
410
+ -0.3385838270187378,
411
+ -0.11540469527244568,
412
+ 0.3943556845188141,
413
+ -0.028287045657634735,
414
+ 0.10370328277349472,
415
+ 0.3033093214035034,
416
+ -0.13608571887016296,
417
+ -0.07120000571012497,
418
+ -0.14757874608039856,
419
+ -0.2092522382736206,
420
+ -0.349817156791687,
421
+ -0.042082756757736206,
422
+ -0.28092268109321594,
423
+ -0.3474852740764618,
424
+ -0.1188138797879219,
425
+ -0.3396819233894348,
426
+ 0.16733011603355408,
427
+ 0.09606117755174637,
428
+ 0.10766048729419708,
429
+ -0.19903156161308289,
430
+ -0.30723923444747925,
431
+ -0.3617871105670929,
432
+ -0.24389447271823883,
433
+ -0.33159559965133667,
434
+ -0.0794874057173729,
435
+ -0.17680421471595764,
436
+ -0.09732476621866226,
437
+ -0.6020764708518982,
438
+ -0.23046669363975525,
439
+ 0.4663076400756836,
440
+ -0.03177022933959961,
441
+ 0.31536608934402466,
442
+ 0.17449232935905457,
443
+ 0.19207462668418884,
444
+ -0.20476028323173523,
445
+ 0.3841668367385864,
446
+ -0.46485692262649536,
447
+ 0.07715408504009247,
448
+ -0.0481671467423439,
449
+ 0.06056290864944458,
450
+ 0.23023973405361176,
451
+ -0.44577276706695557,
452
+ 0.08608794212341309,
453
+ 0.174083411693573,
454
+ -0.20057682693004608,
455
+ 0.0015126615762710571,
456
+ 0.30561572313308716,
457
+ -0.0823325663805008,
458
+ 0.6210863590240479,
459
+ 0.12966740131378174,
460
+ -0.27340665459632874,
461
+ 0.31147849559783936,
462
+ 0.17376896739006042,
463
+ -0.28636378049850464,
464
+ 0.1761811077594757,
465
+ -0.3044331669807434,
466
+ 0.0771920382976532,
467
+ -0.04131172597408295,
468
+ 0.17433065176010132,
469
+ 0.11375144124031067,
470
+ -0.06075088679790497,
471
+ -0.21101467311382294,
472
+ 0.23215331137180328,
473
+ 0.3220982849597931,
474
+ -0.08772740513086319,
475
+ -0.1110156923532486,
476
+ 0.150890052318573,
477
+ 0.0899096205830574,
478
+ -0.11286906898021698,
479
+ -0.18477720022201538,
480
+ 0.12096066772937775,
481
+ 0.33322685956954956,
482
+ -0.2950510084629059,
483
+ 0.2563823163509369,
484
+ 0.11760752648115158,
485
+ -0.3458101749420166,
486
+ -0.4250616133213043,
487
+ -0.25533783435821533,
488
+ -0.2633964717388153,
489
+ -0.026663780212402344,
490
+ 0.4655682444572449,
491
+ 0.3740382790565491,
492
+ -0.05553853511810303,
493
+ 0.024137284606695175,
494
+ -0.044697582721710205,
495
+ 0.03481140360236168,
496
+ 0.01849237084388733,
497
+ -0.15648233890533447,
498
+ -0.719332218170166,
499
+ 0.5206979513168335,
500
+ -0.022456303238868713,
501
+ 0.6854866743087769,
502
+ -0.32744836807250977,
503
+ -0.08906684815883636,
504
+ -0.02081950753927231,
505
+ -0.8612825870513916,
506
+ -0.1892240047454834,
507
+ 0.07316698133945465,
508
+ 0.4908924400806427,
509
+ 0.30862411856651306,
510
+ 0.3830990791320801,
511
+ 0.38602370023727417,
512
+ 0.25254443287849426,
513
+ 0.26230084896087646,
514
+ 0.12000225484371185,
515
+ 0.0641913115978241,
516
+ -0.5113836526870728
517
+ ],
518
+ "Sol_Female_EN_US": [
519
+ 0.1268293261528015,
520
+ -0.24892280995845795,
521
+ 0.03928159922361374,
522
+ -0.08916330337524414,
523
+ -0.08921554684638977,
524
+ 0.018120769411325455,
525
+ 0.009445525705814362,
526
+ 0.09456969052553177,
527
+ 0.23499509692192078,
528
+ 0.12589207291603088,
529
+ 0.0817081481218338,
530
+ -0.05610091611742973,
531
+ -0.11433179676532745,
532
+ 0.031890347599983215,
533
+ 0.01497705653309822,
534
+ 0.10599376261234283,
535
+ 0.03902814909815788,
536
+ 0.01317581906914711,
537
+ 0.008249595761299133,
538
+ 0.010834900662302971,
539
+ 0.1323947310447693,
540
+ -0.14897435903549194,
541
+ -0.044409990310668945,
542
+ -0.004388481378555298,
543
+ -0.02122711017727852,
544
+ -0.21078309416770935,
545
+ 0.05238814279437065,
546
+ -0.24263539910316467,
547
+ 0.10478609800338745,
548
+ -0.046628206968307495,
549
+ -0.061156079173088074,
550
+ 0.04726453870534897,
551
+ 0.19356507062911987,
552
+ -0.10425321012735367,
553
+ -0.1245705783367157,
554
+ 0.2371465265750885,
555
+ 0.15406547486782074,
556
+ -0.11537078022956848,
557
+ -0.2574460506439209,
558
+ 0.11589224636554718,
559
+ 0.04982087016105652,
560
+ -0.0768856406211853,
561
+ -0.11789155006408691,
562
+ -0.13019400835037231,
563
+ 0.03559808060526848,
564
+ -0.47099581360816956,
565
+ 0.06938941776752472,
566
+ 0.19138163328170776,
567
+ 0.17706745862960815,
568
+ 0.035381563007831573,
569
+ 0.09636449813842773,
570
+ 0.07912801951169968,
571
+ 0.06765618175268173,
572
+ -0.1303500384092331,
573
+ -0.039963360875844955,
574
+ -0.04088369756937027,
575
+ 0.02034657448530197,
576
+ 0.008391611278057098,
577
+ 0.02184874564409256,
578
+ -0.03052680939435959,
579
+ 0.3498419225215912,
580
+ -0.07705945521593094,
581
+ -0.2935195565223694,
582
+ 0.034476667642593384,
583
+ -0.1314329355955124,
584
+ 0.20076632499694824,
585
+ 0.016021449118852615,
586
+ 0.23033341765403748,
587
+ -0.03349122032523155,
588
+ -0.18335162103176117,
589
+ 0.029580311849713326,
590
+ 0.018869629129767418,
591
+ 0.10253989696502686,
592
+ -0.09266053140163422,
593
+ -0.03108178824186325,
594
+ -0.03976592794060707,
595
+ 0.13201536238193512,
596
+ -0.028312936425209045,
597
+ -0.09032510221004486,
598
+ 0.05712374672293663,
599
+ -0.17886731028556824,
600
+ -0.00012268498539924622,
601
+ -0.17655304074287415,
602
+ 0.21560686826705933,
603
+ 0.07977418601512909,
604
+ 0.09157729148864746,
605
+ -0.08235643059015274,
606
+ -0.034677520394325256,
607
+ 0.2231934666633606,
608
+ 0.1851099133491516,
609
+ -0.2730552554130554,
610
+ -0.2409580945968628,
611
+ -0.273377925157547,
612
+ -0.11498671770095825,
613
+ 0.29265373945236206,
614
+ -0.10599346458911896,
615
+ -0.05672678351402283,
616
+ 0.026578396558761597,
617
+ -0.22945210337638855,
618
+ -0.08645745366811752,
619
+ 0.028000690042972565,
620
+ -0.13934218883514404,
621
+ 0.11353091895580292,
622
+ 0.060757409781217575,
623
+ 0.11343018710613251,
624
+ 0.053218141198158264,
625
+ 0.3181232810020447,
626
+ 0.10948897153139114,
627
+ 0.0357043594121933,
628
+ -0.1203552708029747,
629
+ 0.11475016921758652,
630
+ -0.005062885582447052,
631
+ 0.3342074751853943,
632
+ -0.1266603022813797,
633
+ 0.07479999959468842,
634
+ -0.008454116061329842,
635
+ 0.12023192644119263,
636
+ -0.03595118224620819,
637
+ 0.02898475155234337,
638
+ -0.020386993885040283,
639
+ 0.006668185815215111,
640
+ -0.15364103019237518,
641
+ -0.11951534450054169,
642
+ -0.0910012498497963,
643
+ 0.19956853985786438,
644
+ 0.04014497250318527,
645
+ -0.09457655251026154,
646
+ -0.12396776676177979,
647
+ 0.23229674994945526,
648
+ -0.15745335817337036,
649
+ 0.17193259298801422,
650
+ 0.040711648762226105,
651
+ -0.12352880835533142,
652
+ 0.018167633563280106,
653
+ -0.08081409335136414,
654
+ 0.23432570695877075,
655
+ 0.17171189188957214,
656
+ -0.03221336752176285,
657
+ 0.03773265331983566,
658
+ -0.06490489095449448,
659
+ -0.030414387583732605,
660
+ 0.4086611866950989,
661
+ 0.07678371667861938,
662
+ 0.15471185743808746,
663
+ 0.009691998362541199,
664
+ 0.21592354774475098,
665
+ 0.16220787167549133,
666
+ 0.13170170783996582,
667
+ 0.11527039110660553,
668
+ -0.3844143748283386,
669
+ 0.0421525314450264,
670
+ 0.4349702298641205,
671
+ -0.1686660647392273,
672
+ 0.005835492163896561,
673
+ -0.05163434147834778,
674
+ -0.38664859533309937,
675
+ 0.09356559813022614,
676
+ -0.2766155004501343,
677
+ -0.13494873046875,
678
+ -0.07143319398164749,
679
+ -0.0797828882932663,
680
+ -0.10624134540557861,
681
+ -0.05675575137138367,
682
+ 0.2754574418067932,
683
+ 0.11232379078865051,
684
+ -0.026216700673103333,
685
+ -0.37042930722236633,
686
+ 0.04595255106687546,
687
+ -0.08378663659095764,
688
+ 0.113258957862854,
689
+ -0.10497808456420898,
690
+ -0.3882599174976349,
691
+ -0.09268787503242493,
692
+ -0.009513184428215027,
693
+ -0.03547880798578262,
694
+ -0.11325360834598541,
695
+ -0.4920811951160431,
696
+ -0.2420617938041687,
697
+ 0.004631944000720978,
698
+ 0.3054035007953644,
699
+ 0.12272718548774719,
700
+ -0.1861076056957245,
701
+ -0.1328718364238739,
702
+ 0.22628089785575867,
703
+ 0.1674436330795288,
704
+ -0.2189907729625702,
705
+ 0.25414198637008667,
706
+ 0.08179888129234314,
707
+ 0.014794200658798218,
708
+ -0.45081019401550293,
709
+ -0.4995046854019165,
710
+ -0.0721922218799591,
711
+ 0.20731398463249207,
712
+ -0.07364560663700104,
713
+ -0.17112991213798523,
714
+ 0.20308616757392883,
715
+ 0.0781199038028717,
716
+ 0.20510229468345642,
717
+ -0.18790192902088165,
718
+ 0.08215056359767914,
719
+ 0.05191810801625252,
720
+ -0.15418048202991486,
721
+ -0.1164349764585495,
722
+ -0.30107319355010986,
723
+ -0.07877662777900696,
724
+ 0.006951943039894104,
725
+ -0.2136976420879364,
726
+ 0.18753382563591003,
727
+ 0.1558315008878708,
728
+ 0.03319445252418518,
729
+ -0.20069114863872528,
730
+ 0.5186187028884888,
731
+ 0.29910457134246826,
732
+ -0.022099845111370087,
733
+ -0.2004503756761551,
734
+ 0.11575216799974442,
735
+ 0.06575708091259003,
736
+ 0.29491111636161804,
737
+ 0.042733918875455856,
738
+ 0.13065889477729797,
739
+ -0.025842148810625076,
740
+ -0.48179322481155396,
741
+ 0.12712322175502777,
742
+ -0.22928954660892487,
743
+ -0.4731486141681671,
744
+ 0.2035326510667801,
745
+ -0.33841538429260254,
746
+ -0.09808406233787537,
747
+ 0.30838146805763245,
748
+ 0.06581465899944305,
749
+ 0.047930970788002014,
750
+ 0.01692097634077072,
751
+ 0.22469750046730042,
752
+ -0.05486059561371803,
753
+ 0.35013893246650696,
754
+ -0.283150851726532,
755
+ 0.05401553213596344,
756
+ -0.04293721914291382,
757
+ 0.03238523006439209,
758
+ 0.30903106927871704,
759
+ 0.318570613861084,
760
+ -0.36268168687820435,
761
+ 0.01699633151292801,
762
+ -0.122194804251194,
763
+ -0.08210300654172897,
764
+ -0.08749544620513916,
765
+ 0.04085458070039749,
766
+ 0.26824674010276794,
767
+ -0.20407041907310486,
768
+ 0.3028109669685364,
769
+ 0.11649337410926819,
770
+ -0.06361576169729233,
771
+ 0.022716812789440155,
772
+ 0.8145036101341248,
773
+ -0.001978829503059387,
774
+ -0.19634583592414856
775
+ ],
776
+ "Georgia_Female_EN_US": [
777
+ 0.14149390161037445,
778
+ -0.19759099185466766,
779
+ 0.029538815841078758,
780
+ -0.1644008457660675,
781
+ -0.16974563896656036,
782
+ 0.15899056196212769,
783
+ -0.08187974989414215,
784
+ 0.06346520036458969,
785
+ 0.171818345785141,
786
+ -0.03900427371263504,
787
+ 0.08924897015094757,
788
+ 0.11517727375030518,
789
+ -0.09470553696155548,
790
+ 0.039182037115097046,
791
+ -0.0800875872373581,
792
+ 0.027626454830169678,
793
+ 0.057931605726480484,
794
+ -0.05594071373343468,
795
+ -0.01764649897813797,
796
+ 0.1859845221042633,
797
+ 0.19512777030467987,
798
+ -0.2715531587600708,
799
+ -0.15435153245925903,
800
+ -0.07994608581066132,
801
+ 0.0034161433577537537,
802
+ -0.27405399084091187,
803
+ 0.06616479158401489,
804
+ 0.028649676591157913,
805
+ 0.24419546127319336,
806
+ -0.053172968327999115,
807
+ -0.06803376972675323,
808
+ 0.08285264670848846,
809
+ -0.03827327489852905,
810
+ -0.05404618754982948,
811
+ -0.1717120110988617,
812
+ 0.0565122552216053,
813
+ 0.12560471892356873,
814
+ -0.07519722729921341,
815
+ -0.005836378782987595,
816
+ -0.049631841480731964,
817
+ 0.035924024879932404,
818
+ -0.20555508136749268,
819
+ -0.16342787444591522,
820
+ -0.011107422411441803,
821
+ -0.09510314464569092,
822
+ -0.8373715877532959,
823
+ -0.056464750319719315,
824
+ 0.15504246950149536,
825
+ 0.12261460721492767,
826
+ -0.002536684274673462,
827
+ 0.14500755071640015,
828
+ 0.17729829251766205,
829
+ -0.16478273272514343,
830
+ -0.07822693139314651,
831
+ 0.03328864276409149,
832
+ -0.3484482765197754,
833
+ 0.07604808360338211,
834
+ -0.22294224798679352,
835
+ 0.06523670256137848,
836
+ -0.22709456086158752,
837
+ 0.8876799941062927,
838
+ 0.0027947500348091125,
839
+ 0.0007318109273910522,
840
+ 0.002863973379135132,
841
+ -0.21034874022006989,
842
+ 0.051948100328445435,
843
+ -0.004550091922283173,
844
+ 0.17473770678043365,
845
+ 0.1153031662106514,
846
+ -0.09051527082920074,
847
+ -0.07489325851202011,
848
+ 0.03644700348377228,
849
+ 0.1395515352487564,
850
+ -0.010498672723770142,
851
+ -0.16194367408752441,
852
+ 0.11820540577173233,
853
+ -0.1125202625989914,
854
+ 0.07222796976566315,
855
+ 0.0924602597951889,
856
+ 0.009883157908916473,
857
+ 0.14233753085136414,
858
+ -0.04211493209004402,
859
+ -0.09790381044149399,
860
+ 0.1432836949825287,
861
+ -0.0207438375800848,
862
+ 0.09433138370513916,
863
+ 0.03480076417326927,
864
+ 0.014073198661208153,
865
+ 0.1459684669971466,
866
+ 0.06838452816009521,
867
+ -0.4587509036064148,
868
+ -0.24484041333198547,
869
+ -0.13059453666210175,
870
+ -0.014020655304193497,
871
+ -0.04615045711398125,
872
+ -0.10020460933446884,
873
+ 0.05875978618860245,
874
+ -0.11167144775390625,
875
+ -0.08788008987903595,
876
+ -0.06586126983165741,
877
+ 0.0656682550907135,
878
+ 0.06709162890911102,
879
+ 0.02795044332742691,
880
+ 0.11588016897439957,
881
+ -0.09147179126739502,
882
+ 0.08282454311847687,
883
+ 0.19108889997005463,
884
+ -0.09372390806674957,
885
+ -0.0004408508539199829,
886
+ -0.40825721621513367,
887
+ 0.24378983676433563,
888
+ 0.06450286507606506,
889
+ 0.40147995948791504,
890
+ -0.12383461743593216,
891
+ 0.09264419227838516,
892
+ 0.04705287888646126,
893
+ -0.0979108139872551,
894
+ -0.04610448330640793,
895
+ 0.06577446311712265,
896
+ 0.06107745319604874,
897
+ -0.0739186629652977,
898
+ 0.03969721123576164,
899
+ 0.0321660116314888,
900
+ 0.2023421972990036,
901
+ 0.22365602850914001,
902
+ -0.33337128162384033,
903
+ 0.10086256265640259,
904
+ -0.23017814755439758,
905
+ 0.15227298438549042,
906
+ 0.08262811601161957,
907
+ 0.028533905744552612,
908
+ 0.16887661814689636,
909
+ -0.1553392857313156,
910
+ 0.04320569336414337,
911
+ -0.18707242608070374,
912
+ 0.021115079522132874,
913
+ 0.3647507131099701,
914
+ 0.2119525820016861,
915
+ -0.02559354156255722,
916
+ 0.268862247467041,
917
+ -0.03270912170410156,
918
+ 0.01871364563703537,
919
+ -0.0919923335313797,
920
+ -0.13874371349811554,
921
+ -0.092261902987957,
922
+ 0.0468045249581337,
923
+ 0.29371997714042664,
924
+ 0.21063821017742157,
925
+ -0.12585729360580444,
926
+ -0.4214266538619995,
927
+ -0.17777106165885925,
928
+ 0.14042110741138458,
929
+ -0.1407075822353363,
930
+ -0.1934659481048584,
931
+ 0.015365049242973328,
932
+ -0.12806877493858337,
933
+ -0.01690494269132614,
934
+ -0.2808881402015686,
935
+ -0.32276445627212524,
936
+ -0.04267498850822449,
937
+ 0.04772596061229706,
938
+ -0.13011249899864197,
939
+ -0.4758068323135376,
940
+ 0.21355567872524261,
941
+ -0.12164445221424103,
942
+ -0.10112264752388,
943
+ -0.0498490147292614,
944
+ 0.2474687546491623,
945
+ -0.40088728070259094,
946
+ -0.21887987852096558,
947
+ -0.4579368829727173,
948
+ -0.21036852896213531,
949
+ -0.18377023935317993,
950
+ -0.23978865146636963,
951
+ -0.15847837924957275,
952
+ -0.36417555809020996,
953
+ -0.1878042072057724,
954
+ -0.12206757068634033,
955
+ 0.4226543605327606,
956
+ -0.00703008845448494,
957
+ 0.17988801002502441,
958
+ 0.235824853181839,
959
+ 0.0072716958820819855,
960
+ -0.022622771561145782,
961
+ 0.4673866033554077,
962
+ -0.4320169687271118,
963
+ 0.27932173013687134,
964
+ -0.1372895985841751,
965
+ 0.13946086168289185,
966
+ -0.011557169258594513,
967
+ -0.11092820018529892,
968
+ -0.0025858357548713684,
969
+ 0.06566678732633591,
970
+ -0.25665807723999023,
971
+ -0.2400297075510025,
972
+ 0.055859118700027466,
973
+ -0.24934203922748566,
974
+ -0.05649476498365402,
975
+ -0.021823860704898834,
976
+ 0.07491856813430786,
977
+ 0.028743356466293335,
978
+ 0.21002137660980225,
979
+ -0.5215728282928467,
980
+ 0.05622958019375801,
981
+ -0.2222532033920288,
982
+ 0.1794230341911316,
983
+ 0.11855436116456985,
984
+ 0.14668777585029602,
985
+ 0.45487338304519653,
986
+ -0.1859143078327179,
987
+ -0.05654382333159447,
988
+ -0.16731679439544678,
989
+ -0.1562391221523285,
990
+ 0.16424456238746643,
991
+ 0.2154158502817154,
992
+ 0.3380601406097412,
993
+ 0.12264357507228851,
994
+ 0.3392817974090576,
995
+ -0.060549046844244,
996
+ -0.14765986800193787,
997
+ 0.11267101764678955,
998
+ -0.24056652188301086,
999
+ 0.03510596603155136,
1000
+ 0.10618807375431061,
1001
+ -0.15641556680202484,
1002
+ -0.24543322622776031,
1003
+ -0.19173413515090942,
1004
+ -0.011205855756998062,
1005
+ 0.24790503084659576,
1006
+ 0.32398396730422974,
1007
+ 0.22276073694229126,
1008
+ 0.018482085317373276,
1009
+ -0.03579630330204964,
1010
+ 0.05034150183200836,
1011
+ 0.29536929726600647,
1012
+ -0.050280749797821045,
1013
+ -0.014656215906143188,
1014
+ -0.3677038550376892,
1015
+ 0.41170692443847656,
1016
+ 0.15874658524990082,
1017
+ 0.34870871901512146,
1018
+ -0.23689004778862,
1019
+ 0.2970763146877289,
1020
+ 0.0950806587934494,
1021
+ -0.1269141584634781,
1022
+ -0.11931035667657852,
1023
+ 0.13633345067501068,
1024
+ 0.42843636870384216,
1025
+ 0.03449300676584244,
1026
+ 0.4283212721347809,
1027
+ 0.2762477397918701,
1028
+ 0.1679811179637909,
1029
+ 0.2898493707180023,
1030
+ -0.04722334071993828,
1031
+ -0.047664619982242584,
1032
+ -0.22933121025562286
1033
+ ],
1034
+ "Marry_Female_EN_US": [
1035
+ 0.10095467418432236,
1036
+ 0.046844299882650375,
1037
+ 0.05421638488769531,
1038
+ -0.09417131543159485,
1039
+ -0.18054454028606415,
1040
+ 0.0935884565114975,
1041
+ -0.11312611401081085,
1042
+ 0.02784895896911621,
1043
+ 0.13980317115783691,
1044
+ -0.08165936917066574,
1045
+ 0.10532249510288239,
1046
+ 0.09783805906772614,
1047
+ 0.01645722985267639,
1048
+ 0.04216833412647247,
1049
+ -0.1025347113609314,
1050
+ 0.09854228794574738,
1051
+ 0.22359934449195862,
1052
+ 0.08323220163583755,
1053
+ 0.003406684845685959,
1054
+ 0.30394530296325684,
1055
+ 0.3451034426689148,
1056
+ -0.29881906509399414,
1057
+ -0.08311712741851807,
1058
+ -0.109955795109272,
1059
+ 0.07522188872098923,
1060
+ -0.38127946853637695,
1061
+ 0.029290571808815002,
1062
+ -0.012949233874678612,
1063
+ 0.22986799478530884,
1064
+ -0.22929272055625916,
1065
+ -0.11333343386650085,
1066
+ 0.1066955029964447,
1067
+ -0.03432668745517731,
1068
+ -0.10237376391887665,
1069
+ -0.11407271027565002,
1070
+ -0.01221979409456253,
1071
+ 0.19828736782073975,
1072
+ -0.08432801812887192,
1073
+ -0.07885870337486267,
1074
+ -0.09633795917034149,
1075
+ 0.07740725576877594,
1076
+ -0.14024686813354492,
1077
+ 0.007659006863832474,
1078
+ -0.061528440564870834,
1079
+ -0.15116117894649506,
1080
+ -0.9346913695335388,
1081
+ -0.19321316480636597,
1082
+ 0.09346023201942444,
1083
+ 0.008720653131604195,
1084
+ 0.00935569778084755,
1085
+ 0.059522844851017,
1086
+ -0.0004963874816894531,
1087
+ -0.11127720773220062,
1088
+ -0.015941940248012543,
1089
+ 0.11759459227323532,
1090
+ -0.38565748929977417,
1091
+ 0.014210086315870285,
1092
+ -0.4402802586555481,
1093
+ -0.03058554232120514,
1094
+ -0.15320685505867004,
1095
+ 0.925262451171875,
1096
+ 0.05237797647714615,
1097
+ -0.06457516551017761,
1098
+ 0.04277027025818825,
1099
+ -0.09071764349937439,
1100
+ -0.023430675268173218,
1101
+ 0.018660694360733032,
1102
+ 0.28416356444358826,
1103
+ 0.15927383303642273,
1104
+ -0.036094918847084045,
1105
+ -0.18289241194725037,
1106
+ -0.16174408793449402,
1107
+ 0.1352432817220688,
1108
+ -0.11155793070793152,
1109
+ -0.21458107233047485,
1110
+ -0.007756996899843216,
1111
+ -0.17188167572021484,
1112
+ -0.014599844813346863,
1113
+ 0.03282542526721954,
1114
+ 0.10045303404331207,
1115
+ 0.11301460862159729,
1116
+ -0.04795491322875023,
1117
+ -0.05172593891620636,
1118
+ 0.11332973837852478,
1119
+ 0.07555423676967621,
1120
+ 0.10994540899991989,
1121
+ -0.07060486078262329,
1122
+ 0.004575258120894432,
1123
+ 0.11668689548969269,
1124
+ 0.10401762276887894,
1125
+ -0.6524990797042847,
1126
+ -0.2616415023803711,
1127
+ -0.2577282190322876,
1128
+ 0.013369720429182053,
1129
+ 0.015914201736450195,
1130
+ -0.1528300940990448,
1131
+ 0.06751468777656555,
1132
+ -0.2593517601490021,
1133
+ -0.04114726930856705,
1134
+ -0.12167482078075409,
1135
+ -0.016297057271003723,
1136
+ 0.050480689853429794,
1137
+ 0.08136023581027985,
1138
+ 0.10589707642793655,
1139
+ 0.0009140158072113991,
1140
+ 0.09637215733528137,
1141
+ 0.13627931475639343,
1142
+ -0.08097885549068451,
1143
+ -0.04615870863199234,
1144
+ -0.3712182939052582,
1145
+ 0.17477694153785706,
1146
+ -0.03713107109069824,
1147
+ 0.3938117027282715,
1148
+ -0.16526120901107788,
1149
+ 0.046960875391960144,
1150
+ 0.13634932041168213,
1151
+ -0.2535812258720398,
1152
+ -0.004662476480007172,
1153
+ -0.1287195086479187,
1154
+ 0.04682536423206329,
1155
+ -0.0553663894534111,
1156
+ -0.007208423689007759,
1157
+ -0.03398251533508301,
1158
+ 0.04032691568136215,
1159
+ 0.10826413333415985,
1160
+ -0.3297663927078247,
1161
+ 0.12369295954704285,
1162
+ -0.22297564148902893,
1163
+ 0.016204068437218666,
1164
+ 0.22467367351055145,
1165
+ 0.06251698732376099,
1166
+ 0.25536197423934937,
1167
+ -0.0313156396150589,
1168
+ 0.23897168040275574,
1169
+ -0.125069260597229,
1170
+ 0.05682749301195145,
1171
+ 0.2709246873855591,
1172
+ 0.11623440682888031,
1173
+ -0.08916947990655899,
1174
+ -0.0015965849161148071,
1175
+ 0.021189596503973007,
1176
+ 0.1729092001914978,
1177
+ -0.20169132947921753,
1178
+ -0.010327596217393875,
1179
+ -0.036886122077703476,
1180
+ 0.01917070895433426,
1181
+ 0.18902111053466797,
1182
+ 0.5179728269577026,
1183
+ 0.31896597146987915,
1184
+ -0.7427007555961609,
1185
+ -0.4137954115867615,
1186
+ 0.06960596889257431,
1187
+ 0.06620097160339355,
1188
+ -0.1536514014005661,
1189
+ 0.1503698229789734,
1190
+ -0.14556577801704407,
1191
+ 0.14588545262813568,
1192
+ -0.18597960472106934,
1193
+ -0.342746764421463,
1194
+ 0.05013357102870941,
1195
+ -0.02868656814098358,
1196
+ -0.26822707056999207,
1197
+ -0.3400660753250122,
1198
+ -0.02838587388396263,
1199
+ 0.004168674349784851,
1200
+ -0.17664480209350586,
1201
+ 0.020639866590499878,
1202
+ 0.14682283997535706,
1203
+ -0.2350459098815918,
1204
+ -0.19191408157348633,
1205
+ -0.1417776346206665,
1206
+ -0.15922360122203827,
1207
+ -0.2131480872631073,
1208
+ -0.07812295854091644,
1209
+ -0.22641682624816895,
1210
+ -0.08451198041439056,
1211
+ -0.27697646617889404,
1212
+ -0.16417096555233002,
1213
+ 0.17140953242778778,
1214
+ -0.014865081757307053,
1215
+ 0.1978265941143036,
1216
+ 0.17148619890213013,
1217
+ 0.051121003925800323,
1218
+ -0.0503043532371521,
1219
+ 0.4206354022026062,
1220
+ -0.6276400089263916,
1221
+ 0.19541236758232117,
1222
+ -0.05150662735104561,
1223
+ 0.20107480883598328,
1224
+ 0.30449116230010986,
1225
+ -0.2169422060251236,
1226
+ 0.07420805841684341,
1227
+ 0.19388242065906525,
1228
+ -0.09795433282852173,
1229
+ -0.3506614565849304,
1230
+ 0.29341161251068115,
1231
+ 0.036286331713199615,
1232
+ 0.2008945643901825,
1233
+ -0.13470220565795898,
1234
+ -0.3342384099960327,
1235
+ 0.049659550189971924,
1236
+ -0.23403503000736237,
1237
+ -0.2438443899154663,
1238
+ -0.0661768913269043,
1239
+ -0.15710312128067017,
1240
+ 0.06331466138362885,
1241
+ 0.1287412941455841,
1242
+ 0.2185135930776596,
1243
+ 0.2592580318450928,
1244
+ -0.25041234493255615,
1245
+ 0.04421650990843773,
1246
+ 0.031913772225379944,
1247
+ 0.1675594300031662,
1248
+ 0.1488073468208313,
1249
+ -0.14290811121463776,
1250
+ 0.3285759687423706,
1251
+ 0.22858765721321106,
1252
+ 0.3819029927253723,
1253
+ -0.04735409840941429,
1254
+ -0.18470162153244019,
1255
+ 0.2156306505203247,
1256
+ -0.262035995721817,
1257
+ 0.1106458529829979,
1258
+ -0.33096078038215637,
1259
+ -0.40564554929733276,
1260
+ -0.1130962148308754,
1261
+ -0.4035260081291199,
1262
+ 0.009994406253099442,
1263
+ 0.19823773205280304,
1264
+ 0.09995241463184357,
1265
+ 0.10737255960702896,
1266
+ 0.16501155495643616,
1267
+ -0.21067723631858826,
1268
+ -0.011145517230033875,
1269
+ 0.013040252029895782,
1270
+ -0.3106451630592346,
1271
+ -0.048852063715457916,
1272
+ -0.2291208952665329,
1273
+ 0.28707051277160645,
1274
+ 0.11026108264923096,
1275
+ 0.5360386967658997,
1276
+ -0.1761239767074585,
1277
+ 0.07656016945838928,
1278
+ -0.07331065833568573,
1279
+ -0.47247397899627686,
1280
+ -0.21432432532310486,
1281
+ -0.21592572331428528,
1282
+ 0.6710861921310425,
1283
+ 0.11024707555770874,
1284
+ 0.19684234261512756,
1285
+ 0.2528229355812073,
1286
+ 0.21830880641937256,
1287
+ 0.1830369234085083,
1288
+ 0.07172520458698273,
1289
+ 0.24994215369224548,
1290
+ -0.14005254209041595
1291
+ ],
1292
+ "Samuel_Male_EN_US": [
1293
+ -0.12619435787200928,
1294
+ -0.11846257001161575,
1295
+ 0.04108911007642746,
1296
+ -0.10919006168842316,
1297
+ -0.18582119047641754,
1298
+ 0.3603861629962921,
1299
+ -0.08595605194568634,
1300
+ -0.02000698447227478,
1301
+ 0.19657589495182037,
1302
+ 0.1481103152036667,
1303
+ 0.15841630101203918,
1304
+ 0.13725560903549194,
1305
+ -0.023550238460302353,
1306
+ 0.11064086854457855,
1307
+ 0.0004522055387496948,
1308
+ 0.039599962532520294,
1309
+ 0.03390733152627945,
1310
+ -0.0010563544929027557,
1311
+ -0.06491883099079132,
1312
+ 0.21764393150806427,
1313
+ 0.16938678920269012,
1314
+ 0.11513420194387436,
1315
+ 0.08827359974384308,
1316
+ -0.0926792100071907,
1317
+ 0.14648687839508057,
1318
+ -0.21553286910057068,
1319
+ 0.023113107308745384,
1320
+ -0.121593177318573,
1321
+ 0.11240999400615692,
1322
+ -0.12347493320703506,
1323
+ -0.18039049208164215,
1324
+ 0.1588599681854248,
1325
+ -0.17081257700920105,
1326
+ -0.2037820667028427,
1327
+ -0.1563880443572998,
1328
+ -0.0917324647307396,
1329
+ 0.03558758646249771,
1330
+ -0.11815845966339111,
1331
+ -0.20688572525978088,
1332
+ -0.0739545151591301,
1333
+ -0.0853046327829361,
1334
+ -0.21343617141246796,
1335
+ 0.04951489716768265,
1336
+ -0.44510698318481445,
1337
+ -0.09933532774448395,
1338
+ -0.8458589911460876,
1339
+ -0.16738075017929077,
1340
+ 0.16498824954032898,
1341
+ 0.01717434823513031,
1342
+ -0.06231179088354111,
1343
+ 0.16252321004867554,
1344
+ 0.04281383752822876,
1345
+ -0.12609757483005524,
1346
+ 0.05567052215337753,
1347
+ -0.027309387922286987,
1348
+ -0.3515397310256958,
1349
+ 0.04615774750709534,
1350
+ -0.6998573541641235,
1351
+ 0.06659585237503052,
1352
+ -0.13769188523292542,
1353
+ 0.6031708717346191,
1354
+ 0.011859655380249023,
1355
+ -0.33847033977508545,
1356
+ -0.12553080916404724,
1357
+ -0.18536464869976044,
1358
+ -0.007513280957937241,
1359
+ 0.519316554069519,
1360
+ 0.23655596375465393,
1361
+ 0.24828562140464783,
1362
+ 0.13927540183067322,
1363
+ 0.14041166007518768,
1364
+ -0.09467436373233795,
1365
+ 0.11043473333120346,
1366
+ -0.06588282436132431,
1367
+ -0.11430786550045013,
1368
+ 0.026140939444303513,
1369
+ -0.2597509026527405,
1370
+ 0.24612551927566528,
1371
+ 0.10610029101371765,
1372
+ -0.23051029443740845,
1373
+ -0.2547153830528259,
1374
+ -0.002995643764734268,
1375
+ 0.17297737300395966,
1376
+ 0.03597598150372505,
1377
+ 0.15152215957641602,
1378
+ -0.06193822994828224,
1379
+ -0.07088689506053925,
1380
+ 0.03826475143432617,
1381
+ 0.08488129824399948,
1382
+ 0.2690422534942627,
1383
+ -0.5332049131393433,
1384
+ -0.2220773696899414,
1385
+ -0.5455571413040161,
1386
+ -0.09902779757976532,
1387
+ 0.21370843052864075,
1388
+ -0.14772546291351318,
1389
+ 0.17388656735420227,
1390
+ -0.12971428036689758,
1391
+ 0.019031524658203125,
1392
+ -0.03160820156335831,
1393
+ 0.002624817192554474,
1394
+ 0.023578234016895294,
1395
+ 0.12251117080450058,
1396
+ -0.0782250463962555,
1397
+ 0.03130299225449562,
1398
+ 0.11962416768074036,
1399
+ 0.23477508127689362,
1400
+ 0.07299475371837616,
1401
+ -0.0542200468480587,
1402
+ -0.4101184606552124,
1403
+ 0.08486519753932953,
1404
+ -0.04950159043073654,
1405
+ 0.44324159622192383,
1406
+ -0.20634889602661133,
1407
+ 0.059250980615615845,
1408
+ -0.016344502568244934,
1409
+ -0.10346954315900803,
1410
+ 0.05175183713436127,
1411
+ 0.10785773396492004,
1412
+ -0.13179540634155273,
1413
+ -0.21312423050403595,
1414
+ 0.08348912745714188,
1415
+ -0.1100846529006958,
1416
+ -0.0912843644618988,
1417
+ 0.16458404064178467,
1418
+ -0.22458869218826294,
1419
+ 0.057109322398900986,
1420
+ -0.14130070805549622,
1421
+ -0.27792462706565857,
1422
+ 0.2201579511165619,
1423
+ 0.14192339777946472,
1424
+ 0.370261013507843,
1425
+ -0.1133350059390068,
1426
+ 0.5210106372833252,
1427
+ -0.2802170515060425,
1428
+ 0.2284509539604187,
1429
+ 0.08346766233444214,
1430
+ 0.2824746072292328,
1431
+ -0.2277216911315918,
1432
+ 0.28492996096611023,
1433
+ 0.13533133268356323,
1434
+ 0.17641571164131165,
1435
+ 0.055212635546922684,
1436
+ -0.1420554518699646,
1437
+ -0.3370305895805359,
1438
+ -0.05939646065235138,
1439
+ -0.012498218566179276,
1440
+ 0.3336101472377777,
1441
+ -0.009854704141616821,
1442
+ -0.21461555361747742,
1443
+ -0.06897716224193573,
1444
+ 0.42768532037734985,
1445
+ 0.2918033301830292,
1446
+ 0.17972910404205322,
1447
+ 0.08387543261051178,
1448
+ -0.3834030032157898,
1449
+ 0.04259374737739563,
1450
+ -0.24948984384536743,
1451
+ -0.4711057245731354,
1452
+ 0.23269453644752502,
1453
+ -0.11432869732379913,
1454
+ -0.3319881558418274,
1455
+ -0.5810990333557129,
1456
+ -0.16500617563724518,
1457
+ -0.513327419757843,
1458
+ -0.22280623018741608,
1459
+ -0.06446528434753418,
1460
+ 0.053828924894332886,
1461
+ -0.3869067430496216,
1462
+ -0.18398475646972656,
1463
+ -0.39183861017227173,
1464
+ -0.1645130217075348,
1465
+ -0.10562220215797424,
1466
+ 0.09369634836912155,
1467
+ -0.10099713504314423,
1468
+ -0.2670536935329437,
1469
+ -0.3405263423919678,
1470
+ -0.4056051969528198,
1471
+ 0.4251013398170471,
1472
+ -0.06249173730611801,
1473
+ 0.045685671269893646,
1474
+ 0.4523245692253113,
1475
+ 0.03759829327464104,
1476
+ -0.17996317148208618,
1477
+ 0.4454271197319031,
1478
+ -0.9131506681442261,
1479
+ 0.12587328255176544,
1480
+ 0.03575079143047333,
1481
+ 0.1569804549217224,
1482
+ -0.005473516881465912,
1483
+ -0.20985543727874756,
1484
+ 0.02623889595270157,
1485
+ 0.27007320523262024,
1486
+ -0.10873401910066605,
1487
+ 0.05130569636821747,
1488
+ -0.0011592544615268707,
1489
+ -0.0032558459788560867,
1490
+ 0.3350878059864044,
1491
+ 0.14362351596355438,
1492
+ -0.046291008591651917,
1493
+ 0.1339847445487976,
1494
+ 0.054939839988946915,
1495
+ -0.20351824164390564,
1496
+ 0.13673129677772522,
1497
+ -0.5390269160270691,
1498
+ 0.20881281793117523,
1499
+ -0.12060403823852539,
1500
+ 0.08859001100063324,
1501
+ -0.025972001254558563,
1502
+ -0.4430112838745117,
1503
+ -0.004151973873376846,
1504
+ 0.18464192748069763,
1505
+ 0.3526911437511444,
1506
+ -0.09955041110515594,
1507
+ 0.10740470886230469,
1508
+ 0.35204750299453735,
1509
+ 0.013931604102253914,
1510
+ 0.5496764183044434,
1511
+ 0.004158753901720047,
1512
+ 0.2092914879322052,
1513
+ 0.09148923307657242,
1514
+ -0.2677595019340515,
1515
+ 0.044244516640901566,
1516
+ 0.25607749819755554,
1517
+ -0.3345734179019928,
1518
+ -0.251026451587677,
1519
+ -0.5243716239929199,
1520
+ -0.07589935511350632,
1521
+ 0.2236466407775879,
1522
+ 0.692629337310791,
1523
+ 0.30974945425987244,
1524
+ -0.05844153091311455,
1525
+ 0.03120841458439827,
1526
+ 0.06444196403026581,
1527
+ -0.04019276052713394,
1528
+ 0.20844346284866333,
1529
+ 0.02490842342376709,
1530
+ -0.4918057918548584,
1531
+ 0.17454466223716736,
1532
+ 0.008414536714553833,
1533
+ 0.3902796804904938,
1534
+ -0.358223557472229,
1535
+ 0.03861651197075844,
1536
+ 0.18186673521995544,
1537
+ -0.527253270149231,
1538
+ -0.13051800429821014,
1539
+ 0.05706249922513962,
1540
+ 0.6442924737930298,
1541
+ 0.1802804172039032,
1542
+ 0.41333693265914917,
1543
+ 0.23335036635398865,
1544
+ 0.1602075695991516,
1545
+ 0.05822325870394707,
1546
+ 0.07076271623373032,
1547
+ 0.1175406351685524,
1548
+ -0.11005706340074539
1549
+ ],
1550
+ "Peter_Male_EN_US": [
1551
+ -0.02671806514263153,
1552
+ -0.1403174251317978,
1553
+ 0.05001065880060196,
1554
+ -0.1078786849975586,
1555
+ -0.11178930848836899,
1556
+ 0.35923928022384644,
1557
+ -0.10216598212718964,
1558
+ -0.0744534507393837,
1559
+ 0.1513819694519043,
1560
+ 0.033666566014289856,
1561
+ 0.18034929037094116,
1562
+ 0.17279928922653198,
1563
+ 0.025053754448890686,
1564
+ -0.041277479380369186,
1565
+ -0.017297936603426933,
1566
+ 0.089497409760952,
1567
+ 0.09309914708137512,
1568
+ -0.013885125517845154,
1569
+ 0.006094053387641907,
1570
+ 0.17924150824546814,
1571
+ 0.24564367532730103,
1572
+ 0.0279664546251297,
1573
+ -0.0281650610268116,
1574
+ -0.21447591483592987,
1575
+ 0.05961482226848602,
1576
+ -0.24900272488594055,
1577
+ 0.08882076293230057,
1578
+ -0.08165736496448517,
1579
+ 0.10724847763776779,
1580
+ -0.12638989090919495,
1581
+ -0.17386965453624725,
1582
+ 0.13405269384384155,
1583
+ -0.34381765127182007,
1584
+ -0.14751896262168884,
1585
+ -0.22588366270065308,
1586
+ -0.1478700041770935,
1587
+ 0.17554007470607758,
1588
+ -0.06141895055770874,
1589
+ -0.08225107192993164,
1590
+ -0.11144131422042847,
1591
+ -0.06510056555271149,
1592
+ -0.28190499544143677,
1593
+ 0.038482390344142914,
1594
+ -0.27125123143196106,
1595
+ -0.18446698784828186,
1596
+ -0.9286922812461853,
1597
+ -0.22221821546554565,
1598
+ 0.1890208125114441,
1599
+ -0.019690819084644318,
1600
+ -0.0410115122795105,
1601
+ 0.020294375717639923,
1602
+ 0.027921512722969055,
1603
+ -0.1279190480709076,
1604
+ 0.147661954164505,
1605
+ -0.06851989030838013,
1606
+ -0.3743244409561157,
1607
+ 0.16605032980442047,
1608
+ -0.6898317337036133,
1609
+ 0.1322338581085205,
1610
+ -0.24458415806293488,
1611
+ 0.8091621398925781,
1612
+ -0.0020183511078357697,
1613
+ -0.2860056161880493,
1614
+ -0.101268470287323,
1615
+ -0.12195206433534622,
1616
+ -0.0030680038034915924,
1617
+ 0.35305753350257874,
1618
+ 0.18254509568214417,
1619
+ 0.15022733807563782,
1620
+ 0.05763908848166466,
1621
+ 0.05388329550623894,
1622
+ -0.1870671808719635,
1623
+ 0.16868555545806885,
1624
+ -0.005561813712120056,
1625
+ -0.038571834564208984,
1626
+ 0.04676483944058418,
1627
+ -0.30886393785476685,
1628
+ 0.167225182056427,
1629
+ 0.09490098804235458,
1630
+ -0.1838131844997406,
1631
+ -0.16072562336921692,
1632
+ -0.07846863567829132,
1633
+ -0.02979177236557007,
1634
+ 0.11231174319982529,
1635
+ 0.12191181629896164,
1636
+ 0.0011293292045593262,
1637
+ 0.00034183263778686523,
1638
+ 0.03643456846475601,
1639
+ -0.004104208201169968,
1640
+ 0.0210350900888443,
1641
+ -0.5258797407150269,
1642
+ -0.28434744477272034,
1643
+ -0.3846287727355957,
1644
+ 0.028454381972551346,
1645
+ 0.268708735704422,
1646
+ -0.1812271922826767,
1647
+ 0.14686831831932068,
1648
+ -0.19878965616226196,
1649
+ 0.014050750061869621,
1650
+ -0.08926080912351608,
1651
+ 0.005555577576160431,
1652
+ 0.031308822333812714,
1653
+ 0.06296883523464203,
1654
+ -0.030255869030952454,
1655
+ 0.014618240296840668,
1656
+ 0.15111848711967468,
1657
+ 0.08761651813983917,
1658
+ 0.017063427716493607,
1659
+ -0.10042140632867813,
1660
+ -0.5389280915260315,
1661
+ 0.01812286674976349,
1662
+ -0.05892270803451538,
1663
+ 0.6147855520248413,
1664
+ -0.2805640995502472,
1665
+ 0.04736167937517166,
1666
+ 0.08966498076915741,
1667
+ -0.21231184899806976,
1668
+ 0.029807910323143005,
1669
+ 0.09918596595525742,
1670
+ -0.030193090438842773,
1671
+ -0.18508130311965942,
1672
+ 0.03303778916597366,
1673
+ -0.04084295034408569,
1674
+ -0.09405478835105896,
1675
+ 0.08350837975740433,
1676
+ -0.2915036678314209,
1677
+ -0.029322421178221703,
1678
+ -0.2637880742549896,
1679
+ -0.30284351110458374,
1680
+ 0.25083762407302856,
1681
+ -0.05462878942489624,
1682
+ 0.437039852142334,
1683
+ 0.19965985417366028,
1684
+ 0.10523413866758347,
1685
+ -0.10033008456230164,
1686
+ 0.08067487925291061,
1687
+ 0.4820234775543213,
1688
+ 0.572240948677063,
1689
+ 0.013404153287410736,
1690
+ -0.18431192636489868,
1691
+ 0.049913421273231506,
1692
+ 0.14440348744392395,
1693
+ 0.010796692222356796,
1694
+ -0.04425942152738571,
1695
+ -0.034714244306087494,
1696
+ 0.09812092781066895,
1697
+ 0.22658464312553406,
1698
+ 0.5398628115653992,
1699
+ 0.14926102757453918,
1700
+ -0.09294281154870987,
1701
+ -0.29379820823669434,
1702
+ 0.2622401714324951,
1703
+ -0.09194155037403107,
1704
+ -0.007996812462806702,
1705
+ 0.16660672426223755,
1706
+ -0.4457249045372009,
1707
+ -0.1516806185245514,
1708
+ -0.270463764667511,
1709
+ -0.39716261625289917,
1710
+ -0.1890673041343689,
1711
+ -0.21207217872142792,
1712
+ -0.24664843082427979,
1713
+ -0.284817099571228,
1714
+ -0.16662172973155975,
1715
+ -0.1995084583759308,
1716
+ 0.07401363551616669,
1717
+ 0.006268583238124847,
1718
+ -0.1385871022939682,
1719
+ -0.24141649901866913,
1720
+ -0.1358436644077301,
1721
+ -0.268524706363678,
1722
+ -0.13288292288780212,
1723
+ -0.09328028559684753,
1724
+ -0.037290073931217194,
1725
+ -0.05488095059990883,
1726
+ -0.03209332749247551,
1727
+ -0.7609561085700989,
1728
+ -0.2482100874185562,
1729
+ 0.23829908668994904,
1730
+ -0.03605654835700989,
1731
+ 0.26974982023239136,
1732
+ 0.4465060234069824,
1733
+ -0.1619127094745636,
1734
+ -0.08157207816839218,
1735
+ 0.6551785469055176,
1736
+ -0.6885366439819336,
1737
+ 0.26440972089767456,
1738
+ -0.21962705254554749,
1739
+ 0.009923815727233887,
1740
+ -0.02745674178004265,
1741
+ -0.25602495670318604,
1742
+ 0.16939014196395874,
1743
+ 0.22960194945335388,
1744
+ -0.113400399684906,
1745
+ 0.1810494065284729,
1746
+ 0.09377805143594742,
1747
+ 0.24526025354862213,
1748
+ 0.5957650542259216,
1749
+ -0.1350148618221283,
1750
+ -0.17307522892951965,
1751
+ 0.4434152841567993,
1752
+ -0.06832988560199738,
1753
+ -0.07215136289596558,
1754
+ -0.18067269027233124,
1755
+ -0.2654397487640381,
1756
+ 0.22328779101371765,
1757
+ -0.1092233955860138,
1758
+ 0.001668304204940796,
1759
+ 0.05992841348052025,
1760
+ -0.2866281270980835,
1761
+ -0.0010518133640289307,
1762
+ 0.3629896640777588,
1763
+ 0.026638980954885483,
1764
+ -0.3393930196762085,
1765
+ 0.162781223654747,
1766
+ -0.21661463379859924,
1767
+ -0.12741011381149292,
1768
+ 0.21406680345535278,
1769
+ -0.16890040040016174,
1770
+ 0.014303475618362427,
1771
+ 0.1664152592420578,
1772
+ -0.1924239546060562,
1773
+ 0.42883533239364624,
1774
+ 0.04888498783111572,
1775
+ -0.5888325572013855,
1776
+ -0.21445952355861664,
1777
+ -0.2693358361721039,
1778
+ -0.2160845249891281,
1779
+ -0.18929903209209442,
1780
+ 0.29195863008499146,
1781
+ 0.08952829986810684,
1782
+ -0.1636795699596405,
1783
+ 0.24474045634269714,
1784
+ -0.28684142231941223,
1785
+ -0.17337173223495483,
1786
+ 0.004411667585372925,
1787
+ 0.01754007488489151,
1788
+ -0.5038971304893494,
1789
+ 0.2621816396713257,
1790
+ -0.01969096064567566,
1791
+ 0.31702128052711487,
1792
+ -0.40279054641723633,
1793
+ -0.11601737886667252,
1794
+ -0.014087185263633728,
1795
+ -0.7800108194351196,
1796
+ -0.11777613312005997,
1797
+ -0.08311420679092407,
1798
+ 0.38773632049560547,
1799
+ 0.14981284737586975,
1800
+ 0.2543047368526459,
1801
+ 0.44576597213745117,
1802
+ 0.14574092626571655,
1803
+ 0.17641997337341309,
1804
+ 0.1667698472738266,
1805
+ 0.04656987264752388,
1806
+ -0.36774906516075134
1807
+ ],
1808
+ "Jack_Male_EN_US": [
1809
+ -0.04046084274887107,
1810
+ -0.15095742102712392,
1811
+ -0.006839682068675756,
1812
+ -0.05994556490331888,
1813
+ 0.006684107612818471,
1814
+ 0.21780437231063843,
1815
+ -0.05186830650782213,
1816
+ 0.045858974114526066,
1817
+ 0.18578437742544338,
1818
+ 0.23851692618336529,
1819
+ 0.25875567211769523,
1820
+ 0.01337982285767794,
1821
+ 0.0575837992830202,
1822
+ 0.010126538737677035,
1823
+ -0.11069863769225777,
1824
+ 0.10501059270463883,
1825
+ -0.038009885698556914,
1826
+ 0.09259203597903251,
1827
+ 0.006737061683088536,
1828
+ 0.033672554418444633,
1829
+ 0.12799083036952652,
1830
+ -0.021536123100668186,
1831
+ 0.03342777863144876,
1832
+ -0.17997418325394393,
1833
+ 0.017667141649872063,
1834
+ -0.0656133412849158,
1835
+ 0.07788868229836225,
1836
+ -0.20092849116772413,
1837
+ -0.013813202735036612,
1838
+ -0.15624882429838183,
1839
+ -0.02039524572901428,
1840
+ 0.06695615525532048,
1841
+ -0.03102828292176127,
1842
+ -0.003229711949825284,
1843
+ -0.16995424311608076,
1844
+ 0.021083407942205673,
1845
+ 0.0890236813283991,
1846
+ -0.00943179002497345,
1847
+ -0.016149783227592696,
1848
+ 0.09971937909722328,
1849
+ -0.09221453487407416,
1850
+ -0.15833347449079158,
1851
+ -0.16861484068795107,
1852
+ -0.19585764929652213,
1853
+ 0.019861079845577473,
1854
+ -0.5355675680562854,
1855
+ -0.03166075125336647,
1856
+ 0.27058335933834315,
1857
+ -0.015265139937400807,
1858
+ -0.014771698974072935,
1859
+ 0.0019185470417142012,
1860
+ 0.05587198091670871,
1861
+ -0.09576068501919509,
1862
+ -0.021184422494843605,
1863
+ -0.17917617466300725,
1864
+ -0.17127673390787096,
1865
+ 0.20629609785974026,
1866
+ -0.18852811860851945,
1867
+ 0.012637676135636867,
1868
+ -0.05553631568327547,
1869
+ 0.446656902320683,
1870
+ -0.08865800648927688,
1871
+ -0.0358334188349545,
1872
+ -0.010281644179485738,
1873
+ -0.07811169922351838,
1874
+ 0.109587676031515,
1875
+ 0.2809453630819917,
1876
+ 0.11856715977191926,
1877
+ 0.05583547845017166,
1878
+ -0.12626958163455126,
1879
+ 0.1281449523754418,
1880
+ -0.06413849201053382,
1881
+ 0.15792119931429624,
1882
+ 0.03743950969073922,
1883
+ 0.039248654276161685,
1884
+ 0.025773864006623626,
1885
+ -0.11292729973793031,
1886
+ 0.20113790165632964,
1887
+ -0.16639176942408085,
1888
+ -0.08434787057340147,
1889
+ -0.09793199738487603,
1890
+ 0.006178376311436293,
1891
+ -0.013375372998416409,
1892
+ 0.0542846780270338,
1893
+ 0.10225461367517709,
1894
+ 0.039542005566181614,
1895
+ 0.039125220011919745,
1896
+ -0.026181252760579806,
1897
+ 0.033635431178845474,
1898
+ 0.0862573640421033,
1899
+ -0.16706872563809155,
1900
+ -0.17828714922070504,
1901
+ -0.12449762681499123,
1902
+ -0.03108778726309538,
1903
+ 0.34800285045057533,
1904
+ -0.09101906679570675,
1905
+ 0.10009890785440802,
1906
+ -0.09514827439561487,
1907
+ -0.034053249843418586,
1908
+ -0.1105702156201005,
1909
+ 0.044860146183054894,
1910
+ 0.1358713038265705,
1911
+ 0.08085576379671693,
1912
+ -0.08721686480566859,
1913
+ 0.0573709562420845,
1914
+ 0.11415926301851868,
1915
+ 0.245212434977293,
1916
+ 0.10061340439133346,
1917
+ -0.14243060679873454,
1918
+ -0.29007883500307796,
1919
+ 0.2037310192361474,
1920
+ -0.07627206621691585,
1921
+ 0.39687543553300203,
1922
+ -0.05620414759032429,
1923
+ 0.09882601262070238,
1924
+ -0.0677183491177857,
1925
+ -0.006265022698789827,
1926
+ 0.023330946313217284,
1927
+ 0.165302169136703,
1928
+ 0.02257582815364003,
1929
+ -0.12311515075853095,
1930
+ -0.1469769559800625,
1931
+ 0.012314948812127115,
1932
+ -0.021668313816189756,
1933
+ 0.34593041818588977,
1934
+ -0.04288801420480014,
1935
+ -0.16514885276556016,
1936
+ -0.18242249870672822,
1937
+ -0.0026492349803447918,
1938
+ -0.07602755706757307,
1939
+ 0.3050278574228287,
1940
+ 0.05592154124751687,
1941
+ 0.23462600968778133,
1942
+ 0.04983584135770798,
1943
+ -0.278392353374511,
1944
+ 0.22432250184938313,
1945
+ 0.2686607390176505,
1946
+ 0.09875037595629692,
1947
+ 0.1183511849027127,
1948
+ -0.054236005432903786,
1949
+ 0.08722816870140376,
1950
+ 0.03687728531658649,
1951
+ 0.02554770354181528,
1952
+ 0.12954192645847795,
1953
+ -0.17979382164776325,
1954
+ 0.3348038989119232,
1955
+ 0.4423634188249707,
1956
+ 0.4926473870873451,
1957
+ 0.20223852992057798,
1958
+ 0.025749067217111565,
1959
+ 0.17501560486853124,
1960
+ 0.38072580406442286,
1961
+ -0.2901147920638323,
1962
+ 0.20979762431234122,
1963
+ 0.2653069855645299,
1964
+ -0.3772167260758579,
1965
+ -0.09222150184214115,
1966
+ -0.39089010236784816,
1967
+ 0.20441576987504956,
1968
+ -0.23905933797359466,
1969
+ -0.10717785591259599,
1970
+ -0.16813391000032427,
1971
+ -0.3918773714452982,
1972
+ 0.22002617083489895,
1973
+ -0.07564694900065663,
1974
+ 0.07937551865907153,
1975
+ 0.08824989823624493,
1976
+ 0.29479082534089684,
1977
+ -0.36032405607402324,
1978
+ -0.2603407606482506,
1979
+ -0.6042231546249242,
1980
+ -0.28955514542758465,
1981
+ -0.03436102028936147,
1982
+ -0.04779914440587163,
1983
+ -0.009762127837166193,
1984
+ -0.10187441464513541,
1985
+ -0.7215779416263104,
1986
+ -0.27634545378386977,
1987
+ 0.17830019462853672,
1988
+ -0.09875116832554341,
1989
+ 0.09090687595307827,
1990
+ 0.13431233698502182,
1991
+ -0.2642242418602109,
1992
+ -0.04540154328569772,
1993
+ 0.4095670249313116,
1994
+ -0.35262783467769626,
1995
+ 0.16893002432771026,
1996
+ 0.08783781807869673,
1997
+ 0.25395081788301466,
1998
+ -0.28145490009337665,
1999
+ -0.326755971997045,
2000
+ 0.15969305289909244,
2001
+ 0.028953553736209857,
2002
+ -0.21651662606745958,
2003
+ 0.4146030018106103,
2004
+ -0.03423323482275009,
2005
+ -0.16287488527595997,
2006
+ 0.39450788777321577,
2007
+ 0.12951190834864976,
2008
+ 0.1056388876902929,
2009
+ 0.08080296535044909,
2010
+ 0.3574946537613869,
2011
+ 0.019849372282624234,
2012
+ 0.040822872455464676,
2013
+ -0.2921319276094437,
2014
+ 0.2146362524013966,
2015
+ -0.134716684371233,
2016
+ 0.07487714374437929,
2017
+ 0.009296230599284167,
2018
+ -0.04380686506628992,
2019
+ -0.19373088590800763,
2020
+ 0.2639585494995117,
2021
+ 0.18104018196463584,
2022
+ -0.16598513473290952,
2023
+ 0.04853666033595801,
2024
+ -0.14947416950017212,
2025
+ -0.21553540676832197,
2026
+ 0.08810192588716745,
2027
+ -0.2630701248068362,
2028
+ 0.20122109837830066,
2029
+ 0.12282457035034895,
2030
+ -0.37653126297518613,
2031
+ 0.23556544631719586,
2032
+ 0.10754718948155645,
2033
+ -0.19623969851527362,
2034
+ -0.37442944198846817,
2035
+ -0.24549162713810802,
2036
+ -0.12071249298751355,
2037
+ 0.07532338486053047,
2038
+ 0.4720609566196799,
2039
+ 0.33625265657901765,
2040
+ 0.09440774954855442,
2041
+ 0.08528476338833571,
2042
+ -0.1694023549556732,
2043
+ -0.07463834583759302,
2044
+ 0.11786841377615931,
2045
+ -0.09039792915573344,
2046
+ -0.5210130661725998,
2047
+ 0.24727064482867717,
2048
+ -0.16189097724854945,
2049
+ 0.4837450442370027,
2050
+ -0.1521998167037964,
2051
+ -0.06750598764047028,
2052
+ -0.004553849250078207,
2053
+ -0.22957104928791522,
2054
+ -0.017605035123415283,
2055
+ 0.2760094117373228,
2056
+ 0.05957211840432136,
2057
+ -0.0009269976260838989,
2058
+ 0.1953226298559457,
2059
+ 0.223721924982965,
2060
+ 0.051529260072857144,
2061
+ 0.07620697033125907,
2062
+ 0.3487104419618845,
2063
+ -0.29083244649809786,
2064
+ -0.2311014744453132
2065
+ ],
2066
+ "Henry_Male_EN_US": [
2067
+ 0.03231465221033432,
2068
+ -0.17197506912052632,
2069
+ -0.15499479230493307,
2070
+ -0.1250289712101221,
2071
+ -0.16165112853050234,
2072
+ 0.11880796402692793,
2073
+ -0.026341438165400174,
2074
+ 0.02843754307832569,
2075
+ 0.15634612458525227,
2076
+ 0.10595979747595265,
2077
+ 0.039114803401753315,
2078
+ 0.010465619154274462,
2079
+ 0.05449719361495225,
2080
+ 0.16031873143510894,
2081
+ -0.1695658477488905,
2082
+ -0.0018680405337363482,
2083
+ -0.08171003330498933,
2084
+ 0.023001285642385474,
2085
+ -0.1536627289839089,
2086
+ 0.011052230559289444,
2087
+ 0.11655736799002625,
2088
+ -0.15112714925780893,
2089
+ -0.010360681824386115,
2090
+ -0.11909673623740674,
2091
+ -0.21134809795767068,
2092
+ 0.20729044654872264,
2093
+ 0.19189890939742327,
2094
+ 0.034412209317088105,
2095
+ 0.07652324698865413,
2096
+ -0.09826281983405351,
2097
+ -0.03507392066530883,
2098
+ 0.05623610065958929,
2099
+ 0.023545358702540417,
2100
+ 0.1944381920620799,
2101
+ -0.18579835649579762,
2102
+ 0.13530588764697313,
2103
+ 0.047002217611589,
2104
+ -0.03857994754798711,
2105
+ 0.21279680896550413,
2106
+ -0.0011355822905898053,
2107
+ -0.11157526604365556,
2108
+ -0.2419595753774047,
2109
+ -0.25546876950538716,
2110
+ 0.03623581342399121,
2111
+ -0.2026651309803128,
2112
+ -0.5091725187376142,
2113
+ 0.11082670092582703,
2114
+ 0.1577077390626073,
2115
+ -0.3597980797290802,
2116
+ -0.011146663455292584,
2117
+ 0.08107478127349169,
2118
+ 0.22176175282802432,
2119
+ -0.1103294763015583,
2120
+ -0.15145504621323197,
2121
+ -0.2445066723972559,
2122
+ -0.1946099933935329,
2123
+ 0.256573729775846,
2124
+ 0.079415076575242,
2125
+ 0.07555773077765479,
2126
+ -0.1760544968303293,
2127
+ 0.45968954982236027,
2128
+ -0.2993650084361434,
2129
+ 0.23150971811264753,
2130
+ -0.007668233546428378,
2131
+ 0.014109187014400976,
2132
+ 0.10277328002266586,
2133
+ 0.06715730596333742,
2134
+ -0.1751516081392765,
2135
+ 0.13003269975306464,
2136
+ -0.01215957077220084,
2137
+ -0.10042227925732733,
2138
+ 0.13036054857075213,
2139
+ 0.008775722794234747,
2140
+ 0.07856735654640942,
2141
+ -0.0694429306051461,
2142
+ -0.04239498968236148,
2143
+ -0.04804698210209607,
2144
+ 0.25152273084968324,
2145
+ -0.1492430506274104,
2146
+ 0.16119943596422673,
2147
+ 0.33940611872822046,
2148
+ 0.08957686950452626,
2149
+ -0.0576036872342229,
2150
+ -0.08172749504446983,
2151
+ -0.1345309724099934,
2152
+ 0.2364609685027972,
2153
+ 0.10072718104347586,
2154
+ 0.003340821829624467,
2155
+ -0.04597767407540229,
2156
+ 0.018918244726955885,
2157
+ -0.11239160280674693,
2158
+ -0.07376309838145972,
2159
+ 0.12267176546156411,
2160
+ -0.07140531631885097,
2161
+ 0.06295341402292251,
2162
+ 0.14427131954580547,
2163
+ 0.06250183843076229,
2164
+ -0.1606520629953593,
2165
+ -0.027804251573979866,
2166
+ -0.14481351664289832,
2167
+ 0.11379512277198955,
2168
+ 0.4806660775095224,
2169
+ -0.08994001736864446,
2170
+ 0.00915752639994026,
2171
+ -0.11584404325112699,
2172
+ 0.14220867762342096,
2173
+ 0.2804017297923565,
2174
+ 0.18867827099747958,
2175
+ -0.3128292956738733,
2176
+ -0.06684039272367953,
2177
+ 0.21606469061225653,
2178
+ -0.1878887706901878,
2179
+ 0.32509690122678875,
2180
+ 0.1665364772081375,
2181
+ 0.05110035295365378,
2182
+ -0.24309139875695107,
2183
+ -0.14905344853177668,
2184
+ 0.014429311221465464,
2185
+ -0.04873416791670025,
2186
+ 0.14548272781539706,
2187
+ -0.08988374508335253,
2188
+ -0.21444802945479752,
2189
+ 0.058564639464020726,
2190
+ 0.2721280400641262,
2191
+ 0.205003977753222,
2192
+ -0.010262779332697397,
2193
+ -0.0029813522472977617,
2194
+ -0.15529807284474373,
2195
+ 0.26777649037539963,
2196
+ -0.0713763989508152,
2197
+ 0.3913366436958313,
2198
+ 0.24202184118330478,
2199
+ 0.07944705467671154,
2200
+ 0.4742859028279781,
2201
+ -0.024598410213366118,
2202
+ -0.18506417192984376,
2203
+ 0.4029238263145089,
2204
+ 0.08335387408733368,
2205
+ 0.10739199253730473,
2206
+ -0.13465733248740436,
2207
+ -0.01804239540069829,
2208
+ -0.0791158242151141,
2209
+ 0.19488584250211716,
2210
+ 0.02578564528375863,
2211
+ -0.5237501479685307,
2212
+ -0.07989736758172511,
2213
+ 0.5030703557655215,
2214
+ 0.10675456821918486,
2215
+ 0.2127919055521488,
2216
+ 0.09851150363683697,
2217
+ -0.08418610896915199,
2218
+ 0.1229889305308461,
2219
+ -0.43523957654833795,
2220
+ 0.4120137566700578,
2221
+ 0.4287545826286077,
2222
+ 0.2022662471514195,
2223
+ -0.20844841264188288,
2224
+ -0.35773375257849693,
2225
+ 0.08517274558544158,
2226
+ -0.1674375392496586,
2227
+ -0.014676835667341941,
2228
+ -0.05585243180394173,
2229
+ -0.5275113929063082,
2230
+ 0.630928717367351,
2231
+ -0.01564715448766945,
2232
+ -0.23996227737661685,
2233
+ 0.45196260644588615,
2234
+ 0.5890609898604452,
2235
+ -0.6399751238524913,
2236
+ -0.15936621921136973,
2237
+ -0.7311209061648697,
2238
+ 0.2599357020109892,
2239
+ -0.31862640250474217,
2240
+ -0.04317740127444269,
2241
+ -0.11731456399429589,
2242
+ -0.25942440861836075,
2243
+ -0.2941827371716499,
2244
+ 0.23730804622173307,
2245
+ 0.46029331209138036,
2246
+ 0.38680253662168984,
2247
+ -0.047635487094521534,
2248
+ 0.09478947315365074,
2249
+ -0.3081191055476665,
2250
+ -0.1648157351184636,
2251
+ 0.6156397035345436,
2252
+ -0.13436328768730166,
2253
+ 0.2214298250619322,
2254
+ -0.13365367855876686,
2255
+ 0.5899101013317705,
2256
+ -0.43101135436445476,
2257
+ 0.1790693347575143,
2258
+ -0.07457639621570705,
2259
+ -0.20997890923172235,
2260
+ -0.12710947534069417,
2261
+ 0.6243484194390476,
2262
+ -0.7802158012986182,
2263
+ -0.2108477063477039,
2264
+ 0.26811757814139126,
2265
+ 0.06200872911140322,
2266
+ 0.41312811655006954,
2267
+ -0.03243043515831233,
2268
+ 0.2404710978269577,
2269
+ -0.2426718469709158,
2270
+ 0.18551481867325492,
2271
+ -0.1008815299719572,
2272
+ 0.30738673652522264,
2273
+ 0.04650051929056642,
2274
+ 0.04460244094952941,
2275
+ 0.23529892023652793,
2276
+ -0.10654573403298855,
2277
+ -0.24890044219791893,
2278
+ -0.20255712829530237,
2279
+ -0.02652014940977096,
2280
+ -0.09871285315603015,
2281
+ 0.2915390910580754,
2282
+ 0.27769559375010433,
2283
+ -0.14592748656868934,
2284
+ 0.29195716343820094,
2285
+ -0.07187115289270878,
2286
+ 0.1771868597716093,
2287
+ 0.041152336634695516,
2288
+ -0.1439833148382604,
2289
+ 0.30823934525251384,
2290
+ 0.3235661891289055,
2291
+ 0.1609754763310775,
2292
+ -0.34351673722267145,
2293
+ -0.022873798222281028,
2294
+ 0.09521509874612094,
2295
+ 0.32318700947798795,
2296
+ 0.8087762531824411,
2297
+ 0.3908264026977122,
2298
+ 0.002011305466294286,
2299
+ 0.043111137486994265,
2300
+ 0.07222179947420956,
2301
+ -0.16160998903214935,
2302
+ 0.9778514429926872,
2303
+ -0.1190133649390191,
2304
+ -0.06515133678913118,
2305
+ 0.07287682355381547,
2306
+ -0.5366707997396588,
2307
+ 0.3294163831975311,
2308
+ 0.4730239138007164,
2309
+ 0.14623114340938625,
2310
+ -0.04914769362658263,
2311
+ 0.19938274882733825,
2312
+ -0.042190209974069144,
2313
+ 0.5218729123473167,
2314
+ -0.09630445644725116,
2315
+ -0.05060101728595327,
2316
+ 0.003836261900141802,
2317
+ 0.23963055023923516,
2318
+ 0.34797419500537213,
2319
+ -0.24325519371777776,
2320
+ 0.2133896093349904,
2321
+ -0.5972239149094094,
2322
+ -0.5162009912542999
2323
+ ],
2324
+ "Lisa_Female_EN_US": [
2325
+ 0.098259643453639,
2326
+ -0.16734164860099554,
2327
+ 0.06323453821241856,
2328
+ -0.11800012588500977,
2329
+ -0.11747334823012351,
2330
+ 0.1664506748318672,
2331
+ -0.11684786230325699,
2332
+ 0.05554657885804772,
2333
+ 0.18881248405668885,
2334
+ 0.02363725304603577,
2335
+ 0.13073167139664293,
2336
+ 0.099481688067317,
2337
+ -0.05592308223713189,
2338
+ 0.06073833145201206,
2339
+ -0.06404643282294273,
2340
+ 0.03512822799384594,
2341
+ 0.08353134356439113,
2342
+ -0.041701164841651914,
2343
+ 0.027301983349025248,
2344
+ 0.20779836773872373,
2345
+ 0.18608229857636616,
2346
+ -0.18563928958028555,
2347
+ -0.07058929353952408,
2348
+ -0.0963012244552374,
2349
+ 0.07196986377239227,
2350
+ -0.36310549527406694,
2351
+ 0.02321777753531933,
2352
+ -0.08520180359482765,
2353
+ 0.1750676281750202,
2354
+ -0.1034254938364029,
2355
+ -0.10941653922200203,
2356
+ 0.10243654051446356,
2357
+ -0.047365300357341766,
2358
+ -0.13165730237960815,
2359
+ -0.16502732019871474,
2360
+ 0.041227119415998464,
2361
+ 0.13208873476833105,
2362
+ -0.1005905382335186,
2363
+ -0.134281662479043,
2364
+ -0.03663246519863605,
2365
+ 0.019146875315345823,
2366
+ -0.17250166907906533,
2367
+ -0.10810867324471474,
2368
+ -0.1385631315410137,
2369
+ -0.07121777702122926,
2370
+ -0.8006405025720597,
2371
+ -0.1598912551999092,
2372
+ 0.1796777807176113,
2373
+ 0.1533122271299362,
2374
+ -0.013358959695324302,
2375
+ 0.12085846066474915,
2376
+ 0.08968418501317502,
2377
+ -0.1647926703095436,
2378
+ -0.03534330911934376,
2379
+ 0.018276208639144892,
2380
+ -0.31622386574745176,
2381
+ 0.044433788210153584,
2382
+ -0.3835114762187004,
2383
+ 0.06946051493287086,
2384
+ -0.14754583239555358,
2385
+ 0.7700884103775024,
2386
+ 0.05088452622294426,
2387
+ -0.10631981901824475,
2388
+ -0.03452881909906864,
2389
+ -0.18428492173552513,
2390
+ 0.01940714865922928,
2391
+ 0.15734580717980862,
2392
+ 0.24781300947070123,
2393
+ 0.11008071005344391,
2394
+ -0.037437029182910926,
2395
+ -0.02237723711878061,
2396
+ -0.05610082112252712,
2397
+ 0.17097073495388032,
2398
+ -0.029630468040704724,
2399
+ -0.14090186282992362,
2400
+ 0.05233948081731796,
2401
+ -0.11303650513291358,
2402
+ 0.09975283332169056,
2403
+ 0.07712901234626768,
2404
+ -0.10158926621079445,
2405
+ -0.006173290871083734,
2406
+ -0.05509051866829395,
2407
+ -0.02421657182276249,
2408
+ 0.12725706659257413,
2409
+ 0.0459196088835597,
2410
+ 0.024673170596361163,
2411
+ -0.021687139011919498,
2412
+ -0.0033121073618531255,
2413
+ 0.16617082729935645,
2414
+ 0.1039574097841978,
2415
+ -0.48374021649360655,
2416
+ -0.27473467141389846,
2417
+ -0.2696342796087265,
2418
+ -0.0147636947222054,
2419
+ 0.07800779491662979,
2420
+ -0.17835728526115419,
2421
+ 0.07246882431209087,
2422
+ -0.10726579539477825,
2423
+ -0.04813114702701569,
2424
+ -0.05245459228754044,
2425
+ 0.021175800473429263,
2426
+ -0.028440106660127633,
2427
+ 0.09296442177146673,
2428
+ 0.06005613040179014,
2429
+ -0.024471254087984562,
2430
+ 0.034369273111224174,
2431
+ 0.21559504568576812,
2432
+ -0.06217287853360176,
2433
+ 0.020450182259082794,
2434
+ -0.42201632708311076,
2435
+ 0.18088365010917187,
2436
+ 0.06422147378325462,
2437
+ 0.42920178174972534,
2438
+ -0.15756667256355283,
2439
+ 0.07944225370883942,
2440
+ 0.07854075198993087,
2441
+ -0.08394828196614981,
2442
+ -0.02590339761227369,
2443
+ 0.0945357296615839,
2444
+ 0.013894812762737276,
2445
+ -0.0668190572410822,
2446
+ 0.03327381014823913,
2447
+ 0.017544799577444793,
2448
+ 0.03966145385056734,
2449
+ 0.185294571146369,
2450
+ -0.30561336129903793,
2451
+ 0.05225303545594215,
2452
+ -0.20599330589175224,
2453
+ -0.0247444950044155,
2454
+ 0.0681127518415451,
2455
+ 0.04429299384355545,
2456
+ 0.1615323081612587,
2457
+ -0.11333180218935013,
2458
+ 0.05444136634469032,
2459
+ -0.32481844425201417,
2460
+ 0.18828704990446568,
2461
+ 0.2872520424425602,
2462
+ 0.13895429372787474,
2463
+ -0.08756729066371917,
2464
+ 0.24525217991322276,
2465
+ 0.03871614711242728,
2466
+ 0.11254438832402229,
2467
+ -0.06629508603364229,
2468
+ -0.10699533671140671,
2469
+ -0.049380650371313096,
2470
+ 0.06740754097700119,
2471
+ 0.16857104301452636,
2472
+ 0.30641851425170896,
2473
+ -0.0305225610733032,
2474
+ -0.4179070383310318,
2475
+ -0.10720842555165291,
2476
+ 0.2560294335708022,
2477
+ -0.019710254669189464,
2478
+ -0.17763112932443617,
2479
+ -0.0029114261269569397,
2480
+ -0.31358570866286756,
2481
+ 0.041973935812711714,
2482
+ -0.29000549390912056,
2483
+ -0.35404677540063856,
2484
+ -0.007181685417890549,
2485
+ 0.05955917574465275,
2486
+ -0.1936878278851509,
2487
+ -0.4633562132716179,
2488
+ 0.021091651916503917,
2489
+ -0.19877577703446148,
2490
+ -0.035990026939543895,
2491
+ -0.13621442914009094,
2492
+ 0.14864262491464614,
2493
+ -0.32244770638644693,
2494
+ -0.20621291697025299,
2495
+ -0.34765296103432775,
2496
+ -0.24935359358787537,
2497
+ -0.14733021520078182,
2498
+ -0.1826939433813095,
2499
+ -0.12082219868898392,
2500
+ -0.2630250319838524,
2501
+ -0.25408093333244325,
2502
+ -0.23697019964456556,
2503
+ 0.3174678087234497,
2504
+ -0.13980808593332766,
2505
+ 0.15056745186448098,
2506
+ 0.19160462617874144,
2507
+ 0.05726437717676161,
2508
+ -0.010723254084587096,
2509
+ 0.3363094590604305,
2510
+ -0.5907457679510116,
2511
+ 0.2439893047325313,
2512
+ -0.08692961037158967,
2513
+ 0.06740072220563889,
2514
+ 0.024416530132293696,
2515
+ -0.2389059288892895,
2516
+ 0.04350413922220468,
2517
+ 0.1647874414920807,
2518
+ -0.22662141621112825,
2519
+ -0.22065756656229496,
2520
+ 0.2145439937710762,
2521
+ -0.17922353893518447,
2522
+ 0.12061219662427902,
2523
+ 0.03737899707630277,
2524
+ -0.021762318909168236,
2525
+ 0.05909155458211899,
2526
+ 0.11406668499112128,
2527
+ -0.33404846489429474,
2528
+ -0.006388737261295324,
2529
+ -0.30795534551143644,
2530
+ 0.12133514666929841,
2531
+ 0.004110211133956904,
2532
+ 0.13224451523274183,
2533
+ 0.3036839559674263,
2534
+ -0.21054075136780737,
2535
+ 0.0030692771077156025,
2536
+ 0.0035036206245422363,
2537
+ 0.011927027255296707,
2538
+ 0.08805800816044211,
2539
+ 0.0661589827388525,
2540
+ 0.17130252979695795,
2541
+ 0.09395805150270461,
2542
+ 0.26391741409897806,
2543
+ -0.05089263916015625,
2544
+ -0.11061666905879974,
2545
+ 0.13363431245088578,
2546
+ -0.30518253389745953,
2547
+ -0.04395102113485336,
2548
+ -0.03574146777391435,
2549
+ -0.23613579357042908,
2550
+ -0.16882284134626388,
2551
+ -0.30275803729891776,
2552
+ -0.04444010443985462,
2553
+ 0.2190699848346412,
2554
+ 0.27886907644569875,
2555
+ 0.20610505752265454,
2556
+ 0.03134636655449867,
2557
+ -0.06447610408067703,
2558
+ -0.0005596891045570457,
2559
+ 0.26649302095174787,
2560
+ -0.2057398557662964,
2561
+ 0.0030920282006263733,
2562
+ -0.4122629433870315,
2563
+ 0.3565848290920257,
2564
+ 0.20677504390478132,
2565
+ 0.3942677197046578,
2566
+ -0.3252736687660217,
2567
+ 0.0967718569561839,
2568
+ 0.03678370863199233,
2569
+ -0.3206644430756569,
2570
+ -0.10442807674407958,
2571
+ 0.09797048419713975,
2572
+ 0.5563426822423935,
2573
+ 0.04038007035851478,
2574
+ 0.41352313160896303,
2575
+ 0.3068622753024101,
2576
+ 0.11289987117052078,
2577
+ 0.19880020171403884,
2578
+ 0.0596605807542801,
2579
+ 0.11166647523641585,
2580
+ -0.09573411736637354
2581
+ ],
2582
+ "Anne_Female_EN_US": [
2583
+ 0.17940405994304454,
2584
+ -0.1644238923676312,
2585
+ 0.09324024524539709,
2586
+ -0.12510012816637756,
2587
+ -0.06630658619105817,
2588
+ 0.11119609288871288,
2589
+ -0.16596424281597139,
2590
+ 0.08907460342161358,
2591
+ 0.19401996767846869,
2592
+ 0.01849436295451596,
2593
+ 0.14532765592448413,
2594
+ 0.08469446934759615,
2595
+ -0.023078771238215272,
2596
+ 0.07181636142777278,
2597
+ -0.15694392705336213,
2598
+ 0.026453089481219653,
2599
+ 0.14835394602268934,
2600
+ -0.050624337047338486,
2601
+ 0.08605103651061653,
2602
+ 0.25574559848755596,
2603
+ 0.18944694046513177,
2604
+ -0.335114658344537,
2605
+ -0.10531004574149846,
2606
+ -0.13781959619373083,
2607
+ 0.06695765908807516,
2608
+ -0.43373020405415447,
2609
+ -0.00021649692207574567,
2610
+ -0.06944741196930408,
2611
+ 0.18373148031532766,
2612
+ -0.18261400833725927,
2613
+ -0.07242659293115139,
2614
+ 0.07962212040729355,
2615
+ -0.054722306877374643,
2616
+ -0.08814518945291638,
2617
+ -0.18172899140045046,
2618
+ 0.07253306582570077,
2619
+ 0.12834971025440609,
2620
+ -0.07147813141345978,
2621
+ -0.03303390946239235,
2622
+ -0.020850191079080108,
2623
+ 0.03093239173758775,
2624
+ -0.17062115278095008,
2625
+ -0.2042961787432432,
2626
+ 0.0001160103827714809,
2627
+ -0.05252801310271025,
2628
+ -0.7858508661389351,
2629
+ -0.2091302715241909,
2630
+ 0.215912102162838,
2631
+ 0.1682404987514019,
2632
+ -0.004957896983250976,
2633
+ 0.08353579475078732,
2634
+ 0.07429065436590462,
2635
+ -0.2838975650956854,
2636
+ -0.060729915578849616,
2637
+ 0.015331120043992993,
2638
+ -0.3538943402469158,
2639
+ 0.06603590287268161,
2640
+ -0.3598479990148917,
2641
+ 0.04949475321918727,
2642
+ -0.1802994295954704,
2643
+ 0.8948932841420174,
2644
+ 0.06269775629043578,
2645
+ 0.14551597367972133,
2646
+ -0.024429614841938015,
2647
+ -0.18672503978013993,
2648
+ 0.0038162305951118525,
2649
+ 0.06440221983939409,
2650
+ 0.22779810093343258,
2651
+ 0.0648292437195778,
2652
+ -0.06520362980663777,
2653
+ -0.1480596019886434,
2654
+ -0.07716014515608549,
2655
+ 0.19149241223931313,
2656
+ -0.00472725033760071,
2657
+ -0.15999614455504343,
2658
+ 0.05745576778426767,
2659
+ -0.1102717611938715,
2660
+ 0.10388381499797106,
2661
+ 0.060168941505253315,
2662
+ -0.059192010387778285,
2663
+ 0.16045401743613183,
2664
+ -0.08206549435853958,
2665
+ -0.00931916926056147,
2666
+ 0.07603645194321872,
2667
+ -0.015994349215179678,
2668
+ 0.06288723759353161,
2669
+ 0.035409542825073,
2670
+ -0.02822249522432685,
2671
+ 0.1511568885296583,
2672
+ 0.025192760489881047,
2673
+ -0.45415958352386954,
2674
+ -0.2641012085601687,
2675
+ -0.09631151705980302,
2676
+ 0.05240553788607939,
2677
+ -0.038502784445881844,
2678
+ -0.1828939441591501,
2679
+ 0.08149223010987043,
2680
+ -0.16405740920454265,
2681
+ -0.0005170568823814475,
2682
+ -0.02928877165541053,
2683
+ 0.04517688824562356,
2684
+ 0.006311735883355152,
2685
+ 0.07976922886446118,
2686
+ 0.10996842151507735,
2687
+ -0.08294843146577477,
2688
+ -0.04048346038907766,
2689
+ 0.20001366436481477,
2690
+ -0.17603044249117372,
2691
+ 0.030919674783945097,
2692
+ -0.45755103826522825,
2693
+ 0.27328743394464255,
2694
+ 0.14530749581754207,
2695
+ 0.37551659494638445,
2696
+ -0.08780852369964123,
2697
+ 0.0881434208364226,
2698
+ 0.1102366984821856,
2699
+ -0.10324715869501233,
2700
+ -0.0326073732227087,
2701
+ 0.11423155306838453,
2702
+ 0.08385749866720289,
2703
+ -0.044914178038015964,
2704
+ 0.03559637144207953,
2705
+ 0.15771918892860412,
2706
+ 0.1590451302938163,
2707
+ 0.2501667616888881,
2708
+ -0.4137455578893423,
2709
+ 0.0505435885861516,
2710
+ -0.23191697373986245,
2711
+ 0.0287872213870287,
2712
+ 0.003149333596229556,
2713
+ 0.10368789061903953,
2714
+ -0.010588538646697995,
2715
+ -0.0879323348402977,
2716
+ -0.07506629079580307,
2717
+ -0.5269412443041801,
2718
+ 0.22431598380208015,
2719
+ 0.3359779428690672,
2720
+ 0.0032832570374011962,
2721
+ -0.050378158874809745,
2722
+ 0.3839163174852729,
2723
+ 0.028349736475502138,
2724
+ -0.10097187757492063,
2725
+ -0.11896620839834213,
2726
+ -0.1368182884529233,
2727
+ 0.04117071777582168,
2728
+ 0.09757037162780761,
2729
+ 0.30170601047575474,
2730
+ 0.42509459182620046,
2731
+ -0.031749222427606555,
2732
+ -0.450509675219655,
2733
+ -0.10203840397298336,
2734
+ 0.11731623336672783,
2735
+ -0.14807355552911758,
2736
+ -0.3516409188508987,
2737
+ -0.014435897022485725,
2738
+ -0.2427325451746583,
2739
+ 0.06217130366712809,
2740
+ -0.38942934162914755,
2741
+ -0.23018259108066563,
2742
+ -0.046737963333725915,
2743
+ 0.21478279903531072,
2744
+ -0.15159097351133824,
2745
+ -0.6199001990258693,
2746
+ 0.11925626099109649,
2747
+ -0.11402976419776678,
2748
+ 0.007391047988494388,
2749
+ -0.00794237181544305,
2750
+ 0.3376276850700378,
2751
+ -0.469353917054832,
2752
+ -0.39055002434179187,
2753
+ -0.5357521926518529,
2754
+ -0.2898576606065035,
2755
+ -0.07800486553460359,
2756
+ -0.3499526508152485,
2757
+ -0.09789482404012233,
2758
+ -0.29802559399977324,
2759
+ -0.0005799770355224831,
2760
+ -0.16338682733476162,
2761
+ 0.3528595224022865,
2762
+ -0.43563686497509474,
2763
+ 0.09255755357444287,
2764
+ 0.14223229270428417,
2765
+ 0.0687978647649288,
2766
+ 9.937696158886233e-05,
2767
+ 0.370262223854661,
2768
+ -0.6324451595544816,
2769
+ 0.2665458579082042,
2770
+ -0.1399991037324071,
2771
+ 0.12931404411792755,
2772
+ 0.16657713875174524,
2773
+ -0.12588859747629613,
2774
+ 0.11505986778065562,
2775
+ 0.04677194319665433,
2776
+ -0.3566686304286122,
2777
+ -0.24695453979074955,
2778
+ 0.2476239986717701,
2779
+ -0.5334096863865851,
2780
+ -0.07400115504860877,
2781
+ 0.12062631538137794,
2782
+ 0.04516074173152446,
2783
+ -0.052435807511210436,
2784
+ 0.3395687915384769,
2785
+ -0.35318856965750456,
2786
+ 0.09023026153445243,
2787
+ -0.33012407943606376,
2788
+ 0.1426998670678586,
2789
+ 0.16262518018484115,
2790
+ 0.1251251042820513,
2791
+ 0.46874684616923334,
2792
+ -0.15137760601937772,
2793
+ 0.068039158731699,
2794
+ -0.30281599573791024,
2795
+ -0.2254273697733879,
2796
+ 0.27405579378828404,
2797
+ 0.17136543877422808,
2798
+ 0.10630016443319619,
2799
+ 0.057858095318079,
2800
+ 0.11517375223338605,
2801
+ -0.15762499999254942,
2802
+ -0.29063242860138416,
2803
+ 0.20158795565366744,
2804
+ -0.29120013369247316,
2805
+ -0.24734700098633766,
2806
+ -0.11135954931378364,
2807
+ 0.0172116317320615,
2808
+ -0.31362133994698527,
2809
+ -0.22704790353309365,
2810
+ 0.04125624597072601,
2811
+ 0.2366799856070429,
2812
+ 0.1992180491797626,
2813
+ 0.2684565844014287,
2814
+ 0.2055516693741083,
2815
+ -0.33117692880332467,
2816
+ -0.031874293368309735,
2817
+ 0.38305166363716125,
2818
+ -0.29617225378751755,
2819
+ -0.04308449327945709,
2820
+ -0.5536482103168965,
2821
+ 0.5467873688321561,
2822
+ 0.17487224414944647,
2823
+ 0.4601214074995369,
2824
+ -0.21070712432265282,
2825
+ 0.14032430904917417,
2826
+ 0.04221225241199136,
2827
+ -0.1693667344748974,
2828
+ -0.05280606932938099,
2829
+ 0.19504989907145498,
2830
+ 0.5787762992084027,
2831
+ -0.0508410669863224,
2832
+ 0.3892222262918949,
2833
+ 0.3818872168660164,
2834
+ 0.1461108922958374,
2835
+ 0.2555951376445591,
2836
+ -0.23311877846717832,
2837
+ 0.03256144672632219,
2838
+ 0.08528051348403096
2839
+ ]
2840
+ }
voices_.json.example ADDED
@@ -0,0 +1,2840 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Richard_Male_EN_US": [
3
+ 0.0838528722524643,
4
+ -0.20531457662582397,
5
+ -0.10166072100400925,
6
+ -0.08704791963100433,
7
+ -0.16887575387954712,
8
+ 0.07563386857509613,
9
+ -0.11252004653215408,
10
+ 0.0405205562710762,
11
+ 0.17604444921016693,
12
+ -0.0022975243628025055,
13
+ 0.07261361181735992,
14
+ 0.01948651298880577,
15
+ 0.03549861162900925,
16
+ 0.10135026276111603,
17
+ -0.028263121843338013,
18
+ 0.002969518303871155,
19
+ 0.0983193963766098,
20
+ -0.0498846136033535,
21
+ -0.059726495295763016,
22
+ 0.14428836107254028,
23
+ 0.22363322973251343,
24
+ -0.18453018367290497,
25
+ -0.02805022895336151,
26
+ -0.04543690383434296,
27
+ -0.11356891691684723,
28
+ -0.13455606997013092,
29
+ 0.09829540550708771,
30
+ -0.08688592910766602,
31
+ 0.07672901451587677,
32
+ -0.18105418980121613,
33
+ -0.18634817004203796,
34
+ 0.12421728670597076,
35
+ -0.007412530481815338,
36
+ -0.05725667625665665,
37
+ -0.1923050880432129,
38
+ 0.12631717324256897,
39
+ 0.19541586935520172,
40
+ -0.07617154717445374,
41
+ -0.08994933217763901,
42
+ -0.046437621116638184,
43
+ -0.043646734207868576,
44
+ -0.14466425776481628,
45
+ -0.10671895742416382,
46
+ -0.013705611228942871,
47
+ -0.207138791680336,
48
+ -0.752566933631897,
49
+ -0.1562556028366089,
50
+ 0.15995296835899353,
51
+ -0.17764419317245483,
52
+ 0.016572676599025726,
53
+ 0.10811036825180054,
54
+ 0.08399468660354614,
55
+ -0.08008511364459991,
56
+ -0.03857298195362091,
57
+ -0.0649266391992569,
58
+ -0.22515754401683807,
59
+ 0.11427924036979675,
60
+ -0.24663931131362915,
61
+ 0.1547779142856598,
62
+ -0.14620377123355865,
63
+ 0.5633630752563477,
64
+ -0.1662401258945465,
65
+ -0.09044578671455383,
66
+ 0.004183262586593628,
67
+ -0.0022140033543109894,
68
+ -0.04644201323390007,
69
+ 0.09777267277240753,
70
+ 0.007478602230548859,
71
+ 0.09729039669036865,
72
+ 0.014121796935796738,
73
+ -0.1283886432647705,
74
+ 0.016886277124285698,
75
+ 0.14353325963020325,
76
+ -0.019632495939731598,
77
+ -0.08626653999090195,
78
+ -0.13174456357955933,
79
+ -0.07509270310401917,
80
+ 0.13293522596359253,
81
+ -0.006963282823562622,
82
+ 0.04489506036043167,
83
+ 0.1364283263683319,
84
+ -0.023780206218361855,
85
+ -0.13672304153442383,
86
+ 0.0834212377667427,
87
+ -0.0881689265370369,
88
+ 0.12765783071517944,
89
+ -0.04777761548757553,
90
+ 0.006771944463253021,
91
+ 0.10008896142244339,
92
+ -0.0004957094788551331,
93
+ -0.3792557418346405,
94
+ -0.2995077669620514,
95
+ -0.18048475682735443,
96
+ -0.05329251289367676,
97
+ 0.15887054800987244,
98
+ -0.05502178147435188,
99
+ -0.002659738063812256,
100
+ -0.1500413417816162,
101
+ 0.02029288560152054,
102
+ -0.13041751086711884,
103
+ -0.02238699235022068,
104
+ 0.13223209977149963,
105
+ 0.008205652236938477,
106
+ 0.09628777951002121,
107
+ -0.005202248692512512,
108
+ 0.06322506815195084,
109
+ 0.2893131375312805,
110
+ 0.13000035285949707,
111
+ -0.12980809807777405,
112
+ -0.19357866048812866,
113
+ 0.010631434619426727,
114
+ -0.09848842024803162,
115
+ 0.43145453929901123,
116
+ -0.07535015791654587,
117
+ 0.030972477048635483,
118
+ -0.005491979420185089,
119
+ -0.23411263525485992,
120
+ 0.0034233778715133667,
121
+ -0.03615764528512955,
122
+ 0.11543036997318268,
123
+ -0.04371267557144165,
124
+ -0.11525161564350128,
125
+ 0.023816093802452087,
126
+ 0.028308294713497162,
127
+ -0.0039406418800354,
128
+ -0.13210836052894592,
129
+ 0.06155262142419815,
130
+ -0.17223545908927917,
131
+ -0.07812541723251343,
132
+ -0.04739491268992424,
133
+ 0.012321650981903076,
134
+ 0.2732156217098236,
135
+ -0.006376683712005615,
136
+ 0.2102227807044983,
137
+ -0.026796162128448486,
138
+ 0.023160047829151154,
139
+ 0.4432758688926697,
140
+ 0.05461269989609718,
141
+ -0.05827128142118454,
142
+ -0.23424984514713287,
143
+ 0.004663914442062378,
144
+ 0.22082097828388214,
145
+ 0.28713545203208923,
146
+ -0.08923299610614777,
147
+ -0.11788474768400192,
148
+ -0.14981813728809357,
149
+ 0.008348524570465088,
150
+ 0.15658962726593018,
151
+ 0.2602955102920532,
152
+ -0.32679831981658936,
153
+ -0.38099929690361023,
154
+ 0.22179332375526428,
155
+ -0.18678224086761475,
156
+ 0.1026342585682869,
157
+ 0.03508329764008522,
158
+ -0.0821741446852684,
159
+ -0.08279386162757874,
160
+ -0.2976434528827667,
161
+ -0.4842967391014099,
162
+ -0.22528287768363953,
163
+ 0.05699944496154785,
164
+ -0.16488179564476013,
165
+ -0.15537670254707336,
166
+ 0.17949746549129486,
167
+ -0.0883849710226059,
168
+ -0.07729420065879822,
169
+ -0.011546742171049118,
170
+ 0.055838439613580704,
171
+ -0.2754920423030853,
172
+ 0.24266156554222107,
173
+ -0.25005173683166504,
174
+ 0.15594978630542755,
175
+ -0.2281457483768463,
176
+ -0.022545501589775085,
177
+ -0.18430665135383606,
178
+ -0.09129363298416138,
179
+ -0.46234992146492004,
180
+ 0.18292169272899628,
181
+ 0.3553994596004486,
182
+ 0.18489143252372742,
183
+ 0.16369718313217163,
184
+ 0.06524109095335007,
185
+ -0.13083520531654358,
186
+ -0.004223830997943878,
187
+ 0.5248246192932129,
188
+ -0.4541511535644531,
189
+ 0.33416515588760376,
190
+ -0.23953655362129211,
191
+ 0.039670318365097046,
192
+ -0.2775384485721588,
193
+ -0.06698162853717804,
194
+ -0.04875987395644188,
195
+ 0.095211923122406,
196
+ -0.2521704435348511,
197
+ -0.1613994985818863,
198
+ -0.11273781210184097,
199
+ 0.089663565158844,
200
+ 0.4533567726612091,
201
+ -0.12889298796653748,
202
+ 0.04630730301141739,
203
+ 0.3440477252006531,
204
+ -0.29735368490219116,
205
+ -0.16942940652370453,
206
+ -0.30063536763191223,
207
+ -0.04887039214372635,
208
+ 0.07650876045227051,
209
+ -0.24708417057991028,
210
+ 0.11167217791080475,
211
+ 0.41300496459007263,
212
+ -0.1990889608860016,
213
+ -0.03628714382648468,
214
+ 0.1947430670261383,
215
+ 0.002185918390750885,
216
+ -0.1734754890203476,
217
+ 0.007325600832700729,
218
+ 0.0758146345615387,
219
+ 0.14343833923339844,
220
+ 0.16034956276416779,
221
+ 0.09238007664680481,
222
+ -0.14523102343082428,
223
+ 0.07370740175247192,
224
+ -0.05756370723247528,
225
+ 0.3471793532371521,
226
+ -0.09545806050300598,
227
+ -0.32518574595451355,
228
+ 0.01974405348300934,
229
+ -0.07413671910762787,
230
+ -0.07332949340343475,
231
+ 0.09689724445343018,
232
+ 0.33527132868766785,
233
+ 0.07647977769374847,
234
+ -0.07537016272544861,
235
+ 0.19729986786842346,
236
+ -0.054191842675209045,
237
+ 0.019159607589244843,
238
+ 0.28645795583724976,
239
+ -0.0029614195227622986,
240
+ 0.050225719809532166,
241
+ 0.058712102472782135,
242
+ -0.020884737372398376,
243
+ 0.32063227891921997,
244
+ 0.13905727863311768,
245
+ -0.08830951899290085,
246
+ -0.2068493664264679,
247
+ -0.5085070133209229,
248
+ -0.19245725870132446,
249
+ 0.07536047697067261,
250
+ 0.3520141541957855,
251
+ -0.004317941144108772,
252
+ 0.11286243796348572,
253
+ 0.4874182343482971,
254
+ 0.197415292263031,
255
+ -0.11710592359304428,
256
+ 0.41149505972862244,
257
+ -0.024338984861969948,
258
+ -0.3128387928009033
259
+ ],
260
+ "Chuck_Male_EN_US": [
261
+ -0.080739326775074,
262
+ -0.05186597257852554,
263
+ -0.04643955081701279,
264
+ -0.16995930671691895,
265
+ -0.08520634472370148,
266
+ 0.26354464888572693,
267
+ -0.16335150599479675,
268
+ 0.03762347623705864,
269
+ 0.12310560047626495,
270
+ 0.11882100999355316,
271
+ 0.25169509649276733,
272
+ 0.16642478108406067,
273
+ 0.04346868768334389,
274
+ 0.05879981815814972,
275
+ -0.10555227845907211,
276
+ 0.098129041492939,
277
+ 0.07805588096380234,
278
+ 0.07993364334106445,
279
+ 0.02878241240978241,
280
+ 0.10626713931560516,
281
+ 0.18884220719337463,
282
+ -0.15791675448417664,
283
+ -0.046336084604263306,
284
+ -0.06054564565420151,
285
+ 0.14667274057865143,
286
+ -0.1686663031578064,
287
+ 0.13676004111766815,
288
+ 0.017875753343105316,
289
+ 0.034988172352313995,
290
+ -0.15061573684215546,
291
+ -0.06622567772865295,
292
+ -0.018525442108511925,
293
+ -0.0815289169549942,
294
+ -0.11815841495990753,
295
+ -0.2079353630542755,
296
+ -0.12242597341537476,
297
+ 0.1685279756784439,
298
+ 0.005029462277889252,
299
+ -0.04868243634700775,
300
+ -0.006423652172088623,
301
+ -0.03062119334936142,
302
+ -0.10892745107412338,
303
+ -0.029393166303634644,
304
+ -0.14687927067279816,
305
+ -0.10593554377555847,
306
+ -0.7461926937103271,
307
+ -0.1311473250389099,
308
+ 0.19617816805839539,
309
+ 0.0034797536209225655,
310
+ 0.017870396375656128,
311
+ 0.1417236328125,
312
+ 0.14160263538360596,
313
+ -0.13305433094501495,
314
+ -0.019239917397499084,
315
+ 0.0768553614616394,
316
+ -0.2461501657962799,
317
+ 0.11662117391824722,
318
+ -0.3004859685897827,
319
+ 0.07660801708698273,
320
+ -0.08291581273078918,
321
+ 0.646587610244751,
322
+ 0.05630920082330704,
323
+ 0.018290594220161438,
324
+ -0.076407790184021,
325
+ -0.022635802626609802,
326
+ -0.033361952751874924,
327
+ 0.13813386857509613,
328
+ 0.23338472843170166,
329
+ 0.1526336669921875,
330
+ -0.010544595308601856,
331
+ 0.0645538792014122,
332
+ -0.12352045625448227,
333
+ 0.23500092327594757,
334
+ 0.023993253707885742,
335
+ -0.18476025760173798,
336
+ 0.08681316673755646,
337
+ -0.24495398998260498,
338
+ 0.1805841475725174,
339
+ 0.019407637417316437,
340
+ -0.1164683923125267,
341
+ 0.04219061881303787,
342
+ -0.05617094039916992,
343
+ -0.06486696004867554,
344
+ 0.11154982447624207,
345
+ 0.1624276340007782,
346
+ 0.037209782749414444,
347
+ 0.024621259421110153,
348
+ -0.011263281106948853,
349
+ 0.07437050342559814,
350
+ -0.027852090075612068,
351
+ -0.38197386264801025,
352
+ -0.12534263730049133,
353
+ -0.15090727806091309,
354
+ -0.016294121742248535,
355
+ 0.20195062458515167,
356
+ -0.10578630119562149,
357
+ 0.0834207683801651,
358
+ -0.2002831995487213,
359
+ 0.08801543712615967,
360
+ -0.1744777411222458,
361
+ -0.019703160971403122,
362
+ 0.18256394565105438,
363
+ 0.019218653440475464,
364
+ -0.06123323366045952,
365
+ 0.03127707168459892,
366
+ 0.1301468461751938,
367
+ 0.2009834200143814,
368
+ 0.07228143513202667,
369
+ -0.05553338676691055,
370
+ -0.44165605306625366,
371
+ 0.27527377009391785,
372
+ -0.08356539905071259,
373
+ 0.5484572649002075,
374
+ -0.22545355558395386,
375
+ 0.10192038118839264,
376
+ 0.13001194596290588,
377
+ -0.1598789542913437,
378
+ 0.03745634853839874,
379
+ 0.1973172128200531,
380
+ 0.10266508162021637,
381
+ -0.10606272518634796,
382
+ -0.043102242052555084,
383
+ 0.023647010326385498,
384
+ 0.0016689617186784744,
385
+ 0.35201117396354675,
386
+ -0.24116483330726624,
387
+ 0.022700302302837372,
388
+ -0.29655206203460693,
389
+ -0.11883702874183655,
390
+ 0.06606853753328323,
391
+ -0.09965553879737854,
392
+ 0.3298850655555725,
393
+ -0.10845916718244553,
394
+ 0.12123875319957733,
395
+ -0.2904745042324066,
396
+ 0.16466909646987915,
397
+ 0.5250499844551086,
398
+ 0.26844123005867004,
399
+ -0.1581430584192276,
400
+ -0.01679089665412903,
401
+ 0.10683909058570862,
402
+ 0.13829728960990906,
403
+ -0.0774451196193695,
404
+ -0.09715490788221359,
405
+ -0.15488898754119873,
406
+ 0.09843119978904724,
407
+ 0.18665491044521332,
408
+ 0.499192476272583,
409
+ 0.25495558977127075,
410
+ -0.3385838270187378,
411
+ -0.11540469527244568,
412
+ 0.3943556845188141,
413
+ -0.028287045657634735,
414
+ 0.10370328277349472,
415
+ 0.3033093214035034,
416
+ -0.13608571887016296,
417
+ -0.07120000571012497,
418
+ -0.14757874608039856,
419
+ -0.2092522382736206,
420
+ -0.349817156791687,
421
+ -0.042082756757736206,
422
+ -0.28092268109321594,
423
+ -0.3474852740764618,
424
+ -0.1188138797879219,
425
+ -0.3396819233894348,
426
+ 0.16733011603355408,
427
+ 0.09606117755174637,
428
+ 0.10766048729419708,
429
+ -0.19903156161308289,
430
+ -0.30723923444747925,
431
+ -0.3617871105670929,
432
+ -0.24389447271823883,
433
+ -0.33159559965133667,
434
+ -0.0794874057173729,
435
+ -0.17680421471595764,
436
+ -0.09732476621866226,
437
+ -0.6020764708518982,
438
+ -0.23046669363975525,
439
+ 0.4663076400756836,
440
+ -0.03177022933959961,
441
+ 0.31536608934402466,
442
+ 0.17449232935905457,
443
+ 0.19207462668418884,
444
+ -0.20476028323173523,
445
+ 0.3841668367385864,
446
+ -0.46485692262649536,
447
+ 0.07715408504009247,
448
+ -0.0481671467423439,
449
+ 0.06056290864944458,
450
+ 0.23023973405361176,
451
+ -0.44577276706695557,
452
+ 0.08608794212341309,
453
+ 0.174083411693573,
454
+ -0.20057682693004608,
455
+ 0.0015126615762710571,
456
+ 0.30561572313308716,
457
+ -0.0823325663805008,
458
+ 0.6210863590240479,
459
+ 0.12966740131378174,
460
+ -0.27340665459632874,
461
+ 0.31147849559783936,
462
+ 0.17376896739006042,
463
+ -0.28636378049850464,
464
+ 0.1761811077594757,
465
+ -0.3044331669807434,
466
+ 0.0771920382976532,
467
+ -0.04131172597408295,
468
+ 0.17433065176010132,
469
+ 0.11375144124031067,
470
+ -0.06075088679790497,
471
+ -0.21101467311382294,
472
+ 0.23215331137180328,
473
+ 0.3220982849597931,
474
+ -0.08772740513086319,
475
+ -0.1110156923532486,
476
+ 0.150890052318573,
477
+ 0.0899096205830574,
478
+ -0.11286906898021698,
479
+ -0.18477720022201538,
480
+ 0.12096066772937775,
481
+ 0.33322685956954956,
482
+ -0.2950510084629059,
483
+ 0.2563823163509369,
484
+ 0.11760752648115158,
485
+ -0.3458101749420166,
486
+ -0.4250616133213043,
487
+ -0.25533783435821533,
488
+ -0.2633964717388153,
489
+ -0.026663780212402344,
490
+ 0.4655682444572449,
491
+ 0.3740382790565491,
492
+ -0.05553853511810303,
493
+ 0.024137284606695175,
494
+ -0.044697582721710205,
495
+ 0.03481140360236168,
496
+ 0.01849237084388733,
497
+ -0.15648233890533447,
498
+ -0.719332218170166,
499
+ 0.5206979513168335,
500
+ -0.022456303238868713,
501
+ 0.6854866743087769,
502
+ -0.32744836807250977,
503
+ -0.08906684815883636,
504
+ -0.02081950753927231,
505
+ -0.8612825870513916,
506
+ -0.1892240047454834,
507
+ 0.07316698133945465,
508
+ 0.4908924400806427,
509
+ 0.30862411856651306,
510
+ 0.3830990791320801,
511
+ 0.38602370023727417,
512
+ 0.25254443287849426,
513
+ 0.26230084896087646,
514
+ 0.12000225484371185,
515
+ 0.0641913115978241,
516
+ -0.5113836526870728
517
+ ],
518
+ "Sol_Female_EN_US": [
519
+ 0.1268293261528015,
520
+ -0.24892280995845795,
521
+ 0.03928159922361374,
522
+ -0.08916330337524414,
523
+ -0.08921554684638977,
524
+ 0.018120769411325455,
525
+ 0.009445525705814362,
526
+ 0.09456969052553177,
527
+ 0.23499509692192078,
528
+ 0.12589207291603088,
529
+ 0.0817081481218338,
530
+ -0.05610091611742973,
531
+ -0.11433179676532745,
532
+ 0.031890347599983215,
533
+ 0.01497705653309822,
534
+ 0.10599376261234283,
535
+ 0.03902814909815788,
536
+ 0.01317581906914711,
537
+ 0.008249595761299133,
538
+ 0.010834900662302971,
539
+ 0.1323947310447693,
540
+ -0.14897435903549194,
541
+ -0.044409990310668945,
542
+ -0.004388481378555298,
543
+ -0.02122711017727852,
544
+ -0.21078309416770935,
545
+ 0.05238814279437065,
546
+ -0.24263539910316467,
547
+ 0.10478609800338745,
548
+ -0.046628206968307495,
549
+ -0.061156079173088074,
550
+ 0.04726453870534897,
551
+ 0.19356507062911987,
552
+ -0.10425321012735367,
553
+ -0.1245705783367157,
554
+ 0.2371465265750885,
555
+ 0.15406547486782074,
556
+ -0.11537078022956848,
557
+ -0.2574460506439209,
558
+ 0.11589224636554718,
559
+ 0.04982087016105652,
560
+ -0.0768856406211853,
561
+ -0.11789155006408691,
562
+ -0.13019400835037231,
563
+ 0.03559808060526848,
564
+ -0.47099581360816956,
565
+ 0.06938941776752472,
566
+ 0.19138163328170776,
567
+ 0.17706745862960815,
568
+ 0.035381563007831573,
569
+ 0.09636449813842773,
570
+ 0.07912801951169968,
571
+ 0.06765618175268173,
572
+ -0.1303500384092331,
573
+ -0.039963360875844955,
574
+ -0.04088369756937027,
575
+ 0.02034657448530197,
576
+ 0.008391611278057098,
577
+ 0.02184874564409256,
578
+ -0.03052680939435959,
579
+ 0.3498419225215912,
580
+ -0.07705945521593094,
581
+ -0.2935195565223694,
582
+ 0.034476667642593384,
583
+ -0.1314329355955124,
584
+ 0.20076632499694824,
585
+ 0.016021449118852615,
586
+ 0.23033341765403748,
587
+ -0.03349122032523155,
588
+ -0.18335162103176117,
589
+ 0.029580311849713326,
590
+ 0.018869629129767418,
591
+ 0.10253989696502686,
592
+ -0.09266053140163422,
593
+ -0.03108178824186325,
594
+ -0.03976592794060707,
595
+ 0.13201536238193512,
596
+ -0.028312936425209045,
597
+ -0.09032510221004486,
598
+ 0.05712374672293663,
599
+ -0.17886731028556824,
600
+ -0.00012268498539924622,
601
+ -0.17655304074287415,
602
+ 0.21560686826705933,
603
+ 0.07977418601512909,
604
+ 0.09157729148864746,
605
+ -0.08235643059015274,
606
+ -0.034677520394325256,
607
+ 0.2231934666633606,
608
+ 0.1851099133491516,
609
+ -0.2730552554130554,
610
+ -0.2409580945968628,
611
+ -0.273377925157547,
612
+ -0.11498671770095825,
613
+ 0.29265373945236206,
614
+ -0.10599346458911896,
615
+ -0.05672678351402283,
616
+ 0.026578396558761597,
617
+ -0.22945210337638855,
618
+ -0.08645745366811752,
619
+ 0.028000690042972565,
620
+ -0.13934218883514404,
621
+ 0.11353091895580292,
622
+ 0.060757409781217575,
623
+ 0.11343018710613251,
624
+ 0.053218141198158264,
625
+ 0.3181232810020447,
626
+ 0.10948897153139114,
627
+ 0.0357043594121933,
628
+ -0.1203552708029747,
629
+ 0.11475016921758652,
630
+ -0.005062885582447052,
631
+ 0.3342074751853943,
632
+ -0.1266603022813797,
633
+ 0.07479999959468842,
634
+ -0.008454116061329842,
635
+ 0.12023192644119263,
636
+ -0.03595118224620819,
637
+ 0.02898475155234337,
638
+ -0.020386993885040283,
639
+ 0.006668185815215111,
640
+ -0.15364103019237518,
641
+ -0.11951534450054169,
642
+ -0.0910012498497963,
643
+ 0.19956853985786438,
644
+ 0.04014497250318527,
645
+ -0.09457655251026154,
646
+ -0.12396776676177979,
647
+ 0.23229674994945526,
648
+ -0.15745335817337036,
649
+ 0.17193259298801422,
650
+ 0.040711648762226105,
651
+ -0.12352880835533142,
652
+ 0.018167633563280106,
653
+ -0.08081409335136414,
654
+ 0.23432570695877075,
655
+ 0.17171189188957214,
656
+ -0.03221336752176285,
657
+ 0.03773265331983566,
658
+ -0.06490489095449448,
659
+ -0.030414387583732605,
660
+ 0.4086611866950989,
661
+ 0.07678371667861938,
662
+ 0.15471185743808746,
663
+ 0.009691998362541199,
664
+ 0.21592354774475098,
665
+ 0.16220787167549133,
666
+ 0.13170170783996582,
667
+ 0.11527039110660553,
668
+ -0.3844143748283386,
669
+ 0.0421525314450264,
670
+ 0.4349702298641205,
671
+ -0.1686660647392273,
672
+ 0.005835492163896561,
673
+ -0.05163434147834778,
674
+ -0.38664859533309937,
675
+ 0.09356559813022614,
676
+ -0.2766155004501343,
677
+ -0.13494873046875,
678
+ -0.07143319398164749,
679
+ -0.0797828882932663,
680
+ -0.10624134540557861,
681
+ -0.05675575137138367,
682
+ 0.2754574418067932,
683
+ 0.11232379078865051,
684
+ -0.026216700673103333,
685
+ -0.37042930722236633,
686
+ 0.04595255106687546,
687
+ -0.08378663659095764,
688
+ 0.113258957862854,
689
+ -0.10497808456420898,
690
+ -0.3882599174976349,
691
+ -0.09268787503242493,
692
+ -0.009513184428215027,
693
+ -0.03547880798578262,
694
+ -0.11325360834598541,
695
+ -0.4920811951160431,
696
+ -0.2420617938041687,
697
+ 0.004631944000720978,
698
+ 0.3054035007953644,
699
+ 0.12272718548774719,
700
+ -0.1861076056957245,
701
+ -0.1328718364238739,
702
+ 0.22628089785575867,
703
+ 0.1674436330795288,
704
+ -0.2189907729625702,
705
+ 0.25414198637008667,
706
+ 0.08179888129234314,
707
+ 0.014794200658798218,
708
+ -0.45081019401550293,
709
+ -0.4995046854019165,
710
+ -0.0721922218799591,
711
+ 0.20731398463249207,
712
+ -0.07364560663700104,
713
+ -0.17112991213798523,
714
+ 0.20308616757392883,
715
+ 0.0781199038028717,
716
+ 0.20510229468345642,
717
+ -0.18790192902088165,
718
+ 0.08215056359767914,
719
+ 0.05191810801625252,
720
+ -0.15418048202991486,
721
+ -0.1164349764585495,
722
+ -0.30107319355010986,
723
+ -0.07877662777900696,
724
+ 0.006951943039894104,
725
+ -0.2136976420879364,
726
+ 0.18753382563591003,
727
+ 0.1558315008878708,
728
+ 0.03319445252418518,
729
+ -0.20069114863872528,
730
+ 0.5186187028884888,
731
+ 0.29910457134246826,
732
+ -0.022099845111370087,
733
+ -0.2004503756761551,
734
+ 0.11575216799974442,
735
+ 0.06575708091259003,
736
+ 0.29491111636161804,
737
+ 0.042733918875455856,
738
+ 0.13065889477729797,
739
+ -0.025842148810625076,
740
+ -0.48179322481155396,
741
+ 0.12712322175502777,
742
+ -0.22928954660892487,
743
+ -0.4731486141681671,
744
+ 0.2035326510667801,
745
+ -0.33841538429260254,
746
+ -0.09808406233787537,
747
+ 0.30838146805763245,
748
+ 0.06581465899944305,
749
+ 0.047930970788002014,
750
+ 0.01692097634077072,
751
+ 0.22469750046730042,
752
+ -0.05486059561371803,
753
+ 0.35013893246650696,
754
+ -0.283150851726532,
755
+ 0.05401553213596344,
756
+ -0.04293721914291382,
757
+ 0.03238523006439209,
758
+ 0.30903106927871704,
759
+ 0.318570613861084,
760
+ -0.36268168687820435,
761
+ 0.01699633151292801,
762
+ -0.122194804251194,
763
+ -0.08210300654172897,
764
+ -0.08749544620513916,
765
+ 0.04085458070039749,
766
+ 0.26824674010276794,
767
+ -0.20407041907310486,
768
+ 0.3028109669685364,
769
+ 0.11649337410926819,
770
+ -0.06361576169729233,
771
+ 0.022716812789440155,
772
+ 0.8145036101341248,
773
+ -0.001978829503059387,
774
+ -0.19634583592414856
775
+ ],
776
+ "Georgia_Female_EN_US": [
777
+ 0.14149390161037445,
778
+ -0.19759099185466766,
779
+ 0.029538815841078758,
780
+ -0.1644008457660675,
781
+ -0.16974563896656036,
782
+ 0.15899056196212769,
783
+ -0.08187974989414215,
784
+ 0.06346520036458969,
785
+ 0.171818345785141,
786
+ -0.03900427371263504,
787
+ 0.08924897015094757,
788
+ 0.11517727375030518,
789
+ -0.09470553696155548,
790
+ 0.039182037115097046,
791
+ -0.0800875872373581,
792
+ 0.027626454830169678,
793
+ 0.057931605726480484,
794
+ -0.05594071373343468,
795
+ -0.01764649897813797,
796
+ 0.1859845221042633,
797
+ 0.19512777030467987,
798
+ -0.2715531587600708,
799
+ -0.15435153245925903,
800
+ -0.07994608581066132,
801
+ 0.0034161433577537537,
802
+ -0.27405399084091187,
803
+ 0.06616479158401489,
804
+ 0.028649676591157913,
805
+ 0.24419546127319336,
806
+ -0.053172968327999115,
807
+ -0.06803376972675323,
808
+ 0.08285264670848846,
809
+ -0.03827327489852905,
810
+ -0.05404618754982948,
811
+ -0.1717120110988617,
812
+ 0.0565122552216053,
813
+ 0.12560471892356873,
814
+ -0.07519722729921341,
815
+ -0.005836378782987595,
816
+ -0.049631841480731964,
817
+ 0.035924024879932404,
818
+ -0.20555508136749268,
819
+ -0.16342787444591522,
820
+ -0.011107422411441803,
821
+ -0.09510314464569092,
822
+ -0.8373715877532959,
823
+ -0.056464750319719315,
824
+ 0.15504246950149536,
825
+ 0.12261460721492767,
826
+ -0.002536684274673462,
827
+ 0.14500755071640015,
828
+ 0.17729829251766205,
829
+ -0.16478273272514343,
830
+ -0.07822693139314651,
831
+ 0.03328864276409149,
832
+ -0.3484482765197754,
833
+ 0.07604808360338211,
834
+ -0.22294224798679352,
835
+ 0.06523670256137848,
836
+ -0.22709456086158752,
837
+ 0.8876799941062927,
838
+ 0.0027947500348091125,
839
+ 0.0007318109273910522,
840
+ 0.002863973379135132,
841
+ -0.21034874022006989,
842
+ 0.051948100328445435,
843
+ -0.004550091922283173,
844
+ 0.17473770678043365,
845
+ 0.1153031662106514,
846
+ -0.09051527082920074,
847
+ -0.07489325851202011,
848
+ 0.03644700348377228,
849
+ 0.1395515352487564,
850
+ -0.010498672723770142,
851
+ -0.16194367408752441,
852
+ 0.11820540577173233,
853
+ -0.1125202625989914,
854
+ 0.07222796976566315,
855
+ 0.0924602597951889,
856
+ 0.009883157908916473,
857
+ 0.14233753085136414,
858
+ -0.04211493209004402,
859
+ -0.09790381044149399,
860
+ 0.1432836949825287,
861
+ -0.0207438375800848,
862
+ 0.09433138370513916,
863
+ 0.03480076417326927,
864
+ 0.014073198661208153,
865
+ 0.1459684669971466,
866
+ 0.06838452816009521,
867
+ -0.4587509036064148,
868
+ -0.24484041333198547,
869
+ -0.13059453666210175,
870
+ -0.014020655304193497,
871
+ -0.04615045711398125,
872
+ -0.10020460933446884,
873
+ 0.05875978618860245,
874
+ -0.11167144775390625,
875
+ -0.08788008987903595,
876
+ -0.06586126983165741,
877
+ 0.0656682550907135,
878
+ 0.06709162890911102,
879
+ 0.02795044332742691,
880
+ 0.11588016897439957,
881
+ -0.09147179126739502,
882
+ 0.08282454311847687,
883
+ 0.19108889997005463,
884
+ -0.09372390806674957,
885
+ -0.0004408508539199829,
886
+ -0.40825721621513367,
887
+ 0.24378983676433563,
888
+ 0.06450286507606506,
889
+ 0.40147995948791504,
890
+ -0.12383461743593216,
891
+ 0.09264419227838516,
892
+ 0.04705287888646126,
893
+ -0.0979108139872551,
894
+ -0.04610448330640793,
895
+ 0.06577446311712265,
896
+ 0.06107745319604874,
897
+ -0.0739186629652977,
898
+ 0.03969721123576164,
899
+ 0.0321660116314888,
900
+ 0.2023421972990036,
901
+ 0.22365602850914001,
902
+ -0.33337128162384033,
903
+ 0.10086256265640259,
904
+ -0.23017814755439758,
905
+ 0.15227298438549042,
906
+ 0.08262811601161957,
907
+ 0.028533905744552612,
908
+ 0.16887661814689636,
909
+ -0.1553392857313156,
910
+ 0.04320569336414337,
911
+ -0.18707242608070374,
912
+ 0.021115079522132874,
913
+ 0.3647507131099701,
914
+ 0.2119525820016861,
915
+ -0.02559354156255722,
916
+ 0.268862247467041,
917
+ -0.03270912170410156,
918
+ 0.01871364563703537,
919
+ -0.0919923335313797,
920
+ -0.13874371349811554,
921
+ -0.092261902987957,
922
+ 0.0468045249581337,
923
+ 0.29371997714042664,
924
+ 0.21063821017742157,
925
+ -0.12585729360580444,
926
+ -0.4214266538619995,
927
+ -0.17777106165885925,
928
+ 0.14042110741138458,
929
+ -0.1407075822353363,
930
+ -0.1934659481048584,
931
+ 0.015365049242973328,
932
+ -0.12806877493858337,
933
+ -0.01690494269132614,
934
+ -0.2808881402015686,
935
+ -0.32276445627212524,
936
+ -0.04267498850822449,
937
+ 0.04772596061229706,
938
+ -0.13011249899864197,
939
+ -0.4758068323135376,
940
+ 0.21355567872524261,
941
+ -0.12164445221424103,
942
+ -0.10112264752388,
943
+ -0.0498490147292614,
944
+ 0.2474687546491623,
945
+ -0.40088728070259094,
946
+ -0.21887987852096558,
947
+ -0.4579368829727173,
948
+ -0.21036852896213531,
949
+ -0.18377023935317993,
950
+ -0.23978865146636963,
951
+ -0.15847837924957275,
952
+ -0.36417555809020996,
953
+ -0.1878042072057724,
954
+ -0.12206757068634033,
955
+ 0.4226543605327606,
956
+ -0.00703008845448494,
957
+ 0.17988801002502441,
958
+ 0.235824853181839,
959
+ 0.0072716958820819855,
960
+ -0.022622771561145782,
961
+ 0.4673866033554077,
962
+ -0.4320169687271118,
963
+ 0.27932173013687134,
964
+ -0.1372895985841751,
965
+ 0.13946086168289185,
966
+ -0.011557169258594513,
967
+ -0.11092820018529892,
968
+ -0.0025858357548713684,
969
+ 0.06566678732633591,
970
+ -0.25665807723999023,
971
+ -0.2400297075510025,
972
+ 0.055859118700027466,
973
+ -0.24934203922748566,
974
+ -0.05649476498365402,
975
+ -0.021823860704898834,
976
+ 0.07491856813430786,
977
+ 0.028743356466293335,
978
+ 0.21002137660980225,
979
+ -0.5215728282928467,
980
+ 0.05622958019375801,
981
+ -0.2222532033920288,
982
+ 0.1794230341911316,
983
+ 0.11855436116456985,
984
+ 0.14668777585029602,
985
+ 0.45487338304519653,
986
+ -0.1859143078327179,
987
+ -0.05654382333159447,
988
+ -0.16731679439544678,
989
+ -0.1562391221523285,
990
+ 0.16424456238746643,
991
+ 0.2154158502817154,
992
+ 0.3380601406097412,
993
+ 0.12264357507228851,
994
+ 0.3392817974090576,
995
+ -0.060549046844244,
996
+ -0.14765986800193787,
997
+ 0.11267101764678955,
998
+ -0.24056652188301086,
999
+ 0.03510596603155136,
1000
+ 0.10618807375431061,
1001
+ -0.15641556680202484,
1002
+ -0.24543322622776031,
1003
+ -0.19173413515090942,
1004
+ -0.011205855756998062,
1005
+ 0.24790503084659576,
1006
+ 0.32398396730422974,
1007
+ 0.22276073694229126,
1008
+ 0.018482085317373276,
1009
+ -0.03579630330204964,
1010
+ 0.05034150183200836,
1011
+ 0.29536929726600647,
1012
+ -0.050280749797821045,
1013
+ -0.014656215906143188,
1014
+ -0.3677038550376892,
1015
+ 0.41170692443847656,
1016
+ 0.15874658524990082,
1017
+ 0.34870871901512146,
1018
+ -0.23689004778862,
1019
+ 0.2970763146877289,
1020
+ 0.0950806587934494,
1021
+ -0.1269141584634781,
1022
+ -0.11931035667657852,
1023
+ 0.13633345067501068,
1024
+ 0.42843636870384216,
1025
+ 0.03449300676584244,
1026
+ 0.4283212721347809,
1027
+ 0.2762477397918701,
1028
+ 0.1679811179637909,
1029
+ 0.2898493707180023,
1030
+ -0.04722334071993828,
1031
+ -0.047664619982242584,
1032
+ -0.22933121025562286
1033
+ ],
1034
+ "Marry_Female_EN_US": [
1035
+ 0.10095467418432236,
1036
+ 0.046844299882650375,
1037
+ 0.05421638488769531,
1038
+ -0.09417131543159485,
1039
+ -0.18054454028606415,
1040
+ 0.0935884565114975,
1041
+ -0.11312611401081085,
1042
+ 0.02784895896911621,
1043
+ 0.13980317115783691,
1044
+ -0.08165936917066574,
1045
+ 0.10532249510288239,
1046
+ 0.09783805906772614,
1047
+ 0.01645722985267639,
1048
+ 0.04216833412647247,
1049
+ -0.1025347113609314,
1050
+ 0.09854228794574738,
1051
+ 0.22359934449195862,
1052
+ 0.08323220163583755,
1053
+ 0.003406684845685959,
1054
+ 0.30394530296325684,
1055
+ 0.3451034426689148,
1056
+ -0.29881906509399414,
1057
+ -0.08311712741851807,
1058
+ -0.109955795109272,
1059
+ 0.07522188872098923,
1060
+ -0.38127946853637695,
1061
+ 0.029290571808815002,
1062
+ -0.012949233874678612,
1063
+ 0.22986799478530884,
1064
+ -0.22929272055625916,
1065
+ -0.11333343386650085,
1066
+ 0.1066955029964447,
1067
+ -0.03432668745517731,
1068
+ -0.10237376391887665,
1069
+ -0.11407271027565002,
1070
+ -0.01221979409456253,
1071
+ 0.19828736782073975,
1072
+ -0.08432801812887192,
1073
+ -0.07885870337486267,
1074
+ -0.09633795917034149,
1075
+ 0.07740725576877594,
1076
+ -0.14024686813354492,
1077
+ 0.007659006863832474,
1078
+ -0.061528440564870834,
1079
+ -0.15116117894649506,
1080
+ -0.9346913695335388,
1081
+ -0.19321316480636597,
1082
+ 0.09346023201942444,
1083
+ 0.008720653131604195,
1084
+ 0.00935569778084755,
1085
+ 0.059522844851017,
1086
+ -0.0004963874816894531,
1087
+ -0.11127720773220062,
1088
+ -0.015941940248012543,
1089
+ 0.11759459227323532,
1090
+ -0.38565748929977417,
1091
+ 0.014210086315870285,
1092
+ -0.4402802586555481,
1093
+ -0.03058554232120514,
1094
+ -0.15320685505867004,
1095
+ 0.925262451171875,
1096
+ 0.05237797647714615,
1097
+ -0.06457516551017761,
1098
+ 0.04277027025818825,
1099
+ -0.09071764349937439,
1100
+ -0.023430675268173218,
1101
+ 0.018660694360733032,
1102
+ 0.28416356444358826,
1103
+ 0.15927383303642273,
1104
+ -0.036094918847084045,
1105
+ -0.18289241194725037,
1106
+ -0.16174408793449402,
1107
+ 0.1352432817220688,
1108
+ -0.11155793070793152,
1109
+ -0.21458107233047485,
1110
+ -0.007756996899843216,
1111
+ -0.17188167572021484,
1112
+ -0.014599844813346863,
1113
+ 0.03282542526721954,
1114
+ 0.10045303404331207,
1115
+ 0.11301460862159729,
1116
+ -0.04795491322875023,
1117
+ -0.05172593891620636,
1118
+ 0.11332973837852478,
1119
+ 0.07555423676967621,
1120
+ 0.10994540899991989,
1121
+ -0.07060486078262329,
1122
+ 0.004575258120894432,
1123
+ 0.11668689548969269,
1124
+ 0.10401762276887894,
1125
+ -0.6524990797042847,
1126
+ -0.2616415023803711,
1127
+ -0.2577282190322876,
1128
+ 0.013369720429182053,
1129
+ 0.015914201736450195,
1130
+ -0.1528300940990448,
1131
+ 0.06751468777656555,
1132
+ -0.2593517601490021,
1133
+ -0.04114726930856705,
1134
+ -0.12167482078075409,
1135
+ -0.016297057271003723,
1136
+ 0.050480689853429794,
1137
+ 0.08136023581027985,
1138
+ 0.10589707642793655,
1139
+ 0.0009140158072113991,
1140
+ 0.09637215733528137,
1141
+ 0.13627931475639343,
1142
+ -0.08097885549068451,
1143
+ -0.04615870863199234,
1144
+ -0.3712182939052582,
1145
+ 0.17477694153785706,
1146
+ -0.03713107109069824,
1147
+ 0.3938117027282715,
1148
+ -0.16526120901107788,
1149
+ 0.046960875391960144,
1150
+ 0.13634932041168213,
1151
+ -0.2535812258720398,
1152
+ -0.004662476480007172,
1153
+ -0.1287195086479187,
1154
+ 0.04682536423206329,
1155
+ -0.0553663894534111,
1156
+ -0.007208423689007759,
1157
+ -0.03398251533508301,
1158
+ 0.04032691568136215,
1159
+ 0.10826413333415985,
1160
+ -0.3297663927078247,
1161
+ 0.12369295954704285,
1162
+ -0.22297564148902893,
1163
+ 0.016204068437218666,
1164
+ 0.22467367351055145,
1165
+ 0.06251698732376099,
1166
+ 0.25536197423934937,
1167
+ -0.0313156396150589,
1168
+ 0.23897168040275574,
1169
+ -0.125069260597229,
1170
+ 0.05682749301195145,
1171
+ 0.2709246873855591,
1172
+ 0.11623440682888031,
1173
+ -0.08916947990655899,
1174
+ -0.0015965849161148071,
1175
+ 0.021189596503973007,
1176
+ 0.1729092001914978,
1177
+ -0.20169132947921753,
1178
+ -0.010327596217393875,
1179
+ -0.036886122077703476,
1180
+ 0.01917070895433426,
1181
+ 0.18902111053466797,
1182
+ 0.5179728269577026,
1183
+ 0.31896597146987915,
1184
+ -0.7427007555961609,
1185
+ -0.4137954115867615,
1186
+ 0.06960596889257431,
1187
+ 0.06620097160339355,
1188
+ -0.1536514014005661,
1189
+ 0.1503698229789734,
1190
+ -0.14556577801704407,
1191
+ 0.14588545262813568,
1192
+ -0.18597960472106934,
1193
+ -0.342746764421463,
1194
+ 0.05013357102870941,
1195
+ -0.02868656814098358,
1196
+ -0.26822707056999207,
1197
+ -0.3400660753250122,
1198
+ -0.02838587388396263,
1199
+ 0.004168674349784851,
1200
+ -0.17664480209350586,
1201
+ 0.020639866590499878,
1202
+ 0.14682283997535706,
1203
+ -0.2350459098815918,
1204
+ -0.19191408157348633,
1205
+ -0.1417776346206665,
1206
+ -0.15922360122203827,
1207
+ -0.2131480872631073,
1208
+ -0.07812295854091644,
1209
+ -0.22641682624816895,
1210
+ -0.08451198041439056,
1211
+ -0.27697646617889404,
1212
+ -0.16417096555233002,
1213
+ 0.17140953242778778,
1214
+ -0.014865081757307053,
1215
+ 0.1978265941143036,
1216
+ 0.17148619890213013,
1217
+ 0.051121003925800323,
1218
+ -0.0503043532371521,
1219
+ 0.4206354022026062,
1220
+ -0.6276400089263916,
1221
+ 0.19541236758232117,
1222
+ -0.05150662735104561,
1223
+ 0.20107480883598328,
1224
+ 0.30449116230010986,
1225
+ -0.2169422060251236,
1226
+ 0.07420805841684341,
1227
+ 0.19388242065906525,
1228
+ -0.09795433282852173,
1229
+ -0.3506614565849304,
1230
+ 0.29341161251068115,
1231
+ 0.036286331713199615,
1232
+ 0.2008945643901825,
1233
+ -0.13470220565795898,
1234
+ -0.3342384099960327,
1235
+ 0.049659550189971924,
1236
+ -0.23403503000736237,
1237
+ -0.2438443899154663,
1238
+ -0.0661768913269043,
1239
+ -0.15710312128067017,
1240
+ 0.06331466138362885,
1241
+ 0.1287412941455841,
1242
+ 0.2185135930776596,
1243
+ 0.2592580318450928,
1244
+ -0.25041234493255615,
1245
+ 0.04421650990843773,
1246
+ 0.031913772225379944,
1247
+ 0.1675594300031662,
1248
+ 0.1488073468208313,
1249
+ -0.14290811121463776,
1250
+ 0.3285759687423706,
1251
+ 0.22858765721321106,
1252
+ 0.3819029927253723,
1253
+ -0.04735409840941429,
1254
+ -0.18470162153244019,
1255
+ 0.2156306505203247,
1256
+ -0.262035995721817,
1257
+ 0.1106458529829979,
1258
+ -0.33096078038215637,
1259
+ -0.40564554929733276,
1260
+ -0.1130962148308754,
1261
+ -0.4035260081291199,
1262
+ 0.009994406253099442,
1263
+ 0.19823773205280304,
1264
+ 0.09995241463184357,
1265
+ 0.10737255960702896,
1266
+ 0.16501155495643616,
1267
+ -0.21067723631858826,
1268
+ -0.011145517230033875,
1269
+ 0.013040252029895782,
1270
+ -0.3106451630592346,
1271
+ -0.048852063715457916,
1272
+ -0.2291208952665329,
1273
+ 0.28707051277160645,
1274
+ 0.11026108264923096,
1275
+ 0.5360386967658997,
1276
+ -0.1761239767074585,
1277
+ 0.07656016945838928,
1278
+ -0.07331065833568573,
1279
+ -0.47247397899627686,
1280
+ -0.21432432532310486,
1281
+ -0.21592572331428528,
1282
+ 0.6710861921310425,
1283
+ 0.11024707555770874,
1284
+ 0.19684234261512756,
1285
+ 0.2528229355812073,
1286
+ 0.21830880641937256,
1287
+ 0.1830369234085083,
1288
+ 0.07172520458698273,
1289
+ 0.24994215369224548,
1290
+ -0.14005254209041595
1291
+ ],
1292
+ "Samuel_Male_EN_US": [
1293
+ -0.12619435787200928,
1294
+ -0.11846257001161575,
1295
+ 0.04108911007642746,
1296
+ -0.10919006168842316,
1297
+ -0.18582119047641754,
1298
+ 0.3603861629962921,
1299
+ -0.08595605194568634,
1300
+ -0.02000698447227478,
1301
+ 0.19657589495182037,
1302
+ 0.1481103152036667,
1303
+ 0.15841630101203918,
1304
+ 0.13725560903549194,
1305
+ -0.023550238460302353,
1306
+ 0.11064086854457855,
1307
+ 0.0004522055387496948,
1308
+ 0.039599962532520294,
1309
+ 0.03390733152627945,
1310
+ -0.0010563544929027557,
1311
+ -0.06491883099079132,
1312
+ 0.21764393150806427,
1313
+ 0.16938678920269012,
1314
+ 0.11513420194387436,
1315
+ 0.08827359974384308,
1316
+ -0.0926792100071907,
1317
+ 0.14648687839508057,
1318
+ -0.21553286910057068,
1319
+ 0.023113107308745384,
1320
+ -0.121593177318573,
1321
+ 0.11240999400615692,
1322
+ -0.12347493320703506,
1323
+ -0.18039049208164215,
1324
+ 0.1588599681854248,
1325
+ -0.17081257700920105,
1326
+ -0.2037820667028427,
1327
+ -0.1563880443572998,
1328
+ -0.0917324647307396,
1329
+ 0.03558758646249771,
1330
+ -0.11815845966339111,
1331
+ -0.20688572525978088,
1332
+ -0.0739545151591301,
1333
+ -0.0853046327829361,
1334
+ -0.21343617141246796,
1335
+ 0.04951489716768265,
1336
+ -0.44510698318481445,
1337
+ -0.09933532774448395,
1338
+ -0.8458589911460876,
1339
+ -0.16738075017929077,
1340
+ 0.16498824954032898,
1341
+ 0.01717434823513031,
1342
+ -0.06231179088354111,
1343
+ 0.16252321004867554,
1344
+ 0.04281383752822876,
1345
+ -0.12609757483005524,
1346
+ 0.05567052215337753,
1347
+ -0.027309387922286987,
1348
+ -0.3515397310256958,
1349
+ 0.04615774750709534,
1350
+ -0.6998573541641235,
1351
+ 0.06659585237503052,
1352
+ -0.13769188523292542,
1353
+ 0.6031708717346191,
1354
+ 0.011859655380249023,
1355
+ -0.33847033977508545,
1356
+ -0.12553080916404724,
1357
+ -0.18536464869976044,
1358
+ -0.007513280957937241,
1359
+ 0.519316554069519,
1360
+ 0.23655596375465393,
1361
+ 0.24828562140464783,
1362
+ 0.13927540183067322,
1363
+ 0.14041166007518768,
1364
+ -0.09467436373233795,
1365
+ 0.11043473333120346,
1366
+ -0.06588282436132431,
1367
+ -0.11430786550045013,
1368
+ 0.026140939444303513,
1369
+ -0.2597509026527405,
1370
+ 0.24612551927566528,
1371
+ 0.10610029101371765,
1372
+ -0.23051029443740845,
1373
+ -0.2547153830528259,
1374
+ -0.002995643764734268,
1375
+ 0.17297737300395966,
1376
+ 0.03597598150372505,
1377
+ 0.15152215957641602,
1378
+ -0.06193822994828224,
1379
+ -0.07088689506053925,
1380
+ 0.03826475143432617,
1381
+ 0.08488129824399948,
1382
+ 0.2690422534942627,
1383
+ -0.5332049131393433,
1384
+ -0.2220773696899414,
1385
+ -0.5455571413040161,
1386
+ -0.09902779757976532,
1387
+ 0.21370843052864075,
1388
+ -0.14772546291351318,
1389
+ 0.17388656735420227,
1390
+ -0.12971428036689758,
1391
+ 0.019031524658203125,
1392
+ -0.03160820156335831,
1393
+ 0.002624817192554474,
1394
+ 0.023578234016895294,
1395
+ 0.12251117080450058,
1396
+ -0.0782250463962555,
1397
+ 0.03130299225449562,
1398
+ 0.11962416768074036,
1399
+ 0.23477508127689362,
1400
+ 0.07299475371837616,
1401
+ -0.0542200468480587,
1402
+ -0.4101184606552124,
1403
+ 0.08486519753932953,
1404
+ -0.04950159043073654,
1405
+ 0.44324159622192383,
1406
+ -0.20634889602661133,
1407
+ 0.059250980615615845,
1408
+ -0.016344502568244934,
1409
+ -0.10346954315900803,
1410
+ 0.05175183713436127,
1411
+ 0.10785773396492004,
1412
+ -0.13179540634155273,
1413
+ -0.21312423050403595,
1414
+ 0.08348912745714188,
1415
+ -0.1100846529006958,
1416
+ -0.0912843644618988,
1417
+ 0.16458404064178467,
1418
+ -0.22458869218826294,
1419
+ 0.057109322398900986,
1420
+ -0.14130070805549622,
1421
+ -0.27792462706565857,
1422
+ 0.2201579511165619,
1423
+ 0.14192339777946472,
1424
+ 0.370261013507843,
1425
+ -0.1133350059390068,
1426
+ 0.5210106372833252,
1427
+ -0.2802170515060425,
1428
+ 0.2284509539604187,
1429
+ 0.08346766233444214,
1430
+ 0.2824746072292328,
1431
+ -0.2277216911315918,
1432
+ 0.28492996096611023,
1433
+ 0.13533133268356323,
1434
+ 0.17641571164131165,
1435
+ 0.055212635546922684,
1436
+ -0.1420554518699646,
1437
+ -0.3370305895805359,
1438
+ -0.05939646065235138,
1439
+ -0.012498218566179276,
1440
+ 0.3336101472377777,
1441
+ -0.009854704141616821,
1442
+ -0.21461555361747742,
1443
+ -0.06897716224193573,
1444
+ 0.42768532037734985,
1445
+ 0.2918033301830292,
1446
+ 0.17972910404205322,
1447
+ 0.08387543261051178,
1448
+ -0.3834030032157898,
1449
+ 0.04259374737739563,
1450
+ -0.24948984384536743,
1451
+ -0.4711057245731354,
1452
+ 0.23269453644752502,
1453
+ -0.11432869732379913,
1454
+ -0.3319881558418274,
1455
+ -0.5810990333557129,
1456
+ -0.16500617563724518,
1457
+ -0.513327419757843,
1458
+ -0.22280623018741608,
1459
+ -0.06446528434753418,
1460
+ 0.053828924894332886,
1461
+ -0.3869067430496216,
1462
+ -0.18398475646972656,
1463
+ -0.39183861017227173,
1464
+ -0.1645130217075348,
1465
+ -0.10562220215797424,
1466
+ 0.09369634836912155,
1467
+ -0.10099713504314423,
1468
+ -0.2670536935329437,
1469
+ -0.3405263423919678,
1470
+ -0.4056051969528198,
1471
+ 0.4251013398170471,
1472
+ -0.06249173730611801,
1473
+ 0.045685671269893646,
1474
+ 0.4523245692253113,
1475
+ 0.03759829327464104,
1476
+ -0.17996317148208618,
1477
+ 0.4454271197319031,
1478
+ -0.9131506681442261,
1479
+ 0.12587328255176544,
1480
+ 0.03575079143047333,
1481
+ 0.1569804549217224,
1482
+ -0.005473516881465912,
1483
+ -0.20985543727874756,
1484
+ 0.02623889595270157,
1485
+ 0.27007320523262024,
1486
+ -0.10873401910066605,
1487
+ 0.05130569636821747,
1488
+ -0.0011592544615268707,
1489
+ -0.0032558459788560867,
1490
+ 0.3350878059864044,
1491
+ 0.14362351596355438,
1492
+ -0.046291008591651917,
1493
+ 0.1339847445487976,
1494
+ 0.054939839988946915,
1495
+ -0.20351824164390564,
1496
+ 0.13673129677772522,
1497
+ -0.5390269160270691,
1498
+ 0.20881281793117523,
1499
+ -0.12060403823852539,
1500
+ 0.08859001100063324,
1501
+ -0.025972001254558563,
1502
+ -0.4430112838745117,
1503
+ -0.004151973873376846,
1504
+ 0.18464192748069763,
1505
+ 0.3526911437511444,
1506
+ -0.09955041110515594,
1507
+ 0.10740470886230469,
1508
+ 0.35204750299453735,
1509
+ 0.013931604102253914,
1510
+ 0.5496764183044434,
1511
+ 0.004158753901720047,
1512
+ 0.2092914879322052,
1513
+ 0.09148923307657242,
1514
+ -0.2677595019340515,
1515
+ 0.044244516640901566,
1516
+ 0.25607749819755554,
1517
+ -0.3345734179019928,
1518
+ -0.251026451587677,
1519
+ -0.5243716239929199,
1520
+ -0.07589935511350632,
1521
+ 0.2236466407775879,
1522
+ 0.692629337310791,
1523
+ 0.30974945425987244,
1524
+ -0.05844153091311455,
1525
+ 0.03120841458439827,
1526
+ 0.06444196403026581,
1527
+ -0.04019276052713394,
1528
+ 0.20844346284866333,
1529
+ 0.02490842342376709,
1530
+ -0.4918057918548584,
1531
+ 0.17454466223716736,
1532
+ 0.008414536714553833,
1533
+ 0.3902796804904938,
1534
+ -0.358223557472229,
1535
+ 0.03861651197075844,
1536
+ 0.18186673521995544,
1537
+ -0.527253270149231,
1538
+ -0.13051800429821014,
1539
+ 0.05706249922513962,
1540
+ 0.6442924737930298,
1541
+ 0.1802804172039032,
1542
+ 0.41333693265914917,
1543
+ 0.23335036635398865,
1544
+ 0.1602075695991516,
1545
+ 0.05822325870394707,
1546
+ 0.07076271623373032,
1547
+ 0.1175406351685524,
1548
+ -0.11005706340074539
1549
+ ],
1550
+ "Peter_Male_EN_US": [
1551
+ -0.02671806514263153,
1552
+ -0.1403174251317978,
1553
+ 0.05001065880060196,
1554
+ -0.1078786849975586,
1555
+ -0.11178930848836899,
1556
+ 0.35923928022384644,
1557
+ -0.10216598212718964,
1558
+ -0.0744534507393837,
1559
+ 0.1513819694519043,
1560
+ 0.033666566014289856,
1561
+ 0.18034929037094116,
1562
+ 0.17279928922653198,
1563
+ 0.025053754448890686,
1564
+ -0.041277479380369186,
1565
+ -0.017297936603426933,
1566
+ 0.089497409760952,
1567
+ 0.09309914708137512,
1568
+ -0.013885125517845154,
1569
+ 0.006094053387641907,
1570
+ 0.17924150824546814,
1571
+ 0.24564367532730103,
1572
+ 0.0279664546251297,
1573
+ -0.0281650610268116,
1574
+ -0.21447591483592987,
1575
+ 0.05961482226848602,
1576
+ -0.24900272488594055,
1577
+ 0.08882076293230057,
1578
+ -0.08165736496448517,
1579
+ 0.10724847763776779,
1580
+ -0.12638989090919495,
1581
+ -0.17386965453624725,
1582
+ 0.13405269384384155,
1583
+ -0.34381765127182007,
1584
+ -0.14751896262168884,
1585
+ -0.22588366270065308,
1586
+ -0.1478700041770935,
1587
+ 0.17554007470607758,
1588
+ -0.06141895055770874,
1589
+ -0.08225107192993164,
1590
+ -0.11144131422042847,
1591
+ -0.06510056555271149,
1592
+ -0.28190499544143677,
1593
+ 0.038482390344142914,
1594
+ -0.27125123143196106,
1595
+ -0.18446698784828186,
1596
+ -0.9286922812461853,
1597
+ -0.22221821546554565,
1598
+ 0.1890208125114441,
1599
+ -0.019690819084644318,
1600
+ -0.0410115122795105,
1601
+ 0.020294375717639923,
1602
+ 0.027921512722969055,
1603
+ -0.1279190480709076,
1604
+ 0.147661954164505,
1605
+ -0.06851989030838013,
1606
+ -0.3743244409561157,
1607
+ 0.16605032980442047,
1608
+ -0.6898317337036133,
1609
+ 0.1322338581085205,
1610
+ -0.24458415806293488,
1611
+ 0.8091621398925781,
1612
+ -0.0020183511078357697,
1613
+ -0.2860056161880493,
1614
+ -0.101268470287323,
1615
+ -0.12195206433534622,
1616
+ -0.0030680038034915924,
1617
+ 0.35305753350257874,
1618
+ 0.18254509568214417,
1619
+ 0.15022733807563782,
1620
+ 0.05763908848166466,
1621
+ 0.05388329550623894,
1622
+ -0.1870671808719635,
1623
+ 0.16868555545806885,
1624
+ -0.005561813712120056,
1625
+ -0.038571834564208984,
1626
+ 0.04676483944058418,
1627
+ -0.30886393785476685,
1628
+ 0.167225182056427,
1629
+ 0.09490098804235458,
1630
+ -0.1838131844997406,
1631
+ -0.16072562336921692,
1632
+ -0.07846863567829132,
1633
+ -0.02979177236557007,
1634
+ 0.11231174319982529,
1635
+ 0.12191181629896164,
1636
+ 0.0011293292045593262,
1637
+ 0.00034183263778686523,
1638
+ 0.03643456846475601,
1639
+ -0.004104208201169968,
1640
+ 0.0210350900888443,
1641
+ -0.5258797407150269,
1642
+ -0.28434744477272034,
1643
+ -0.3846287727355957,
1644
+ 0.028454381972551346,
1645
+ 0.268708735704422,
1646
+ -0.1812271922826767,
1647
+ 0.14686831831932068,
1648
+ -0.19878965616226196,
1649
+ 0.014050750061869621,
1650
+ -0.08926080912351608,
1651
+ 0.005555577576160431,
1652
+ 0.031308822333812714,
1653
+ 0.06296883523464203,
1654
+ -0.030255869030952454,
1655
+ 0.014618240296840668,
1656
+ 0.15111848711967468,
1657
+ 0.08761651813983917,
1658
+ 0.017063427716493607,
1659
+ -0.10042140632867813,
1660
+ -0.5389280915260315,
1661
+ 0.01812286674976349,
1662
+ -0.05892270803451538,
1663
+ 0.6147855520248413,
1664
+ -0.2805640995502472,
1665
+ 0.04736167937517166,
1666
+ 0.08966498076915741,
1667
+ -0.21231184899806976,
1668
+ 0.029807910323143005,
1669
+ 0.09918596595525742,
1670
+ -0.030193090438842773,
1671
+ -0.18508130311965942,
1672
+ 0.03303778916597366,
1673
+ -0.04084295034408569,
1674
+ -0.09405478835105896,
1675
+ 0.08350837975740433,
1676
+ -0.2915036678314209,
1677
+ -0.029322421178221703,
1678
+ -0.2637880742549896,
1679
+ -0.30284351110458374,
1680
+ 0.25083762407302856,
1681
+ -0.05462878942489624,
1682
+ 0.437039852142334,
1683
+ 0.19965985417366028,
1684
+ 0.10523413866758347,
1685
+ -0.10033008456230164,
1686
+ 0.08067487925291061,
1687
+ 0.4820234775543213,
1688
+ 0.572240948677063,
1689
+ 0.013404153287410736,
1690
+ -0.18431192636489868,
1691
+ 0.049913421273231506,
1692
+ 0.14440348744392395,
1693
+ 0.010796692222356796,
1694
+ -0.04425942152738571,
1695
+ -0.034714244306087494,
1696
+ 0.09812092781066895,
1697
+ 0.22658464312553406,
1698
+ 0.5398628115653992,
1699
+ 0.14926102757453918,
1700
+ -0.09294281154870987,
1701
+ -0.29379820823669434,
1702
+ 0.2622401714324951,
1703
+ -0.09194155037403107,
1704
+ -0.007996812462806702,
1705
+ 0.16660672426223755,
1706
+ -0.4457249045372009,
1707
+ -0.1516806185245514,
1708
+ -0.270463764667511,
1709
+ -0.39716261625289917,
1710
+ -0.1890673041343689,
1711
+ -0.21207217872142792,
1712
+ -0.24664843082427979,
1713
+ -0.284817099571228,
1714
+ -0.16662172973155975,
1715
+ -0.1995084583759308,
1716
+ 0.07401363551616669,
1717
+ 0.006268583238124847,
1718
+ -0.1385871022939682,
1719
+ -0.24141649901866913,
1720
+ -0.1358436644077301,
1721
+ -0.268524706363678,
1722
+ -0.13288292288780212,
1723
+ -0.09328028559684753,
1724
+ -0.037290073931217194,
1725
+ -0.05488095059990883,
1726
+ -0.03209332749247551,
1727
+ -0.7609561085700989,
1728
+ -0.2482100874185562,
1729
+ 0.23829908668994904,
1730
+ -0.03605654835700989,
1731
+ 0.26974982023239136,
1732
+ 0.4465060234069824,
1733
+ -0.1619127094745636,
1734
+ -0.08157207816839218,
1735
+ 0.6551785469055176,
1736
+ -0.6885366439819336,
1737
+ 0.26440972089767456,
1738
+ -0.21962705254554749,
1739
+ 0.009923815727233887,
1740
+ -0.02745674178004265,
1741
+ -0.25602495670318604,
1742
+ 0.16939014196395874,
1743
+ 0.22960194945335388,
1744
+ -0.113400399684906,
1745
+ 0.1810494065284729,
1746
+ 0.09377805143594742,
1747
+ 0.24526025354862213,
1748
+ 0.5957650542259216,
1749
+ -0.1350148618221283,
1750
+ -0.17307522892951965,
1751
+ 0.4434152841567993,
1752
+ -0.06832988560199738,
1753
+ -0.07215136289596558,
1754
+ -0.18067269027233124,
1755
+ -0.2654397487640381,
1756
+ 0.22328779101371765,
1757
+ -0.1092233955860138,
1758
+ 0.001668304204940796,
1759
+ 0.05992841348052025,
1760
+ -0.2866281270980835,
1761
+ -0.0010518133640289307,
1762
+ 0.3629896640777588,
1763
+ 0.026638980954885483,
1764
+ -0.3393930196762085,
1765
+ 0.162781223654747,
1766
+ -0.21661463379859924,
1767
+ -0.12741011381149292,
1768
+ 0.21406680345535278,
1769
+ -0.16890040040016174,
1770
+ 0.014303475618362427,
1771
+ 0.1664152592420578,
1772
+ -0.1924239546060562,
1773
+ 0.42883533239364624,
1774
+ 0.04888498783111572,
1775
+ -0.5888325572013855,
1776
+ -0.21445952355861664,
1777
+ -0.2693358361721039,
1778
+ -0.2160845249891281,
1779
+ -0.18929903209209442,
1780
+ 0.29195863008499146,
1781
+ 0.08952829986810684,
1782
+ -0.1636795699596405,
1783
+ 0.24474045634269714,
1784
+ -0.28684142231941223,
1785
+ -0.17337173223495483,
1786
+ 0.004411667585372925,
1787
+ 0.01754007488489151,
1788
+ -0.5038971304893494,
1789
+ 0.2621816396713257,
1790
+ -0.01969096064567566,
1791
+ 0.31702128052711487,
1792
+ -0.40279054641723633,
1793
+ -0.11601737886667252,
1794
+ -0.014087185263633728,
1795
+ -0.7800108194351196,
1796
+ -0.11777613312005997,
1797
+ -0.08311420679092407,
1798
+ 0.38773632049560547,
1799
+ 0.14981284737586975,
1800
+ 0.2543047368526459,
1801
+ 0.44576597213745117,
1802
+ 0.14574092626571655,
1803
+ 0.17641997337341309,
1804
+ 0.1667698472738266,
1805
+ 0.04656987264752388,
1806
+ -0.36774906516075134
1807
+ ],
1808
+ "Jack_Male_EN_US": [
1809
+ -0.04046084274887107,
1810
+ -0.15095742102712392,
1811
+ -0.006839682068675756,
1812
+ -0.05994556490331888,
1813
+ 0.006684107612818471,
1814
+ 0.21780437231063843,
1815
+ -0.05186830650782213,
1816
+ 0.045858974114526066,
1817
+ 0.18578437742544338,
1818
+ 0.23851692618336529,
1819
+ 0.25875567211769523,
1820
+ 0.01337982285767794,
1821
+ 0.0575837992830202,
1822
+ 0.010126538737677035,
1823
+ -0.11069863769225777,
1824
+ 0.10501059270463883,
1825
+ -0.038009885698556914,
1826
+ 0.09259203597903251,
1827
+ 0.006737061683088536,
1828
+ 0.033672554418444633,
1829
+ 0.12799083036952652,
1830
+ -0.021536123100668186,
1831
+ 0.03342777863144876,
1832
+ -0.17997418325394393,
1833
+ 0.017667141649872063,
1834
+ -0.0656133412849158,
1835
+ 0.07788868229836225,
1836
+ -0.20092849116772413,
1837
+ -0.013813202735036612,
1838
+ -0.15624882429838183,
1839
+ -0.02039524572901428,
1840
+ 0.06695615525532048,
1841
+ -0.03102828292176127,
1842
+ -0.003229711949825284,
1843
+ -0.16995424311608076,
1844
+ 0.021083407942205673,
1845
+ 0.0890236813283991,
1846
+ -0.00943179002497345,
1847
+ -0.016149783227592696,
1848
+ 0.09971937909722328,
1849
+ -0.09221453487407416,
1850
+ -0.15833347449079158,
1851
+ -0.16861484068795107,
1852
+ -0.19585764929652213,
1853
+ 0.019861079845577473,
1854
+ -0.5355675680562854,
1855
+ -0.03166075125336647,
1856
+ 0.27058335933834315,
1857
+ -0.015265139937400807,
1858
+ -0.014771698974072935,
1859
+ 0.0019185470417142012,
1860
+ 0.05587198091670871,
1861
+ -0.09576068501919509,
1862
+ -0.021184422494843605,
1863
+ -0.17917617466300725,
1864
+ -0.17127673390787096,
1865
+ 0.20629609785974026,
1866
+ -0.18852811860851945,
1867
+ 0.012637676135636867,
1868
+ -0.05553631568327547,
1869
+ 0.446656902320683,
1870
+ -0.08865800648927688,
1871
+ -0.0358334188349545,
1872
+ -0.010281644179485738,
1873
+ -0.07811169922351838,
1874
+ 0.109587676031515,
1875
+ 0.2809453630819917,
1876
+ 0.11856715977191926,
1877
+ 0.05583547845017166,
1878
+ -0.12626958163455126,
1879
+ 0.1281449523754418,
1880
+ -0.06413849201053382,
1881
+ 0.15792119931429624,
1882
+ 0.03743950969073922,
1883
+ 0.039248654276161685,
1884
+ 0.025773864006623626,
1885
+ -0.11292729973793031,
1886
+ 0.20113790165632964,
1887
+ -0.16639176942408085,
1888
+ -0.08434787057340147,
1889
+ -0.09793199738487603,
1890
+ 0.006178376311436293,
1891
+ -0.013375372998416409,
1892
+ 0.0542846780270338,
1893
+ 0.10225461367517709,
1894
+ 0.039542005566181614,
1895
+ 0.039125220011919745,
1896
+ -0.026181252760579806,
1897
+ 0.033635431178845474,
1898
+ 0.0862573640421033,
1899
+ -0.16706872563809155,
1900
+ -0.17828714922070504,
1901
+ -0.12449762681499123,
1902
+ -0.03108778726309538,
1903
+ 0.34800285045057533,
1904
+ -0.09101906679570675,
1905
+ 0.10009890785440802,
1906
+ -0.09514827439561487,
1907
+ -0.034053249843418586,
1908
+ -0.1105702156201005,
1909
+ 0.044860146183054894,
1910
+ 0.1358713038265705,
1911
+ 0.08085576379671693,
1912
+ -0.08721686480566859,
1913
+ 0.0573709562420845,
1914
+ 0.11415926301851868,
1915
+ 0.245212434977293,
1916
+ 0.10061340439133346,
1917
+ -0.14243060679873454,
1918
+ -0.29007883500307796,
1919
+ 0.2037310192361474,
1920
+ -0.07627206621691585,
1921
+ 0.39687543553300203,
1922
+ -0.05620414759032429,
1923
+ 0.09882601262070238,
1924
+ -0.0677183491177857,
1925
+ -0.006265022698789827,
1926
+ 0.023330946313217284,
1927
+ 0.165302169136703,
1928
+ 0.02257582815364003,
1929
+ -0.12311515075853095,
1930
+ -0.1469769559800625,
1931
+ 0.012314948812127115,
1932
+ -0.021668313816189756,
1933
+ 0.34593041818588977,
1934
+ -0.04288801420480014,
1935
+ -0.16514885276556016,
1936
+ -0.18242249870672822,
1937
+ -0.0026492349803447918,
1938
+ -0.07602755706757307,
1939
+ 0.3050278574228287,
1940
+ 0.05592154124751687,
1941
+ 0.23462600968778133,
1942
+ 0.04983584135770798,
1943
+ -0.278392353374511,
1944
+ 0.22432250184938313,
1945
+ 0.2686607390176505,
1946
+ 0.09875037595629692,
1947
+ 0.1183511849027127,
1948
+ -0.054236005432903786,
1949
+ 0.08722816870140376,
1950
+ 0.03687728531658649,
1951
+ 0.02554770354181528,
1952
+ 0.12954192645847795,
1953
+ -0.17979382164776325,
1954
+ 0.3348038989119232,
1955
+ 0.4423634188249707,
1956
+ 0.4926473870873451,
1957
+ 0.20223852992057798,
1958
+ 0.025749067217111565,
1959
+ 0.17501560486853124,
1960
+ 0.38072580406442286,
1961
+ -0.2901147920638323,
1962
+ 0.20979762431234122,
1963
+ 0.2653069855645299,
1964
+ -0.3772167260758579,
1965
+ -0.09222150184214115,
1966
+ -0.39089010236784816,
1967
+ 0.20441576987504956,
1968
+ -0.23905933797359466,
1969
+ -0.10717785591259599,
1970
+ -0.16813391000032427,
1971
+ -0.3918773714452982,
1972
+ 0.22002617083489895,
1973
+ -0.07564694900065663,
1974
+ 0.07937551865907153,
1975
+ 0.08824989823624493,
1976
+ 0.29479082534089684,
1977
+ -0.36032405607402324,
1978
+ -0.2603407606482506,
1979
+ -0.6042231546249242,
1980
+ -0.28955514542758465,
1981
+ -0.03436102028936147,
1982
+ -0.04779914440587163,
1983
+ -0.009762127837166193,
1984
+ -0.10187441464513541,
1985
+ -0.7215779416263104,
1986
+ -0.27634545378386977,
1987
+ 0.17830019462853672,
1988
+ -0.09875116832554341,
1989
+ 0.09090687595307827,
1990
+ 0.13431233698502182,
1991
+ -0.2642242418602109,
1992
+ -0.04540154328569772,
1993
+ 0.4095670249313116,
1994
+ -0.35262783467769626,
1995
+ 0.16893002432771026,
1996
+ 0.08783781807869673,
1997
+ 0.25395081788301466,
1998
+ -0.28145490009337665,
1999
+ -0.326755971997045,
2000
+ 0.15969305289909244,
2001
+ 0.028953553736209857,
2002
+ -0.21651662606745958,
2003
+ 0.4146030018106103,
2004
+ -0.03423323482275009,
2005
+ -0.16287488527595997,
2006
+ 0.39450788777321577,
2007
+ 0.12951190834864976,
2008
+ 0.1056388876902929,
2009
+ 0.08080296535044909,
2010
+ 0.3574946537613869,
2011
+ 0.019849372282624234,
2012
+ 0.040822872455464676,
2013
+ -0.2921319276094437,
2014
+ 0.2146362524013966,
2015
+ -0.134716684371233,
2016
+ 0.07487714374437929,
2017
+ 0.009296230599284167,
2018
+ -0.04380686506628992,
2019
+ -0.19373088590800763,
2020
+ 0.2639585494995117,
2021
+ 0.18104018196463584,
2022
+ -0.16598513473290952,
2023
+ 0.04853666033595801,
2024
+ -0.14947416950017212,
2025
+ -0.21553540676832197,
2026
+ 0.08810192588716745,
2027
+ -0.2630701248068362,
2028
+ 0.20122109837830066,
2029
+ 0.12282457035034895,
2030
+ -0.37653126297518613,
2031
+ 0.23556544631719586,
2032
+ 0.10754718948155645,
2033
+ -0.19623969851527362,
2034
+ -0.37442944198846817,
2035
+ -0.24549162713810802,
2036
+ -0.12071249298751355,
2037
+ 0.07532338486053047,
2038
+ 0.4720609566196799,
2039
+ 0.33625265657901765,
2040
+ 0.09440774954855442,
2041
+ 0.08528476338833571,
2042
+ -0.1694023549556732,
2043
+ -0.07463834583759302,
2044
+ 0.11786841377615931,
2045
+ -0.09039792915573344,
2046
+ -0.5210130661725998,
2047
+ 0.24727064482867717,
2048
+ -0.16189097724854945,
2049
+ 0.4837450442370027,
2050
+ -0.1521998167037964,
2051
+ -0.06750598764047028,
2052
+ -0.004553849250078207,
2053
+ -0.22957104928791522,
2054
+ -0.017605035123415283,
2055
+ 0.2760094117373228,
2056
+ 0.05957211840432136,
2057
+ -0.0009269976260838989,
2058
+ 0.1953226298559457,
2059
+ 0.223721924982965,
2060
+ 0.051529260072857144,
2061
+ 0.07620697033125907,
2062
+ 0.3487104419618845,
2063
+ -0.29083244649809786,
2064
+ -0.2311014744453132
2065
+ ],
2066
+ "Henry_Male_EN_US": [
2067
+ 0.03231465221033432,
2068
+ -0.17197506912052632,
2069
+ -0.15499479230493307,
2070
+ -0.1250289712101221,
2071
+ -0.16165112853050234,
2072
+ 0.11880796402692793,
2073
+ -0.026341438165400174,
2074
+ 0.02843754307832569,
2075
+ 0.15634612458525227,
2076
+ 0.10595979747595265,
2077
+ 0.039114803401753315,
2078
+ 0.010465619154274462,
2079
+ 0.05449719361495225,
2080
+ 0.16031873143510894,
2081
+ -0.1695658477488905,
2082
+ -0.0018680405337363482,
2083
+ -0.08171003330498933,
2084
+ 0.023001285642385474,
2085
+ -0.1536627289839089,
2086
+ 0.011052230559289444,
2087
+ 0.11655736799002625,
2088
+ -0.15112714925780893,
2089
+ -0.010360681824386115,
2090
+ -0.11909673623740674,
2091
+ -0.21134809795767068,
2092
+ 0.20729044654872264,
2093
+ 0.19189890939742327,
2094
+ 0.034412209317088105,
2095
+ 0.07652324698865413,
2096
+ -0.09826281983405351,
2097
+ -0.03507392066530883,
2098
+ 0.05623610065958929,
2099
+ 0.023545358702540417,
2100
+ 0.1944381920620799,
2101
+ -0.18579835649579762,
2102
+ 0.13530588764697313,
2103
+ 0.047002217611589,
2104
+ -0.03857994754798711,
2105
+ 0.21279680896550413,
2106
+ -0.0011355822905898053,
2107
+ -0.11157526604365556,
2108
+ -0.2419595753774047,
2109
+ -0.25546876950538716,
2110
+ 0.03623581342399121,
2111
+ -0.2026651309803128,
2112
+ -0.5091725187376142,
2113
+ 0.11082670092582703,
2114
+ 0.1577077390626073,
2115
+ -0.3597980797290802,
2116
+ -0.011146663455292584,
2117
+ 0.08107478127349169,
2118
+ 0.22176175282802432,
2119
+ -0.1103294763015583,
2120
+ -0.15145504621323197,
2121
+ -0.2445066723972559,
2122
+ -0.1946099933935329,
2123
+ 0.256573729775846,
2124
+ 0.079415076575242,
2125
+ 0.07555773077765479,
2126
+ -0.1760544968303293,
2127
+ 0.45968954982236027,
2128
+ -0.2993650084361434,
2129
+ 0.23150971811264753,
2130
+ -0.007668233546428378,
2131
+ 0.014109187014400976,
2132
+ 0.10277328002266586,
2133
+ 0.06715730596333742,
2134
+ -0.1751516081392765,
2135
+ 0.13003269975306464,
2136
+ -0.01215957077220084,
2137
+ -0.10042227925732733,
2138
+ 0.13036054857075213,
2139
+ 0.008775722794234747,
2140
+ 0.07856735654640942,
2141
+ -0.0694429306051461,
2142
+ -0.04239498968236148,
2143
+ -0.04804698210209607,
2144
+ 0.25152273084968324,
2145
+ -0.1492430506274104,
2146
+ 0.16119943596422673,
2147
+ 0.33940611872822046,
2148
+ 0.08957686950452626,
2149
+ -0.0576036872342229,
2150
+ -0.08172749504446983,
2151
+ -0.1345309724099934,
2152
+ 0.2364609685027972,
2153
+ 0.10072718104347586,
2154
+ 0.003340821829624467,
2155
+ -0.04597767407540229,
2156
+ 0.018918244726955885,
2157
+ -0.11239160280674693,
2158
+ -0.07376309838145972,
2159
+ 0.12267176546156411,
2160
+ -0.07140531631885097,
2161
+ 0.06295341402292251,
2162
+ 0.14427131954580547,
2163
+ 0.06250183843076229,
2164
+ -0.1606520629953593,
2165
+ -0.027804251573979866,
2166
+ -0.14481351664289832,
2167
+ 0.11379512277198955,
2168
+ 0.4806660775095224,
2169
+ -0.08994001736864446,
2170
+ 0.00915752639994026,
2171
+ -0.11584404325112699,
2172
+ 0.14220867762342096,
2173
+ 0.2804017297923565,
2174
+ 0.18867827099747958,
2175
+ -0.3128292956738733,
2176
+ -0.06684039272367953,
2177
+ 0.21606469061225653,
2178
+ -0.1878887706901878,
2179
+ 0.32509690122678875,
2180
+ 0.1665364772081375,
2181
+ 0.05110035295365378,
2182
+ -0.24309139875695107,
2183
+ -0.14905344853177668,
2184
+ 0.014429311221465464,
2185
+ -0.04873416791670025,
2186
+ 0.14548272781539706,
2187
+ -0.08988374508335253,
2188
+ -0.21444802945479752,
2189
+ 0.058564639464020726,
2190
+ 0.2721280400641262,
2191
+ 0.205003977753222,
2192
+ -0.010262779332697397,
2193
+ -0.0029813522472977617,
2194
+ -0.15529807284474373,
2195
+ 0.26777649037539963,
2196
+ -0.0713763989508152,
2197
+ 0.3913366436958313,
2198
+ 0.24202184118330478,
2199
+ 0.07944705467671154,
2200
+ 0.4742859028279781,
2201
+ -0.024598410213366118,
2202
+ -0.18506417192984376,
2203
+ 0.4029238263145089,
2204
+ 0.08335387408733368,
2205
+ 0.10739199253730473,
2206
+ -0.13465733248740436,
2207
+ -0.01804239540069829,
2208
+ -0.0791158242151141,
2209
+ 0.19488584250211716,
2210
+ 0.02578564528375863,
2211
+ -0.5237501479685307,
2212
+ -0.07989736758172511,
2213
+ 0.5030703557655215,
2214
+ 0.10675456821918486,
2215
+ 0.2127919055521488,
2216
+ 0.09851150363683697,
2217
+ -0.08418610896915199,
2218
+ 0.1229889305308461,
2219
+ -0.43523957654833795,
2220
+ 0.4120137566700578,
2221
+ 0.4287545826286077,
2222
+ 0.2022662471514195,
2223
+ -0.20844841264188288,
2224
+ -0.35773375257849693,
2225
+ 0.08517274558544158,
2226
+ -0.1674375392496586,
2227
+ -0.014676835667341941,
2228
+ -0.05585243180394173,
2229
+ -0.5275113929063082,
2230
+ 0.630928717367351,
2231
+ -0.01564715448766945,
2232
+ -0.23996227737661685,
2233
+ 0.45196260644588615,
2234
+ 0.5890609898604452,
2235
+ -0.6399751238524913,
2236
+ -0.15936621921136973,
2237
+ -0.7311209061648697,
2238
+ 0.2599357020109892,
2239
+ -0.31862640250474217,
2240
+ -0.04317740127444269,
2241
+ -0.11731456399429589,
2242
+ -0.25942440861836075,
2243
+ -0.2941827371716499,
2244
+ 0.23730804622173307,
2245
+ 0.46029331209138036,
2246
+ 0.38680253662168984,
2247
+ -0.047635487094521534,
2248
+ 0.09478947315365074,
2249
+ -0.3081191055476665,
2250
+ -0.1648157351184636,
2251
+ 0.6156397035345436,
2252
+ -0.13436328768730166,
2253
+ 0.2214298250619322,
2254
+ -0.13365367855876686,
2255
+ 0.5899101013317705,
2256
+ -0.43101135436445476,
2257
+ 0.1790693347575143,
2258
+ -0.07457639621570705,
2259
+ -0.20997890923172235,
2260
+ -0.12710947534069417,
2261
+ 0.6243484194390476,
2262
+ -0.7802158012986182,
2263
+ -0.2108477063477039,
2264
+ 0.26811757814139126,
2265
+ 0.06200872911140322,
2266
+ 0.41312811655006954,
2267
+ -0.03243043515831233,
2268
+ 0.2404710978269577,
2269
+ -0.2426718469709158,
2270
+ 0.18551481867325492,
2271
+ -0.1008815299719572,
2272
+ 0.30738673652522264,
2273
+ 0.04650051929056642,
2274
+ 0.04460244094952941,
2275
+ 0.23529892023652793,
2276
+ -0.10654573403298855,
2277
+ -0.24890044219791893,
2278
+ -0.20255712829530237,
2279
+ -0.02652014940977096,
2280
+ -0.09871285315603015,
2281
+ 0.2915390910580754,
2282
+ 0.27769559375010433,
2283
+ -0.14592748656868934,
2284
+ 0.29195716343820094,
2285
+ -0.07187115289270878,
2286
+ 0.1771868597716093,
2287
+ 0.041152336634695516,
2288
+ -0.1439833148382604,
2289
+ 0.30823934525251384,
2290
+ 0.3235661891289055,
2291
+ 0.1609754763310775,
2292
+ -0.34351673722267145,
2293
+ -0.022873798222281028,
2294
+ 0.09521509874612094,
2295
+ 0.32318700947798795,
2296
+ 0.8087762531824411,
2297
+ 0.3908264026977122,
2298
+ 0.002011305466294286,
2299
+ 0.043111137486994265,
2300
+ 0.07222179947420956,
2301
+ -0.16160998903214935,
2302
+ 0.9778514429926872,
2303
+ -0.1190133649390191,
2304
+ -0.06515133678913118,
2305
+ 0.07287682355381547,
2306
+ -0.5366707997396588,
2307
+ 0.3294163831975311,
2308
+ 0.4730239138007164,
2309
+ 0.14623114340938625,
2310
+ -0.04914769362658263,
2311
+ 0.19938274882733825,
2312
+ -0.042190209974069144,
2313
+ 0.5218729123473167,
2314
+ -0.09630445644725116,
2315
+ -0.05060101728595327,
2316
+ 0.003836261900141802,
2317
+ 0.23963055023923516,
2318
+ 0.34797419500537213,
2319
+ -0.24325519371777776,
2320
+ 0.2133896093349904,
2321
+ -0.5972239149094094,
2322
+ -0.5162009912542999
2323
+ ],
2324
+ "Lisa_Female_EN_US": [
2325
+ 0.098259643453639,
2326
+ -0.16734164860099554,
2327
+ 0.06323453821241856,
2328
+ -0.11800012588500977,
2329
+ -0.11747334823012351,
2330
+ 0.1664506748318672,
2331
+ -0.11684786230325699,
2332
+ 0.05554657885804772,
2333
+ 0.18881248405668885,
2334
+ 0.02363725304603577,
2335
+ 0.13073167139664293,
2336
+ 0.099481688067317,
2337
+ -0.05592308223713189,
2338
+ 0.06073833145201206,
2339
+ -0.06404643282294273,
2340
+ 0.03512822799384594,
2341
+ 0.08353134356439113,
2342
+ -0.041701164841651914,
2343
+ 0.027301983349025248,
2344
+ 0.20779836773872373,
2345
+ 0.18608229857636616,
2346
+ -0.18563928958028555,
2347
+ -0.07058929353952408,
2348
+ -0.0963012244552374,
2349
+ 0.07196986377239227,
2350
+ -0.36310549527406694,
2351
+ 0.02321777753531933,
2352
+ -0.08520180359482765,
2353
+ 0.1750676281750202,
2354
+ -0.1034254938364029,
2355
+ -0.10941653922200203,
2356
+ 0.10243654051446356,
2357
+ -0.047365300357341766,
2358
+ -0.13165730237960815,
2359
+ -0.16502732019871474,
2360
+ 0.041227119415998464,
2361
+ 0.13208873476833105,
2362
+ -0.1005905382335186,
2363
+ -0.134281662479043,
2364
+ -0.03663246519863605,
2365
+ 0.019146875315345823,
2366
+ -0.17250166907906533,
2367
+ -0.10810867324471474,
2368
+ -0.1385631315410137,
2369
+ -0.07121777702122926,
2370
+ -0.8006405025720597,
2371
+ -0.1598912551999092,
2372
+ 0.1796777807176113,
2373
+ 0.1533122271299362,
2374
+ -0.013358959695324302,
2375
+ 0.12085846066474915,
2376
+ 0.08968418501317502,
2377
+ -0.1647926703095436,
2378
+ -0.03534330911934376,
2379
+ 0.018276208639144892,
2380
+ -0.31622386574745176,
2381
+ 0.044433788210153584,
2382
+ -0.3835114762187004,
2383
+ 0.06946051493287086,
2384
+ -0.14754583239555358,
2385
+ 0.7700884103775024,
2386
+ 0.05088452622294426,
2387
+ -0.10631981901824475,
2388
+ -0.03452881909906864,
2389
+ -0.18428492173552513,
2390
+ 0.01940714865922928,
2391
+ 0.15734580717980862,
2392
+ 0.24781300947070123,
2393
+ 0.11008071005344391,
2394
+ -0.037437029182910926,
2395
+ -0.02237723711878061,
2396
+ -0.05610082112252712,
2397
+ 0.17097073495388032,
2398
+ -0.029630468040704724,
2399
+ -0.14090186282992362,
2400
+ 0.05233948081731796,
2401
+ -0.11303650513291358,
2402
+ 0.09975283332169056,
2403
+ 0.07712901234626768,
2404
+ -0.10158926621079445,
2405
+ -0.006173290871083734,
2406
+ -0.05509051866829395,
2407
+ -0.02421657182276249,
2408
+ 0.12725706659257413,
2409
+ 0.0459196088835597,
2410
+ 0.024673170596361163,
2411
+ -0.021687139011919498,
2412
+ -0.0033121073618531255,
2413
+ 0.16617082729935645,
2414
+ 0.1039574097841978,
2415
+ -0.48374021649360655,
2416
+ -0.27473467141389846,
2417
+ -0.2696342796087265,
2418
+ -0.0147636947222054,
2419
+ 0.07800779491662979,
2420
+ -0.17835728526115419,
2421
+ 0.07246882431209087,
2422
+ -0.10726579539477825,
2423
+ -0.04813114702701569,
2424
+ -0.05245459228754044,
2425
+ 0.021175800473429263,
2426
+ -0.028440106660127633,
2427
+ 0.09296442177146673,
2428
+ 0.06005613040179014,
2429
+ -0.024471254087984562,
2430
+ 0.034369273111224174,
2431
+ 0.21559504568576812,
2432
+ -0.06217287853360176,
2433
+ 0.020450182259082794,
2434
+ -0.42201632708311076,
2435
+ 0.18088365010917187,
2436
+ 0.06422147378325462,
2437
+ 0.42920178174972534,
2438
+ -0.15756667256355283,
2439
+ 0.07944225370883942,
2440
+ 0.07854075198993087,
2441
+ -0.08394828196614981,
2442
+ -0.02590339761227369,
2443
+ 0.0945357296615839,
2444
+ 0.013894812762737276,
2445
+ -0.0668190572410822,
2446
+ 0.03327381014823913,
2447
+ 0.017544799577444793,
2448
+ 0.03966145385056734,
2449
+ 0.185294571146369,
2450
+ -0.30561336129903793,
2451
+ 0.05225303545594215,
2452
+ -0.20599330589175224,
2453
+ -0.0247444950044155,
2454
+ 0.0681127518415451,
2455
+ 0.04429299384355545,
2456
+ 0.1615323081612587,
2457
+ -0.11333180218935013,
2458
+ 0.05444136634469032,
2459
+ -0.32481844425201417,
2460
+ 0.18828704990446568,
2461
+ 0.2872520424425602,
2462
+ 0.13895429372787474,
2463
+ -0.08756729066371917,
2464
+ 0.24525217991322276,
2465
+ 0.03871614711242728,
2466
+ 0.11254438832402229,
2467
+ -0.06629508603364229,
2468
+ -0.10699533671140671,
2469
+ -0.049380650371313096,
2470
+ 0.06740754097700119,
2471
+ 0.16857104301452636,
2472
+ 0.30641851425170896,
2473
+ -0.0305225610733032,
2474
+ -0.4179070383310318,
2475
+ -0.10720842555165291,
2476
+ 0.2560294335708022,
2477
+ -0.019710254669189464,
2478
+ -0.17763112932443617,
2479
+ -0.0029114261269569397,
2480
+ -0.31358570866286756,
2481
+ 0.041973935812711714,
2482
+ -0.29000549390912056,
2483
+ -0.35404677540063856,
2484
+ -0.007181685417890549,
2485
+ 0.05955917574465275,
2486
+ -0.1936878278851509,
2487
+ -0.4633562132716179,
2488
+ 0.021091651916503917,
2489
+ -0.19877577703446148,
2490
+ -0.035990026939543895,
2491
+ -0.13621442914009094,
2492
+ 0.14864262491464614,
2493
+ -0.32244770638644693,
2494
+ -0.20621291697025299,
2495
+ -0.34765296103432775,
2496
+ -0.24935359358787537,
2497
+ -0.14733021520078182,
2498
+ -0.1826939433813095,
2499
+ -0.12082219868898392,
2500
+ -0.2630250319838524,
2501
+ -0.25408093333244325,
2502
+ -0.23697019964456556,
2503
+ 0.3174678087234497,
2504
+ -0.13980808593332766,
2505
+ 0.15056745186448098,
2506
+ 0.19160462617874144,
2507
+ 0.05726437717676161,
2508
+ -0.010723254084587096,
2509
+ 0.3363094590604305,
2510
+ -0.5907457679510116,
2511
+ 0.2439893047325313,
2512
+ -0.08692961037158967,
2513
+ 0.06740072220563889,
2514
+ 0.024416530132293696,
2515
+ -0.2389059288892895,
2516
+ 0.04350413922220468,
2517
+ 0.1647874414920807,
2518
+ -0.22662141621112825,
2519
+ -0.22065756656229496,
2520
+ 0.2145439937710762,
2521
+ -0.17922353893518447,
2522
+ 0.12061219662427902,
2523
+ 0.03737899707630277,
2524
+ -0.021762318909168236,
2525
+ 0.05909155458211899,
2526
+ 0.11406668499112128,
2527
+ -0.33404846489429474,
2528
+ -0.006388737261295324,
2529
+ -0.30795534551143644,
2530
+ 0.12133514666929841,
2531
+ 0.004110211133956904,
2532
+ 0.13224451523274183,
2533
+ 0.3036839559674263,
2534
+ -0.21054075136780737,
2535
+ 0.0030692771077156025,
2536
+ 0.0035036206245422363,
2537
+ 0.011927027255296707,
2538
+ 0.08805800816044211,
2539
+ 0.0661589827388525,
2540
+ 0.17130252979695795,
2541
+ 0.09395805150270461,
2542
+ 0.26391741409897806,
2543
+ -0.05089263916015625,
2544
+ -0.11061666905879974,
2545
+ 0.13363431245088578,
2546
+ -0.30518253389745953,
2547
+ -0.04395102113485336,
2548
+ -0.03574146777391435,
2549
+ -0.23613579357042908,
2550
+ -0.16882284134626388,
2551
+ -0.30275803729891776,
2552
+ -0.04444010443985462,
2553
+ 0.2190699848346412,
2554
+ 0.27886907644569875,
2555
+ 0.20610505752265454,
2556
+ 0.03134636655449867,
2557
+ -0.06447610408067703,
2558
+ -0.0005596891045570457,
2559
+ 0.26649302095174787,
2560
+ -0.2057398557662964,
2561
+ 0.0030920282006263733,
2562
+ -0.4122629433870315,
2563
+ 0.3565848290920257,
2564
+ 0.20677504390478132,
2565
+ 0.3942677197046578,
2566
+ -0.3252736687660217,
2567
+ 0.0967718569561839,
2568
+ 0.03678370863199233,
2569
+ -0.3206644430756569,
2570
+ -0.10442807674407958,
2571
+ 0.09797048419713975,
2572
+ 0.5563426822423935,
2573
+ 0.04038007035851478,
2574
+ 0.41352313160896303,
2575
+ 0.3068622753024101,
2576
+ 0.11289987117052078,
2577
+ 0.19880020171403884,
2578
+ 0.0596605807542801,
2579
+ 0.11166647523641585,
2580
+ -0.09573411736637354
2581
+ ],
2582
+ "Anne_Female_EN_US": [
2583
+ 0.17940405994304454,
2584
+ -0.1644238923676312,
2585
+ 0.09324024524539709,
2586
+ -0.12510012816637756,
2587
+ -0.06630658619105817,
2588
+ 0.11119609288871288,
2589
+ -0.16596424281597139,
2590
+ 0.08907460342161358,
2591
+ 0.19401996767846869,
2592
+ 0.01849436295451596,
2593
+ 0.14532765592448413,
2594
+ 0.08469446934759615,
2595
+ -0.023078771238215272,
2596
+ 0.07181636142777278,
2597
+ -0.15694392705336213,
2598
+ 0.026453089481219653,
2599
+ 0.14835394602268934,
2600
+ -0.050624337047338486,
2601
+ 0.08605103651061653,
2602
+ 0.25574559848755596,
2603
+ 0.18944694046513177,
2604
+ -0.335114658344537,
2605
+ -0.10531004574149846,
2606
+ -0.13781959619373083,
2607
+ 0.06695765908807516,
2608
+ -0.43373020405415447,
2609
+ -0.00021649692207574567,
2610
+ -0.06944741196930408,
2611
+ 0.18373148031532766,
2612
+ -0.18261400833725927,
2613
+ -0.07242659293115139,
2614
+ 0.07962212040729355,
2615
+ -0.054722306877374643,
2616
+ -0.08814518945291638,
2617
+ -0.18172899140045046,
2618
+ 0.07253306582570077,
2619
+ 0.12834971025440609,
2620
+ -0.07147813141345978,
2621
+ -0.03303390946239235,
2622
+ -0.020850191079080108,
2623
+ 0.03093239173758775,
2624
+ -0.17062115278095008,
2625
+ -0.2042961787432432,
2626
+ 0.0001160103827714809,
2627
+ -0.05252801310271025,
2628
+ -0.7858508661389351,
2629
+ -0.2091302715241909,
2630
+ 0.215912102162838,
2631
+ 0.1682404987514019,
2632
+ -0.004957896983250976,
2633
+ 0.08353579475078732,
2634
+ 0.07429065436590462,
2635
+ -0.2838975650956854,
2636
+ -0.060729915578849616,
2637
+ 0.015331120043992993,
2638
+ -0.3538943402469158,
2639
+ 0.06603590287268161,
2640
+ -0.3598479990148917,
2641
+ 0.04949475321918727,
2642
+ -0.1802994295954704,
2643
+ 0.8948932841420174,
2644
+ 0.06269775629043578,
2645
+ 0.14551597367972133,
2646
+ -0.024429614841938015,
2647
+ -0.18672503978013993,
2648
+ 0.0038162305951118525,
2649
+ 0.06440221983939409,
2650
+ 0.22779810093343258,
2651
+ 0.0648292437195778,
2652
+ -0.06520362980663777,
2653
+ -0.1480596019886434,
2654
+ -0.07716014515608549,
2655
+ 0.19149241223931313,
2656
+ -0.00472725033760071,
2657
+ -0.15999614455504343,
2658
+ 0.05745576778426767,
2659
+ -0.1102717611938715,
2660
+ 0.10388381499797106,
2661
+ 0.060168941505253315,
2662
+ -0.059192010387778285,
2663
+ 0.16045401743613183,
2664
+ -0.08206549435853958,
2665
+ -0.00931916926056147,
2666
+ 0.07603645194321872,
2667
+ -0.015994349215179678,
2668
+ 0.06288723759353161,
2669
+ 0.035409542825073,
2670
+ -0.02822249522432685,
2671
+ 0.1511568885296583,
2672
+ 0.025192760489881047,
2673
+ -0.45415958352386954,
2674
+ -0.2641012085601687,
2675
+ -0.09631151705980302,
2676
+ 0.05240553788607939,
2677
+ -0.038502784445881844,
2678
+ -0.1828939441591501,
2679
+ 0.08149223010987043,
2680
+ -0.16405740920454265,
2681
+ -0.0005170568823814475,
2682
+ -0.02928877165541053,
2683
+ 0.04517688824562356,
2684
+ 0.006311735883355152,
2685
+ 0.07976922886446118,
2686
+ 0.10996842151507735,
2687
+ -0.08294843146577477,
2688
+ -0.04048346038907766,
2689
+ 0.20001366436481477,
2690
+ -0.17603044249117372,
2691
+ 0.030919674783945097,
2692
+ -0.45755103826522825,
2693
+ 0.27328743394464255,
2694
+ 0.14530749581754207,
2695
+ 0.37551659494638445,
2696
+ -0.08780852369964123,
2697
+ 0.0881434208364226,
2698
+ 0.1102366984821856,
2699
+ -0.10324715869501233,
2700
+ -0.0326073732227087,
2701
+ 0.11423155306838453,
2702
+ 0.08385749866720289,
2703
+ -0.044914178038015964,
2704
+ 0.03559637144207953,
2705
+ 0.15771918892860412,
2706
+ 0.1590451302938163,
2707
+ 0.2501667616888881,
2708
+ -0.4137455578893423,
2709
+ 0.0505435885861516,
2710
+ -0.23191697373986245,
2711
+ 0.0287872213870287,
2712
+ 0.003149333596229556,
2713
+ 0.10368789061903953,
2714
+ -0.010588538646697995,
2715
+ -0.0879323348402977,
2716
+ -0.07506629079580307,
2717
+ -0.5269412443041801,
2718
+ 0.22431598380208015,
2719
+ 0.3359779428690672,
2720
+ 0.0032832570374011962,
2721
+ -0.050378158874809745,
2722
+ 0.3839163174852729,
2723
+ 0.028349736475502138,
2724
+ -0.10097187757492063,
2725
+ -0.11896620839834213,
2726
+ -0.1368182884529233,
2727
+ 0.04117071777582168,
2728
+ 0.09757037162780761,
2729
+ 0.30170601047575474,
2730
+ 0.42509459182620046,
2731
+ -0.031749222427606555,
2732
+ -0.450509675219655,
2733
+ -0.10203840397298336,
2734
+ 0.11731623336672783,
2735
+ -0.14807355552911758,
2736
+ -0.3516409188508987,
2737
+ -0.014435897022485725,
2738
+ -0.2427325451746583,
2739
+ 0.06217130366712809,
2740
+ -0.38942934162914755,
2741
+ -0.23018259108066563,
2742
+ -0.046737963333725915,
2743
+ 0.21478279903531072,
2744
+ -0.15159097351133824,
2745
+ -0.6199001990258693,
2746
+ 0.11925626099109649,
2747
+ -0.11402976419776678,
2748
+ 0.007391047988494388,
2749
+ -0.00794237181544305,
2750
+ 0.3376276850700378,
2751
+ -0.469353917054832,
2752
+ -0.39055002434179187,
2753
+ -0.5357521926518529,
2754
+ -0.2898576606065035,
2755
+ -0.07800486553460359,
2756
+ -0.3499526508152485,
2757
+ -0.09789482404012233,
2758
+ -0.29802559399977324,
2759
+ -0.0005799770355224831,
2760
+ -0.16338682733476162,
2761
+ 0.3528595224022865,
2762
+ -0.43563686497509474,
2763
+ 0.09255755357444287,
2764
+ 0.14223229270428417,
2765
+ 0.0687978647649288,
2766
+ 9.937696158886233e-05,
2767
+ 0.370262223854661,
2768
+ -0.6324451595544816,
2769
+ 0.2665458579082042,
2770
+ -0.1399991037324071,
2771
+ 0.12931404411792755,
2772
+ 0.16657713875174524,
2773
+ -0.12588859747629613,
2774
+ 0.11505986778065562,
2775
+ 0.04677194319665433,
2776
+ -0.3566686304286122,
2777
+ -0.24695453979074955,
2778
+ 0.2476239986717701,
2779
+ -0.5334096863865851,
2780
+ -0.07400115504860877,
2781
+ 0.12062631538137794,
2782
+ 0.04516074173152446,
2783
+ -0.052435807511210436,
2784
+ 0.3395687915384769,
2785
+ -0.35318856965750456,
2786
+ 0.09023026153445243,
2787
+ -0.33012407943606376,
2788
+ 0.1426998670678586,
2789
+ 0.16262518018484115,
2790
+ 0.1251251042820513,
2791
+ 0.46874684616923334,
2792
+ -0.15137760601937772,
2793
+ 0.068039158731699,
2794
+ -0.30281599573791024,
2795
+ -0.2254273697733879,
2796
+ 0.27405579378828404,
2797
+ 0.17136543877422808,
2798
+ 0.10630016443319619,
2799
+ 0.057858095318079,
2800
+ 0.11517375223338605,
2801
+ -0.15762499999254942,
2802
+ -0.29063242860138416,
2803
+ 0.20158795565366744,
2804
+ -0.29120013369247316,
2805
+ -0.24734700098633766,
2806
+ -0.11135954931378364,
2807
+ 0.0172116317320615,
2808
+ -0.31362133994698527,
2809
+ -0.22704790353309365,
2810
+ 0.04125624597072601,
2811
+ 0.2366799856070429,
2812
+ 0.1992180491797626,
2813
+ 0.2684565844014287,
2814
+ 0.2055516693741083,
2815
+ -0.33117692880332467,
2816
+ -0.031874293368309735,
2817
+ 0.38305166363716125,
2818
+ -0.29617225378751755,
2819
+ -0.04308449327945709,
2820
+ -0.5536482103168965,
2821
+ 0.5467873688321561,
2822
+ 0.17487224414944647,
2823
+ 0.4601214074995369,
2824
+ -0.21070712432265282,
2825
+ 0.14032430904917417,
2826
+ 0.04221225241199136,
2827
+ -0.1693667344748974,
2828
+ -0.05280606932938099,
2829
+ 0.19504989907145498,
2830
+ 0.5787762992084027,
2831
+ -0.0508410669863224,
2832
+ 0.3892222262918949,
2833
+ 0.3818872168660164,
2834
+ 0.1461108922958374,
2835
+ 0.2555951376445591,
2836
+ -0.23311877846717832,
2837
+ 0.03256144672632219,
2838
+ 0.08528051348403096
2839
+ ]
2840
+ }