mcPear commited on
Commit
adaa93f
·
verified ·
1 Parent(s): 905d286

Matcha-TTS-PL v2: fav2 voice distilled from VoxCPM2, English words, fav2 vocoder

Browse files
.gitattributes CHANGED
@@ -33,3 +33,19 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ samples/e01_teacher.wav filter=lfs diff=lfs merge=lfs -text
37
+ samples/e05_teacher.wav filter=lfs diff=lfs merge=lfs -text
38
+ samples/e05_v2.wav filter=lfs diff=lfs merge=lfs -text
39
+ samples/e06_teacher.wav filter=lfs diff=lfs merge=lfs -text
40
+ samples/e06_v2.wav filter=lfs diff=lfs merge=lfs -text
41
+ samples/e07_teacher.wav filter=lfs diff=lfs merge=lfs -text
42
+ samples/e07_v2.wav filter=lfs diff=lfs merge=lfs -text
43
+ samples/e09_teacher.wav filter=lfs diff=lfs merge=lfs -text
44
+ samples/e09_v2.wav filter=lfs diff=lfs merge=lfs -text
45
+ samples/e10_teacher.wav filter=lfs diff=lfs merge=lfs -text
46
+ samples/e10_v2.wav filter=lfs diff=lfs merge=lfs -text
47
+ samples/e11_teacher.wav filter=lfs diff=lfs merge=lfs -text
48
+ samples/e11_v2.wav filter=lfs diff=lfs merge=lfs -text
49
+ samples/e12_teacher.wav filter=lfs diff=lfs merge=lfs -text
50
+ samples/e12_v2.wav filter=lfs diff=lfs merge=lfs -text
51
+ vocoder/generator_fav2 filter=lfs diff=lfs merge=lfs -text
ATTRIBUTION.md ADDED
The diff for this file is too large to render. See raw diff
 
LICENSE ADDED
@@ -0,0 +1,428 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Attribution-ShareAlike 4.0 International
2
+
3
+ =======================================================================
4
+
5
+ Creative Commons Corporation ("Creative Commons") is not a law firm and
6
+ does not provide legal services or legal advice. Distribution of
7
+ Creative Commons public licenses does not create a lawyer-client or
8
+ other relationship. Creative Commons makes its licenses and related
9
+ information available on an "as-is" basis. Creative Commons gives no
10
+ warranties regarding its licenses, any material licensed under their
11
+ terms and conditions, or any related information. Creative Commons
12
+ disclaims all liability for damages resulting from their use to the
13
+ fullest extent possible.
14
+
15
+ Using Creative Commons Public Licenses
16
+
17
+ Creative Commons public licenses provide a standard set of terms and
18
+ conditions that creators and other rights holders may use to share
19
+ original works of authorship and other material subject to copyright
20
+ and certain other rights specified in the public license below. The
21
+ following considerations are for informational purposes only, are not
22
+ exhaustive, and do not form part of our licenses.
23
+
24
+ Considerations for licensors: Our public licenses are
25
+ intended for use by those authorized to give the public
26
+ permission to use material in ways otherwise restricted by
27
+ copyright and certain other rights. Our licenses are
28
+ irrevocable. Licensors should read and understand the terms
29
+ and conditions of the license they choose before applying it.
30
+ Licensors should also secure all rights necessary before
31
+ applying our licenses so that the public can reuse the
32
+ material as expected. Licensors should clearly mark any
33
+ material not subject to the license. This includes other CC-
34
+ licensed material, or material used under an exception or
35
+ limitation to copyright. More considerations for licensors:
36
+ wiki.creativecommons.org/Considerations_for_licensors
37
+
38
+ Considerations for the public: By using one of our public
39
+ licenses, a licensor grants the public permission to use the
40
+ licensed material under specified terms and conditions. If
41
+ the licensor's permission is not necessary for any reason--for
42
+ example, because of any applicable exception or limitation to
43
+ copyright--then that use is not regulated by the license. Our
44
+ licenses grant only permissions under copyright and certain
45
+ other rights that a licensor has authority to grant. Use of
46
+ the licensed material may still be restricted for other
47
+ reasons, including because others have copyright or other
48
+ rights in the material. A licensor may make special requests,
49
+ such as asking that all changes be marked or described.
50
+ Although not required by our licenses, you are encouraged to
51
+ respect those requests where reasonable. More considerations
52
+ for the public:
53
+ wiki.creativecommons.org/Considerations_for_licensees
54
+
55
+ =======================================================================
56
+
57
+ Creative Commons Attribution-ShareAlike 4.0 International Public
58
+ License
59
+
60
+ By exercising the Licensed Rights (defined below), You accept and agree
61
+ to be bound by the terms and conditions of this Creative Commons
62
+ Attribution-ShareAlike 4.0 International Public License ("Public
63
+ License"). To the extent this Public License may be interpreted as a
64
+ contract, You are granted the Licensed Rights in consideration of Your
65
+ acceptance of these terms and conditions, and the Licensor grants You
66
+ such rights in consideration of benefits the Licensor receives from
67
+ making the Licensed Material available under these terms and
68
+ conditions.
69
+
70
+
71
+ Section 1 -- Definitions.
72
+
73
+ a. Adapted Material means material subject to Copyright and Similar
74
+ Rights that is derived from or based upon the Licensed Material
75
+ and in which the Licensed Material is translated, altered,
76
+ arranged, transformed, or otherwise modified in a manner requiring
77
+ permission under the Copyright and Similar Rights held by the
78
+ Licensor. For purposes of this Public License, where the Licensed
79
+ Material is a musical work, performance, or sound recording,
80
+ Adapted Material is always produced where the Licensed Material is
81
+ synched in timed relation with a moving image.
82
+
83
+ b. Adapter's License means the license You apply to Your Copyright
84
+ and Similar Rights in Your contributions to Adapted Material in
85
+ accordance with the terms and conditions of this Public License.
86
+
87
+ c. BY-SA Compatible License means a license listed at
88
+ creativecommons.org/compatiblelicenses, approved by Creative
89
+ Commons as essentially the equivalent of this Public License.
90
+
91
+ d. Copyright and Similar Rights means copyright and/or similar rights
92
+ closely related to copyright including, without limitation,
93
+ performance, broadcast, sound recording, and Sui Generis Database
94
+ Rights, without regard to how the rights are labeled or
95
+ categorized. For purposes of this Public License, the rights
96
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
97
+ Rights.
98
+
99
+ e. Effective Technological Measures means those measures that, in the
100
+ absence of proper authority, may not be circumvented under laws
101
+ fulfilling obligations under Article 11 of the WIPO Copyright
102
+ Treaty adopted on December 20, 1996, and/or similar international
103
+ agreements.
104
+
105
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
106
+ any other exception or limitation to Copyright and Similar Rights
107
+ that applies to Your use of the Licensed Material.
108
+
109
+ g. License Elements means the license attributes listed in the name
110
+ of a Creative Commons Public License. The License Elements of this
111
+ Public License are Attribution and ShareAlike.
112
+
113
+ h. Licensed Material means the artistic or literary work, database,
114
+ or other material to which the Licensor applied this Public
115
+ License.
116
+
117
+ i. Licensed Rights means the rights granted to You subject to the
118
+ terms and conditions of this Public License, which are limited to
119
+ all Copyright and Similar Rights that apply to Your use of the
120
+ Licensed Material and that the Licensor has authority to license.
121
+
122
+ j. Licensor means the individual(s) or entity(ies) granting rights
123
+ under this Public License.
124
+
125
+ k. Share means to provide material to the public by any means or
126
+ process that requires permission under the Licensed Rights, such
127
+ as reproduction, public display, public performance, distribution,
128
+ dissemination, communication, or importation, and to make material
129
+ available to the public including in ways that members of the
130
+ public may access the material from a place and at a time
131
+ individually chosen by them.
132
+
133
+ l. Sui Generis Database Rights means rights other than copyright
134
+ resulting from Directive 96/9/EC of the European Parliament and of
135
+ the Council of 11 March 1996 on the legal protection of databases,
136
+ as amended and/or succeeded, as well as other essentially
137
+ equivalent rights anywhere in the world.
138
+
139
+ m. You means the individual or entity exercising the Licensed Rights
140
+ under this Public License. Your has a corresponding meaning.
141
+
142
+
143
+ Section 2 -- Scope.
144
+
145
+ a. License grant.
146
+
147
+ 1. Subject to the terms and conditions of this Public License,
148
+ the Licensor hereby grants You a worldwide, royalty-free,
149
+ non-sublicensable, non-exclusive, irrevocable license to
150
+ exercise the Licensed Rights in the Licensed Material to:
151
+
152
+ a. reproduce and Share the Licensed Material, in whole or
153
+ in part; and
154
+
155
+ b. produce, reproduce, and Share Adapted Material.
156
+
157
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
158
+ Exceptions and Limitations apply to Your use, this Public
159
+ License does not apply, and You do not need to comply with
160
+ its terms and conditions.
161
+
162
+ 3. Term. The term of this Public License is specified in Section
163
+ 6(a).
164
+
165
+ 4. Media and formats; technical modifications allowed. The
166
+ Licensor authorizes You to exercise the Licensed Rights in
167
+ all media and formats whether now known or hereafter created,
168
+ and to make technical modifications necessary to do so. The
169
+ Licensor waives and/or agrees not to assert any right or
170
+ authority to forbid You from making technical modifications
171
+ necessary to exercise the Licensed Rights, including
172
+ technical modifications necessary to circumvent Effective
173
+ Technological Measures. For purposes of this Public License,
174
+ simply making modifications authorized by this Section 2(a)
175
+ (4) never produces Adapted Material.
176
+
177
+ 5. Downstream recipients.
178
+
179
+ a. Offer from the Licensor -- Licensed Material. Every
180
+ recipient of the Licensed Material automatically
181
+ receives an offer from the Licensor to exercise the
182
+ Licensed Rights under the terms and conditions of this
183
+ Public License.
184
+
185
+ b. Additional offer from the Licensor -- Adapted Material.
186
+ Every recipient of Adapted Material from You
187
+ automatically receives an offer from the Licensor to
188
+ exercise the Licensed Rights in the Adapted Material
189
+ under the conditions of the Adapter's License You apply.
190
+
191
+ c. No downstream restrictions. You may not offer or impose
192
+ any additional or different terms or conditions on, or
193
+ apply any Effective Technological Measures to, the
194
+ Licensed Material if doing so restricts exercise of the
195
+ Licensed Rights by any recipient of the Licensed
196
+ Material.
197
+
198
+ 6. No endorsement. Nothing in this Public License constitutes or
199
+ may be construed as permission to assert or imply that You
200
+ are, or that Your use of the Licensed Material is, connected
201
+ with, or sponsored, endorsed, or granted official status by,
202
+ the Licensor or others designated to receive attribution as
203
+ provided in Section 3(a)(1)(A)(i).
204
+
205
+ b. Other rights.
206
+
207
+ 1. Moral rights, such as the right of integrity, are not
208
+ licensed under this Public License, nor are publicity,
209
+ privacy, and/or other similar personality rights; however, to
210
+ the extent possible, the Licensor waives and/or agrees not to
211
+ assert any such rights held by the Licensor to the limited
212
+ extent necessary to allow You to exercise the Licensed
213
+ Rights, but not otherwise.
214
+
215
+ 2. Patent and trademark rights are not licensed under this
216
+ Public License.
217
+
218
+ 3. To the extent possible, the Licensor waives any right to
219
+ collect royalties from You for the exercise of the Licensed
220
+ Rights, whether directly or through a collecting society
221
+ under any voluntary or waivable statutory or compulsory
222
+ licensing scheme. In all other cases the Licensor expressly
223
+ reserves any right to collect such royalties.
224
+
225
+
226
+ Section 3 -- License Conditions.
227
+
228
+ Your exercise of the Licensed Rights is expressly made subject to the
229
+ following conditions.
230
+
231
+ a. Attribution.
232
+
233
+ 1. If You Share the Licensed Material (including in modified
234
+ form), You must:
235
+
236
+ a. retain the following if it is supplied by the Licensor
237
+ with the Licensed Material:
238
+
239
+ i. identification of the creator(s) of the Licensed
240
+ Material and any others designated to receive
241
+ attribution, in any reasonable manner requested by
242
+ the Licensor (including by pseudonym if
243
+ designated);
244
+
245
+ ii. a copyright notice;
246
+
247
+ iii. a notice that refers to this Public License;
248
+
249
+ iv. a notice that refers to the disclaimer of
250
+ warranties;
251
+
252
+ v. a URI or hyperlink to the Licensed Material to the
253
+ extent reasonably practicable;
254
+
255
+ b. indicate if You modified the Licensed Material and
256
+ retain an indication of any previous modifications; and
257
+
258
+ c. indicate the Licensed Material is licensed under this
259
+ Public License, and include the text of, or the URI or
260
+ hyperlink to, this Public License.
261
+
262
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
263
+ reasonable manner based on the medium, means, and context in
264
+ which You Share the Licensed Material. For example, it may be
265
+ reasonable to satisfy the conditions by providing a URI or
266
+ hyperlink to a resource that includes the required
267
+ information.
268
+
269
+ 3. If requested by the Licensor, You must remove any of the
270
+ information required by Section 3(a)(1)(A) to the extent
271
+ reasonably practicable.
272
+
273
+ b. ShareAlike.
274
+
275
+ In addition to the conditions in Section 3(a), if You Share
276
+ Adapted Material You produce, the following conditions also apply.
277
+
278
+ 1. The Adapter's License You apply must be a Creative Commons
279
+ license with the same License Elements, this version or
280
+ later, or a BY-SA Compatible License.
281
+
282
+ 2. You must include the text of, or the URI or hyperlink to, the
283
+ Adapter's License You apply. You may satisfy this condition
284
+ in any reasonable manner based on the medium, means, and
285
+ context in which You Share Adapted Material.
286
+
287
+ 3. You may not offer or impose any additional or different terms
288
+ or conditions on, or apply any Effective Technological
289
+ Measures to, Adapted Material that restrict exercise of the
290
+ rights granted under the Adapter's License You apply.
291
+
292
+
293
+ Section 4 -- Sui Generis Database Rights.
294
+
295
+ Where the Licensed Rights include Sui Generis Database Rights that
296
+ apply to Your use of the Licensed Material:
297
+
298
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
299
+ to extract, reuse, reproduce, and Share all or a substantial
300
+ portion of the contents of the database;
301
+
302
+ b. if You include all or a substantial portion of the database
303
+ contents in a database in which You have Sui Generis Database
304
+ Rights, then the database in which You have Sui Generis Database
305
+ Rights (but not its individual contents) is Adapted Material,
306
+ including for purposes of Section 3(b); and
307
+
308
+ c. You must comply with the conditions in Section 3(a) if You Share
309
+ all or a substantial portion of the contents of the database.
310
+
311
+ For the avoidance of doubt, this Section 4 supplements and does not
312
+ replace Your obligations under this Public License where the Licensed
313
+ Rights include other Copyright and Similar Rights.
314
+
315
+
316
+ Section 5 -- Disclaimer of Warranties and Limitation of Liability.
317
+
318
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
319
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
320
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
321
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
322
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
323
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
324
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
325
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
326
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
327
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
328
+
329
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
330
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
331
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
332
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
333
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
334
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
335
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
336
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
337
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
338
+
339
+ c. The disclaimer of warranties and limitation of liability provided
340
+ above shall be interpreted in a manner that, to the extent
341
+ possible, most closely approximates an absolute disclaimer and
342
+ waiver of all liability.
343
+
344
+
345
+ Section 6 -- Term and Termination.
346
+
347
+ a. This Public License applies for the term of the Copyright and
348
+ Similar Rights licensed here. However, if You fail to comply with
349
+ this Public License, then Your rights under this Public License
350
+ terminate automatically.
351
+
352
+ b. Where Your right to use the Licensed Material has terminated under
353
+ Section 6(a), it reinstates:
354
+
355
+ 1. automatically as of the date the violation is cured, provided
356
+ it is cured within 30 days of Your discovery of the
357
+ violation; or
358
+
359
+ 2. upon express reinstatement by the Licensor.
360
+
361
+ For the avoidance of doubt, this Section 6(b) does not affect any
362
+ right the Licensor may have to seek remedies for Your violations
363
+ of this Public License.
364
+
365
+ c. For the avoidance of doubt, the Licensor may also offer the
366
+ Licensed Material under separate terms or conditions or stop
367
+ distributing the Licensed Material at any time; however, doing so
368
+ will not terminate this Public License.
369
+
370
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
371
+ License.
372
+
373
+
374
+ Section 7 -- Other Terms and Conditions.
375
+
376
+ a. The Licensor shall not be bound by any additional or different
377
+ terms or conditions communicated by You unless expressly agreed.
378
+
379
+ b. Any arrangements, understandings, or agreements regarding the
380
+ Licensed Material not stated herein are separate from and
381
+ independent of the terms and conditions of this Public License.
382
+
383
+
384
+ Section 8 -- Interpretation.
385
+
386
+ a. For the avoidance of doubt, this Public License does not, and
387
+ shall not be interpreted to, reduce, limit, restrict, or impose
388
+ conditions on any use of the Licensed Material that could lawfully
389
+ be made without permission under this Public License.
390
+
391
+ b. To the extent possible, if any provision of this Public License is
392
+ deemed unenforceable, it shall be automatically reformed to the
393
+ minimum extent necessary to make it enforceable. If the provision
394
+ cannot be reformed, it shall be severed from this Public License
395
+ without affecting the enforceability of the remaining terms and
396
+ conditions.
397
+
398
+ c. No term or condition of this Public License will be waived and no
399
+ failure to comply consented to unless expressly agreed to by the
400
+ Licensor.
401
+
402
+ d. Nothing in this Public License constitutes or may be interpreted
403
+ as a limitation upon, or waiver of, any privileges and immunities
404
+ that apply to the Licensor or You, including from the legal
405
+ processes of any jurisdiction or authority.
406
+
407
+
408
+ =======================================================================
409
+
410
+ Creative Commons is not a party to its public
411
+ licenses. Notwithstanding, Creative Commons may elect to apply one of
412
+ its public licenses to material it publishes and in those instances
413
+ will be considered the “Licensor.” The text of the Creative Commons
414
+ public licenses is dedicated to the public domain under the CC0 Public
415
+ Domain Dedication. Except for the limited purpose of indicating that
416
+ material is shared under a Creative Commons public license or as
417
+ otherwise permitted by the Creative Commons policies published at
418
+ creativecommons.org/policies, Creative Commons does not authorize the
419
+ use of the trademark "Creative Commons" or any other trademark or logo
420
+ of Creative Commons without its prior written consent including,
421
+ without limitation, in connection with any unauthorized modifications
422
+ to any of its public licenses or any other arrangements,
423
+ understandings, or agreements concerning use of licensed material. For
424
+ the avoidance of doubt, this paragraph does not form part of the
425
+ public licenses.
426
+
427
+ Creative Commons may be contacted at creativecommons.org.
428
+
README.md ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: pl
3
+ license: cc-by-sa-4.0
4
+ library_name: matcha-tts
5
+ pipeline_tag: text-to-speech
6
+ base_model: machinekind/Matcha-TTS-PL
7
+ tags: [tts, polish, matcha-tts, flow-matching, hifigan, distillation, voxcpm2, code-switching, robot, onnx]
8
+ ---
9
+
10
+ # Matcha-TTS-PL v2 — one synthetic voice, modern Polish, English words
11
+
12
+ Second version of [Matcha-TTS-PL](https://huggingface.co/machinekind/Matcha-TTS-PL): the same small, fast,
13
+ non-autoregressive Matcha-TTS (20.9 M parameters, real-time on a small GPU or in a browser) **distilled from VoxCPM2**,
14
+ a 2B-parameter TTS, onto a single synthetic voice. What changes compared with v1:
15
+
16
+ - **One original voice, `fav2`** — designed from a text description with VoxCPM2 (OpenBMB, Apache-2.0) and frozen as a
17
+ prompt cache; not a recording or a clone of a real person (closest of our reference readers: speaker similarity 0.83).
18
+ - **Modern Polish of a humanoid assistant** — 13.1 h of training speech: assistant speech in 18 everyday domains, modern
19
+ corpora (NKJP, Wikinews, KPWr, ParlaMint, OpenAssistant, Wikibooks, Wikivoyage) and reviewed YouTube transcripts;
20
+ two thirds of it in multi-sentence passages (10–25 s), so prosody is planned across sentences.
21
+ - **English words inside Polish sentences** — "Po meetingu wyślę ci feedback na maila" is read with English phonemes:
22
+ English words are detected automatically and phonemized by espeak-ng en-us, the rest by espeak-ng pl
23
+ (`english/`). No pronunciation dictionary needed for common loanwords and brands.
24
+ - **A HiFi-GAN fine-tuned on this voice**, with real ground truth (the teacher's audio) — the v1 vocoder was tuned for the
25
+ audiobook readers and blurs this voice.
26
+
27
+ Try it in the browser: [spaces/machinekind/matcha-tts-pl-v2](https://huggingface.co/spaces/machinekind/matcha-tts-pl-v2).
28
+
29
+ ## Quality (12 held-out sentences, Mac CPU, 4 ODE steps, temperature 0.8)
30
+
31
+ | system | UTMOS ↑ | Whisper WER ↓ | similarity to fav2 ↑ |
32
+ |---|---|---|---|
33
+ | VoxCPM2 teacher (2B, autoregressive) | 3.68 | 1.3 % | 0.883 |
34
+ | **v2** (this model + its vocoder) | 3.40 | 1.3 % | 0.850 |
35
+ | v1 model with the new voice slot, before fine-tuning | 2.91 | 2.7 % | 0.725 |
36
+
37
+ WER counts Whisper's spelling too: the teacher's two "errors" are "krutki" for *krótki* and "HWSR" for the robot's name.
38
+ Speaking rate: the released default **tempo is 0.8** (`length_scale`); at 1.0 v2 speaks about 19 % slower than the teacher.
39
+
40
+ ## Files
41
+
42
+ | path | what |
43
+ |---|---|
44
+ | `onnx/matcha_pl_t4.onnx`, `onnx/matcha_pl_t2.onnx` | acoustic model + fav2 vocoder in one graph, 4 / 2 ODE steps; inputs `x` (phoneme ids), `x_lengths`, `scales=[temperature, length_scale]`, `spk_emb` (float32 [1, 64]); outputs `wav` (22.05 kHz), `wav_lengths` |
45
+ | `onnx/voices.json` | the fav2 speaker embedding, 18 style embeddings, defaults |
46
+ | `model/matcha_pl_v2.ckpt` | PyTorch checkpoint (Matcha-TTS + the tts-pl patch: style tokens, Polish cleaners) — speaker 20 = fav2 |
47
+ | `vocoder/generator_fav2`, `vocoder/config.json` | HiFi-GAN (v1 architecture) fine-tuned on this model's mels ↔ the fav2 audio |
48
+ | `english/` | English detection (`english_detect.py`, `english_words.txt`; browser: `english.js`, `english_data.json`) and the mixed phonemizer (`polish_mixed_cleaners.py`; browser: `cleaner.js`) |
49
+ | `samples/` | the 12 held-out sentences, v2 and teacher |
50
+ | `data/` | style token map, speaker map |
51
+ | `ATTRIBUTION.md` | every text source of the training data, and the base model's data |
52
+
53
+ ## Quick start (ONNX, Python)
54
+
55
+ ```python
56
+ import sys, json, numpy as np, onnxruntime as ort, soundfile as sf
57
+ sys.path.append("english") # english_detect.py + english_words.txt (optional fallback: pip install wordfreq)
58
+ from english_detect import mark_english
59
+ from matcha.text import text_to_sequence # Matcha-TTS with the tts-pl cleaners: paste english/polish_cleaners.py and
60
+ from matcha.utils.utils import intersperse # english/polish_mixed_cleaners.py into matcha/text/cleaners.py
61
+ text = mark_english("Po meetingu wyślę ci feedback na maila, a w weekend zrobię update.")
62
+ ids = np.array(intersperse(text_to_sequence(text, ["polish_mixed_cleaners"])[0], 0), np.int64)
63
+ vj = json.load(open("onnx/voices.json"))
64
+ spk = np.array(vj["speakers"]["0"]["emb"], np.float32) + np.array(vj["styles"]["7"]["emb"], np.float32) # 7 = neutral style
65
+ sess = ort.InferenceSession("onnx/matcha_pl_t4.onnx")
66
+ wav, n = sess.run(None, {"x": ids[None], "x_lengths": np.array([ids.size]), "scales": np.array([0.8, 0.8], np.float32), "spk_emb": spk[None]})
67
+ sf.write("out.wav", wav[0, :n[0]], 22050) # scales = [temperature, length_scale (tempo)]
68
+ ```
69
+
70
+ Text front end: `mark_english()` wraps English words in braces (`Po {meeting}u wyślę ci {feedback}.`), the cleaner
71
+ phonemizes braced spans with espeak-ng `en-us` and the rest with `pl` (with the Polish ending of an inflected English
72
+ word glued on unstressed, and one-letter prepositions before English words handled by rule). You can brace any word
73
+ yourself. The browser port produces the training phonemes character for character (tested on 300 sentences).
74
+
75
+ ## Training
76
+
77
+ - Base: Matcha-TTS-PL v1 (target model), new speaker row initialised from the closest real reader; same mel statistics,
78
+ style tokens and phoneme table (all en-us phones were already in the symbol table, now trained).
79
+ - Data: 6 493 clips, 13.1 h, generated by VoxCPM2 with the frozen fav2 voice (anchor + continuation, 10 diffusion
80
+ steps), every clip gated by Whisper (text match), UTMOS ≥ 3.2 and speaker similarity ≥ 0.80, up to 3 takes per
81
+ sentence. Source texts reviewed and minimally completed by Claude (cut sentences finished, numbers written as words).
82
+ - Matcha fine-tune: 10 k steps, batch 64, lr 5e-5, bf16, RTX 6000 Ada (≈ 1.5 h); quality plateaued from 5 k steps.
83
+ - Vocoder: teacher-forced mels of the 10 k checkpoint for all training clips paired with the VoxCPM2 audio, HiFi-GAN
84
+ universal v1 fine-tuned 30 k steps, lr 2e-5.
85
+
86
+ ## Limitations
87
+
88
+ - One voice. The rhythm is more regular than the teacher's: Matcha's deterministic duration predictor averages timing.
89
+ - English detection uses a curated list (≈ 1 900 words and brands, Polish lookalikes excluded); an unlisted English
90
+ word is read the Polish way unless you put it in braces.
91
+ - Synthetic voice: label generated speech as synthetic; don't present it as a real person.
92
+
93
+ ## Licence
94
+
95
+ CC BY-SA 4.0 (training data includes CC BY-SA texts; the base model is CC BY-SA 4.0). VoxCPM2 is Apache-2.0;
96
+ espeak-ng (runtime phonemizer) is GPL-3.0. See `ATTRIBUTION.md`.
data/speaker_map.json ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "0": {
3
+ "source": "data/wl",
4
+ "speaker": "Bartosz Bielenia"
5
+ },
6
+ "1": {
7
+ "source": "data/wl",
8
+ "speaker": "Katarzyna Faszczewska"
9
+ },
10
+ "2": {
11
+ "source": "data/wl",
12
+ "speaker": "Wojciech Masiak"
13
+ },
14
+ "3": {
15
+ "source": "data/wl",
16
+ "speaker": "Bartosz Głogowski"
17
+ },
18
+ "4": {
19
+ "source": "data/wl",
20
+ "speaker": "Jan Staszczyk"
21
+ },
22
+ "5": {
23
+ "source": "data/wl",
24
+ "speaker": "Marek Proszek"
25
+ },
26
+ "6": {
27
+ "source": "data/wl",
28
+ "speaker": "Piotr Kopa"
29
+ },
30
+ "7": {
31
+ "source": "data/wl",
32
+ "speaker": "Radosław Krzyżowski"
33
+ },
34
+ "8": {
35
+ "source": "data/wl",
36
+ "speaker": "Andrzej Seweryn"
37
+ },
38
+ "9": {
39
+ "source": "data/wl",
40
+ "speaker": "Magdalena Gaweł"
41
+ },
42
+ "10": {
43
+ "source": "data/wl",
44
+ "speaker": "Jakub Sasak"
45
+ },
46
+ "11": {
47
+ "source": "data/wl",
48
+ "speaker": "Ewelina Pankowska"
49
+ },
50
+ "12": {
51
+ "source": "data/wl",
52
+ "speaker": "Krzysztof Zarzecki"
53
+ },
54
+ "13": {
55
+ "source": "data/wl",
56
+ "speaker": "Joanna Domańska"
57
+ },
58
+ "14": {
59
+ "source": "data/wl",
60
+ "speaker": "Bartosz Mazur"
61
+ },
62
+ "15": {
63
+ "source": "data/azon",
64
+ "speaker": "azon_spont_102903M"
65
+ },
66
+ "16": {
67
+ "source": "data/azon",
68
+ "speaker": "azon_spont_99321M"
69
+ },
70
+ "17": {
71
+ "source": "data/azon",
72
+ "speaker": "azon_spont_99322K"
73
+ },
74
+ "18": {
75
+ "source": "data/azon",
76
+ "speaker": "azon_spont_99324K"
77
+ },
78
+ "19": {
79
+ "source": "data/azon",
80
+ "speaker": "azon_spont_99329M"
81
+ },
82
+ "20": {
83
+ "source": "VoxCPM2 (synthetic)",
84
+ "speaker": "fav2"
85
+ }
86
+ }
data/style_map.json ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "0": {
3
+ "pitch_range": "flat",
4
+ "rate": "slow",
5
+ "question": false,
6
+ "label": "flat-range · slow"
7
+ },
8
+ "1": {
9
+ "pitch_range": "flat",
10
+ "rate": "slow",
11
+ "question": true,
12
+ "label": "flat-range · slow · question"
13
+ },
14
+ "2": {
15
+ "pitch_range": "flat",
16
+ "rate": "normal",
17
+ "question": false,
18
+ "label": "flat-range · normal"
19
+ },
20
+ "3": {
21
+ "pitch_range": "flat",
22
+ "rate": "normal",
23
+ "question": true,
24
+ "label": "flat-range · normal · question"
25
+ },
26
+ "4": {
27
+ "pitch_range": "flat",
28
+ "rate": "fast",
29
+ "question": false,
30
+ "label": "flat-range · fast"
31
+ },
32
+ "5": {
33
+ "pitch_range": "flat",
34
+ "rate": "fast",
35
+ "question": true,
36
+ "label": "flat-range · fast · question"
37
+ },
38
+ "6": {
39
+ "pitch_range": "mid",
40
+ "rate": "slow",
41
+ "question": false,
42
+ "label": "mid-range · slow"
43
+ },
44
+ "7": {
45
+ "pitch_range": "mid",
46
+ "rate": "slow",
47
+ "question": true,
48
+ "label": "mid-range · slow · question"
49
+ },
50
+ "8": {
51
+ "pitch_range": "mid",
52
+ "rate": "normal",
53
+ "question": false,
54
+ "label": "mid-range · normal"
55
+ },
56
+ "9": {
57
+ "pitch_range": "mid",
58
+ "rate": "normal",
59
+ "question": true,
60
+ "label": "mid-range · normal · question"
61
+ },
62
+ "10": {
63
+ "pitch_range": "mid",
64
+ "rate": "fast",
65
+ "question": false,
66
+ "label": "mid-range · fast"
67
+ },
68
+ "11": {
69
+ "pitch_range": "mid",
70
+ "rate": "fast",
71
+ "question": true,
72
+ "label": "mid-range · fast · question"
73
+ },
74
+ "12": {
75
+ "pitch_range": "wide",
76
+ "rate": "slow",
77
+ "question": false,
78
+ "label": "wide-range · slow"
79
+ },
80
+ "13": {
81
+ "pitch_range": "wide",
82
+ "rate": "slow",
83
+ "question": true,
84
+ "label": "wide-range · slow · question"
85
+ },
86
+ "14": {
87
+ "pitch_range": "wide",
88
+ "rate": "normal",
89
+ "question": false,
90
+ "label": "wide-range · normal"
91
+ },
92
+ "15": {
93
+ "pitch_range": "wide",
94
+ "rate": "normal",
95
+ "question": true,
96
+ "label": "wide-range · normal · question"
97
+ },
98
+ "16": {
99
+ "pitch_range": "wide",
100
+ "rate": "fast",
101
+ "question": false,
102
+ "label": "wide-range · fast"
103
+ },
104
+ "17": {
105
+ "pitch_range": "wide",
106
+ "rate": "fast",
107
+ "question": true,
108
+ "label": "wide-range · fast · question"
109
+ },
110
+ "neutral": "7"
111
+ }
english/cleaner.js ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Browser port of matcha_patch/polish_cleaners.py + polish_mixed_cleaners: Polish text normalisation, espeak-ng (WASM) IPA,
2
+ // English words in {braces} phonemized with the en-us voice, symbol ids. Must match the Python cleaners character for character.
3
+ import { initialize, setVoice, getPhonemes } from "https://cdn.jsdelivr.net/npm/espeak-phonemizer@0.1.2/src/espeak.mjs";
4
+ import { SYMBOL_TO_ID } from "./symbols.js";
5
+
6
+ const PL_WORD = "0-9a-ząćęłńóśźż";
7
+ const esc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
8
+ function abbr(k, v) {
9
+ if (k === "r." || k === "w.") return [new RegExp(`(?<=[0-9ivx])\\s?${esc(k)}`, "g"), ` ${v}`];
10
+ const tail = k.endsWith(".") ? "" : `(?![${PL_WORD}])`;
11
+ return [new RegExp(`(?<![${PL_WORD}])${esc(k)}${tail}`, "g"), v];
12
+ }
13
+ const ABBREV = [["np.", "na przykład"], ["tzn.", "to znaczy"], ["tj.", "to jest"], ["itd.", "i tak dalej"], ["itp.", "i tym podobne"],
14
+ ["m.in.", "między innymi"], ["dr", "doktor"], ["prof.", "profesor"], ["inż.", "inżynier"], ["mgr", "magister"], ["ul.", "ulica"],
15
+ ["al.", "aleja"], ["r.", "roku"], ["w.", "wieku"], ["godz.", "godzina"], ["min.", "minut"], ["św.", "święty"], ["nr", "numer"],
16
+ ["tel.", "telefon"], ["zł", "złotych"]].map(([k, v]) => abbr(k, v));
17
+
18
+ export function normalizeText(text) {
19
+ let t = text.toLowerCase();
20
+ t = t.replace(/\s*(?:—|–| - )\s*/g, ", ").replace(/…/g, "...");
21
+ t = t.replace(/[„”“"«»]/g, "");
22
+ for (const [rx, rep] of ABBREV) t = t.replace(rx, rep);
23
+ return t;
24
+ }
25
+
26
+ let ready = null, voice = "";
27
+ export function initPhonemizer() {
28
+ if (!ready) ready = (async () => { await initialize("https://cdn.jsdelivr.net/npm/espeak-phonemizer@0.1.2/dist"); await setVoice("pl"); voice = "pl"; })();
29
+ return ready;
30
+ }
31
+ async function useVoice(v) { if (voice !== v) { await setVoice(v); voice = v; } }
32
+
33
+ // phonemizer (python) splits on punctuation, phonemizes each chunk and glues the punctuation back
34
+ const PUNCT = /([;:,.!?]+)/;
35
+ function espeakChunks(t) {
36
+ let out = "";
37
+ for (const part of t.split(PUNCT)) {
38
+ if (!part) continue;
39
+ if (/^[;:,.!?]+$/.test(part)) { out += part; continue; }
40
+ const chunk = part.trim();
41
+ if (!chunk) continue;
42
+ const ph = getPhonemes(chunk).map(c => (c.phonemes || "").trim()).filter(Boolean).join(" ");
43
+ if (!ph) continue;
44
+ out += (out && !out.endsWith(" ") ? " " : "") + ph;
45
+ }
46
+ return out.replace(/\s+/g, " ").trim();
47
+ }
48
+ // this espeak-ng WASM build writes "iʲ" before a vowel ("znajomymiʲ albo"); the training phonemizer (espeak-ng 1.50, Linux)
49
+ // never does ("iʲ" does not occur in the training data at all) -> normalise, so the model gets what it was trained on
50
+ const fixPl = (ph) => ph.replace(/iʲ/g, "i");
51
+ async function plPhon(text) { await useVoice("pl"); const t = normalizeText(text); return t.trim() ? fixPl(espeakChunks(t)) : ""; }
52
+ async function enPhon(text) { await useVoice("en-us"); return espeakChunks(text).replace(/ʲ/g, ""); } // same WASM quirk; en-us never has ʲ
53
+
54
+ const VOICELESS = ["p", "t", "k", "f", "s", "ʃ", "θ", "h", "tʃ", "ˈp", "ˈt", "ˈk", "ˈf", "ˈs", "ˈʃ", "ˈθ", "ˈh", "ˌp", "ˌt", "ˌk", "ˌf", "ˌs", "ˌh"];
55
+ function oneLetter(w, nextPh) {
56
+ const vl = VOICELESS.some(p => nextPh.startsWith(p));
57
+ return { w: vl ? "f" : "v", z: vl ? "s" : "z", i: "i", a: "a", o: "ɔ", u: "u" }[w];
58
+ }
59
+ const unstress = (ph) => { const i = ph.indexOf(" "); const head = i < 0 ? ph : ph.slice(0, i); return head.replace(/[ˈˌ]/g, "") + (i < 0 ? "" : ph.slice(i)); };
60
+
61
+ export async function textToIpa(text) {
62
+ await initPhonemizer();
63
+ if (!text.includes("{")) return plPhon(text);
64
+ let out = "", pos = 0;
65
+ for (const m of text.matchAll(/\{([^{}]+)\}/g)) {
66
+ let pl = text.slice(pos, m.index), prep = "";
67
+ const mm = pl.match(/(?:^|\s)([wzaiouWZAIOU])\s*$/);
68
+ if (mm) { prep = mm[1].toLowerCase(); pl = pl.slice(0, mm.index + mm[0].indexOf(mm[1])); } // = Python pl[:mm.start(1)]
69
+ if (pl.trim()) {
70
+ const glue = !/^\s/.test(pl) && out !== "";
71
+ let ph = await plPhon(pl);
72
+ if (glue) ph = unstress(ph);
73
+ out += (glue ? "" : " ") + ph;
74
+ }
75
+ const en = await enPhon(m[1]);
76
+ if (prep) out += " " + oneLetter(prep, en);
77
+ const glue = m.index > 0 && !/\s/.test(text[m.index - 1]) && out !== "";
78
+ out += (glue ? "" : " ") + en;
79
+ pos = m.index + m[0].length;
80
+ }
81
+ const tail = text.slice(pos);
82
+ if (tail.trim()) {
83
+ const glue = !/^\s/.test(tail);
84
+ let ph = await plPhon(tail);
85
+ if (glue) ph = unstress(ph);
86
+ out += (glue ? "" : " ") + ph;
87
+ }
88
+ await useVoice("pl");
89
+ return out.replace(/\s+/g, " ").trim();
90
+ }
91
+
92
+ export function ipaToIds(ipa) {
93
+ const ids = [];
94
+ const unknown = new Set();
95
+ for (const ch of ipa) {
96
+ const id = SYMBOL_TO_ID[ch];
97
+ if (id === undefined) unknown.add(ch); else ids.push(id);
98
+ }
99
+ const seq = new Array(ids.length * 2 + 1).fill(0);
100
+ ids.forEach((v, i) => { seq[2 * i + 1] = v; });
101
+ return { seq, unknown: [...unknown] };
102
+ }
english/english.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Browser port of voxcpm/english_detect.py: wrap English words of a Polish sentence in braces ("Po {meeting}u wyślę ci {feedback}.")
2
+ // for the mixed Polish/English phonemizer. Curated list only (the Python version also has a word-frequency fallback for
3
+ // unlisted words; a frequency table is too big for the browser). Inflected forms whose full form is a common Polish word
4
+ // (wina, legendy, deskę) are precomputed in english_data.json -> pl_inflected_block.
5
+ let D = null;
6
+ export async function initEnglish(url = new URL("./english_data.json", import.meta.url)) {
7
+ if (!D) {
8
+ const j = await (await fetch(url)).json();
9
+ D = { cur: new Set(j.curated), rap: new Set(j.read_as_polish), suf: j.suffixes, loan: j.loan_stems, block: new Set(j.pl_inflected_block) };
10
+ }
11
+ return D;
12
+ }
13
+ export function setEnglishData(j) { D = { cur: new Set(j.curated), rap: new Set(j.read_as_polish), suf: j.suffixes, loan: j.loan_stems, block: new Set(j.pl_inflected_block) }; }
14
+ const known = (w) => { const l = w.toLowerCase(); return D.cur.has(l) && !D.rap.has(l); };
15
+ function splitWord(w) {
16
+ if (known(w)) return [w, ""];
17
+ const lw = w.toLowerCase();
18
+ if (w.includes("'") || w.includes("’")) {
19
+ const st = w.replace(/’/g, "'").split("'");
20
+ const head = st.shift(), rest = st.join("'");
21
+ if (known(head)) return [head, rest ? "'" + rest : ""];
22
+ }
23
+ if (D.block.has(lw)) return null;
24
+ for (const k of D.suf) if (lw.endsWith(k) && w.length - k.length >= 3 && known(w.slice(0, -k.length))) return [w.slice(0, -k.length), w.slice(-k.length)];
25
+ return null;
26
+ }
27
+ const WORD = /\{[^{}]*\}|[A-Za-zÀ-ÿĄĆĘŁŃÓŚŹŻąćęłńóśźż][A-Za-zÀ-ÿĄĆĘŁŃÓŚŹŻąćęłńóśźż'’-]*/g;
28
+ export function markEnglish(text) {
29
+ if (!D) throw new Error("initEnglish() first");
30
+ const out = text.replace(WORD, (w) => { if (w.startsWith("{")) return w; const s = splitWord(w); return s ? `{${s[0]}}${s[1]}` : w; });
31
+ return out.replace(/\}(\s+)\{/g, "$1");
32
+ }
english/english_data.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"curated": ["ac/dc", "accelerator", "access", "account", "account manager", "accountability", "achievement", "acquisition", "action", "action points", "add-on", "adobe", "adopter", "ads", "aesthetic", "affiliate", "after", "after party", "afterparty", "afterwork", "agile", "air", "airbnb", "airbus", "airdrop", "airplay", "airpods", "airtag", "alert", "algorithm", "aliexpress", "alignment", "all", "all inclusive", "all-star", "alternative", "amazing", "amazon", "amazon prime", "ambassador", "analyst", "analytics", "and", "angel", "angular", "anyway", "app", "app store", "apple", "apple music", "apple pay", "apple store", "apple tv", "apple watch", "apps", "art", "art director", "asap", "attachment", "audiobook", "augmented", "augmented reality", "automation", "autoplay", "awareness", "away", "awesome", "azure", "babe", "baby", "baby boomers", "baby shower", "babysitter", "back", "back office", "back-end", "backdoor", "backend", "background", "backlog", "backpack", "backpacker", "backpacking", "backstage", "backup", "bacon", "badge", "bae", "balance", "balancer", "bank", "barbecue", "barber", "barbershop", "barbie", "bartender", "baseball", "basic", "basically", "basketball", "batman", "battle", "battle royale", "beatbox", "beauty", "beef", "behind", "behind the scenes", "benchmark", "benchmarking", "benefits", "best", "best friend", "best practice", "best practices", "best seller", "bestie", "big", "big brother", "big data", "billboard", "binge", "binge watching", "binge-watching", "bio", "bird", "birthday", "bitcoin", "black", "black friday", "blame", "blind", "blind date", "bling", "blockbuster", "blockchain", "blocker", "blogger", "bluetooth", "boarding", "body", "body positive", "body shaming", "bodybuilder", "bodybuilding", "boeing", "boilerplate", "bolt", "bombing", "bond", "booking", "boomer", "boomers", "booster", "bootcamp", "boss", "boss fight", "bottleneck", "bounty", "bowl", "bowling", "box", "box office", "boyfriend", "boysband", "brainstorm", "brainstorming", "branch", "brand", "brand ambassador", "brand awareness", "brandbook", "branding", "break", "breakdance", "breakdown", "breakfast", "breaking", "breaking news", "breakpoint", "brexit", "brief", "briefing", "brother", "brownie", "brunch", "bubble", "bubble tea", "bucket", "bucket list", "budget", "bug", "bug bounty", "bug report", "bugfix", "bugs", "build", "building", "bull", "bumble", "bundle", "burger", "burger king", "burnout", "burpees", "business", "business angel", "business case", "business intelligence", "business model", "business partner", "business plan", "button", "buzz", "buzzword", "by the way", "bye", "c-level", "cache", "calisthenics", "call", "call to action", "cancel", "cancel culture", "capcut", "capital", "cappuccino", "caption", "car sharing", "card", "cardio", "career", "career path", "carpet", "carry", "carsharing", "case", "case study", "cash", "cash flow", "cashback", "casual", "casual friday", "catcalling", "catch-up", "catering", "challenge", "champions", "champions league", "change", "changelog", "changer", "chargeback", "charger", "chat", "chat gpt", "chatbot", "chatgpt", "cheat", "cheat sheet", "check-in", "check-out", "checkbox", "checking", "checklist", "checkout", "checkpoint", "cheers", "cheeseburger", "cheesecake", "chill", "chillout", "christmas", "chromebook", "churn", "churn rate", "cider", "city", "city break", "claim", "clean", "clean code", "clearance", "click", "clickbait", "clickup", "cliffhanger", "climate", "climate change", "clone", "close", "close friends", "closing", "cloud", "cloud computing", "cloudflare", "cluster", "clutch", "co-host", "co-op", "coach", "coachella", "coaching", "code", "code review", "codebase", "coder", "coding", "coffee", "coffee shop", "cold", "cold call", "cold mail", "coldplay", "coliving", "collab", "collabs", "comeback", "comedy", "coming", "coming out", "coming-of-age", "comment", "commit", "commitment", "community", "community manager", "compiler", "compliance", "component", "computer", "computer vision", "computing", "concealer", "concept", "conference", "conference call", "confluence", "congrats", "congratulations", "consent", "contactless", "container", "content", "content creator", "content marketing", "continue", "continuous", "continuous integration", "contract", "converse", "conversion", "conversion rate", "cookie", "cookies", "cool", "copilot", "copy", "copy paste", "copy-paste", "copyright", "copywriter", "copywriting", "corporate", "cosmopolitan", "cosplay", "counter-strike", "country", "coupon", "court", "cover", "coworking", "cozy", "craft", "creative", "creative director", "creator", "credit", "credit card", "creep", "creepy", "crew", "crime", "cringe", "cronjob", "cross-platform", "cross-sell", "crossfit", "crossover", "crowdfunding", "crunch", "crush", "crypto", "culture", "cupcake", "curling", "customer", "customer experience", "customer service", "customer success", "customer support", "cut-off", "cute", "cutscene", "cyber", "cyber monday", "cyberbullying", "cyberpunk", "daily", "daily standup", "dark", "dark mode", "darling", "darts", "dashboard", "data analyst", "data engineer", "data science", "data scientist", "dataset", "date", "dating", "deadlift", "deadline", "deadlock", "deadpool", "deal", "dealer", "debriefing", "debt", "debug", "debugger", "debugging", "deck", "deep", "deep dive", "deep learning", "deep work", "deepfake", "deepseek", "deliverable", "delivery", "dell", "dependency", "deploy", "deployment", "design", "design patterns", "designer", "desktop", "detox", "dev", "developer", "devops", "devtools", "diff", "digital", "digital detox", "digital nomad", "dinner", "dip", "direct", "direct message", "director", "discord", "discount", "discovery", "disney", "disneyland", "diss", "dive", "diversity", "dj", "docker", "docs", "dog", "done", "donut", "double", "double click", "downgrade", "downtime", "draft", "drag", "drag and drop", "dream", "dream job", "dream team", "dress", "dress code", "drip", "drive", "drive-in", "drive-thru", "drop", "dropbox", "dropdown", "dropshipping", "dubstep", "duty-free", "déjà", "déjà vu", "e-book", "e-commerce", "e-learning", "e-mail", "earbuds", "early", "early access", "early adopter", "early bird", "easter", "easter egg", "easy", "easyjet", "eats", "ebay", "ebook", "eco-friendly", "ecommerce", "edge", "edge case", "egg", "elasticsearch", "elearning", "elevator", "elevator pitch", "email", "embedding", "eminem", "emirates", "emmy", "emoji", "emote", "employer", "employer branding", "empowerment", "encryption", "end-to-end", "endpoint", "engagement", "engine", "engineer", "engineering", "enter", "equity", "error", "escalation", "escape", "escape room", "estate", "ethereum", "etsy", "eurovision", "event", "excel", "exit", "expedia", "experience", "explainer", "exploit", "extrovert", "eyeliner", "face", "face id", "facebook", "facebook ads", "facepalm", "facetime", "fact", "fact checking", "fact-checking", "factoring", "factory", "fair", "fair play", "fake", "fake news", "fallback", "fanboy", "fancy", "fandom", "fanfic", "fangirl", "fanpage", "fantasy", "farming", "fashion", "fast", "fast fashion", "fast food", "feature", "feature flag", "feature request", "features", "featuring", "feed", "feedback", "fiction", "fig", "fight", "filter", "fine", "fine tuning", "fine-tuning", "finger", "finger food", "finisher", "fintech", "firebase", "firewall", "firmware", "fit", "fitbit", "fitness", "flag", "flash", "flash sale", "flex", "flexing", "flipchart", "flipping", "flow", "folk", "follow", "follow up", "follow-up", "follower", "followers", "fomo", "food", "food court", "food truck", "foodie", "football", "footer", "for", "for you page", "forbes", "forecast", "fork", "fortnite", "forward", "framework", "free", "free shipping", "free trial", "freelance", "freelancer", "freemium", "freeride", "freestyle", "freeware", "friday", "friend", "friend zone", "friends", "friends with benefits", "friendzone", "from", "front", "front office", "front-end", "frontend", "frontman", "frozen", "full", "full stack", "full time", "full-stack", "full-time", "fullstack", "fun", "funnel", "funny", "galaxy", "game", "game changer", "game of thrones", "game over", "game pass", "game show", "gamedev", "gamepad", "gameplay", "gamer", "gamification", "gaming", "gaming pc", "garage", "garmin", "gaslighting", "gate", "geforce", "gemini", "generation", "ghosting", "gift", "gift card", "girlboss", "girlfriend", "github", "github copilot", "gitlab", "giveaway", "glamping", "global", "global warming", "glow", "glow-up", "gmail", "go-live", "go-to", "go-to-market", "goat", "golang", "good", "good job", "good luck", "google", "google ads", "google analytics", "google cloud", "google docs", "google drive", "google maps", "google meet", "google pay", "google play", "google sheets", "gopro", "gps", "gpt", "grammy", "grammys", "graphic", "graphic designer", "graphql", "great", "great job", "green", "green flag", "greenwashing", "grind", "grinding", "grooming", "group", "group chat", "growth", "growth hacking", "growth mindset", "grunge", "guide", "gym", "hack", "hackathon", "hacker", "hacking", "halloween", "hand", "hands-on", "happy", "happy birthday", "happy end", "happy hour", "happy new year", "hard", "hard skills", "hardware", "harley", "harley-davidson", "harry", "harry potter", "hashtag", "hat", "hat trick", "hat-trick", "hate", "hate speech", "hater", "haul", "have", "headbanging", "header", "headhunter", "headless", "headline", "headliner", "headphones", "headquarters", "headset", "headshot", "healer", "healing", "health", "heart", "heatmap", "heavy", "heavy metal", "hello", "help", "help desk", "helpdesk", "hey", "hi-tech", "high", "high score", "high-tech", "highlighter", "highlights", "hiking", "hilton", "hip", "hip hop", "hip-hop", "hiring", "hiring manager", "hit", "hockey", "home", "home office", "homepod", "homestay", "honey", "hoodie", "hooks", "hop", "hosting", "hot", "hot dog", "hot-dog", "hotfix", "hotspot", "hour", "house", "housekeeping", "housewarming", "hover", "hubspot", "hugging", "hugging face", "hustle", "hut", "hybrid", "hybrid work", "hype", "hypebeast", "hyped", "icloud", "iconic", "imac", "inbound", "inbox", "incel", "inclusion", "inclusive", "incubator", "indeed", "indesign", "indie", "indiegogo", "indoor", "influencer", "influencer marketing", "info", "inheritance", "input", "insight", "insights", "instagram", "integration", "intelligence", "interface", "interior", "interior design", "internet", "internet of things", "internship", "interview", "introvert", "invite", "ipad", "iphone", "ipod", "issue", "jailbreak", "jam", "jam session", "james", "james bond", "java", "javascript", "jeans", "jeep", "jet", "jet lag", "jingle", "jir", "jira", "job", "job interview", "job offer", "jogging", "joker", "journaling", "joystick", "jungle", "k-pop", "key", "key account", "key account manager", "keyboard", "keynote", "kick-off", "kickboxing", "kickoff", "kickstarter", "kids", "kindle", "king", "kitesurfing", "knockout", "know-how", "kubernetes", "lag", "landing", "landing page", "language", "large", "large language model", "last", "last minute", "late", "late check-out", "latency", "launch", "layoff", "layoffs", "layout", "lead", "lead generation", "leader", "leaderboard", "leadership", "league", "learning", "leasing", "legacy", "legacy code", "lemonade", "lessons", "let's", "let's go", "level", "level up", "license", "life", "life hack", "lifehack", "lifestyle", "light", "light mode", "like", "line-up", "lineup", "link", "link in bio", "linkedin", "linter", "literally", "live", "live chat", "live coding", "live stream", "livestream", "lo-fi", "load", "load balancer", "lockdown", "lofi", "log", "log out", "logout", "long", "long read", "look", "loot", "lounge", "love", "love bombing", "low-code", "luck", "lunch", "lunchbox", "macbook", "macbook air", "macbook pro", "machine", "machine learning", "machinekind", "mail", "mailchimp", "mailing", "main", "mainstream", "make-up", "makeover", "maker", "makeup", "making", "making of", "malware", "management", "manager", "mansplaining", "maps", "market", "marketing", "marketing automation", "marketplace", "marvel", "master", "mastercard", "masterchef", "masterclass", "mastering", "match", "mcdonald's", "mcdonalds", "meal", "meal prep", "media", "meet", "meeting", "meeting room", "meetup", "member", "membership", "meme", "mental", "mental health", "mention", "merch", "merchandise", "merge", "merge request", "merry", "merry christmas", "message", "messenger", "metal", "metaverse", "mic", "microblading", "microservices", "microsoft", "microsoft office", "microsoft teams", "mid", "midjourney", "miles", "milestone", "milkshake", "millennials", "mindfulness", "mindset", "minecraft", "minions", "minute", "mixing", "mobile", "mobile app", "mock", "mockup", "mode", "model", "monday", "monetization", "monthly", "mood", "moodboard", "moshpit", "mousepad", "mouth", "muffin", "multiplayer", "multitasking", "music", "music video", "must", "must have", "must-have", "must-read", "must-see", "must-watch", "nearshoring", "nerf", "netflix", "network", "networking", "neural", "neural network", "new", "news", "newsletter", "newsroom", "next.js", "nice", "nice to have", "nickname", "nightclub", "nightlife", "nike", "no comment", "no problem", "no way", "no-code", "node.js", "nomad", "noob", "nordic", "nordic walking", "notebook", "notes", "notification", "notifications", "notion", "nuggets", "nvidia", "oasis", "off-road", "off-site", "offboarding", "offer", "office", "office manager", "offline", "offshoring", "offside", "ok boomer", "on-call", "on-site", "onboarding", "one-liner", "one-on-one", "onedrive", "online", "onlyfans", "open", "open mic", "open source", "open space", "open world", "open'er", "openai", "opt-in", "opt-out", "oscars", "out", "out of office", "outage", "outbound", "outcome", "outdoor", "outfit", "outlet", "outlook", "output", "outreach", "outsourcing", "over", "overbooking", "overclocking", "overengineering", "overflow", "overhead", "override", "oversize", "overthinking", "overtime", "overview", "overwatch", "owner", "ownership", "pace", "pack", "packaging", "page", "pain", "pain point", "paintball", "pair", "pair programming", "pancake", "pancakes", "part", "part time", "part-time", "partner", "partner in crime", "party", "pass", "password", "password manager", "past", "past simple", "paste", "patch", "path", "patreon", "patterns", "pay", "payload", "paypal", "paywall", "peeling", "pendrive", "pentest", "penthouse", "perfect", "performance", "performance marketing", "performance review", "perplexity", "personal", "personal brand", "personal branding", "personal trainer", "phishing", "photoshop", "pinterest", "pipeline", "pitch", "pitch deck", "pivot", "pixar", "pizza", "pizza hut", "placeholder", "plan", "plank", "planner", "planning", "plant-based", "play", "play store", "play-off", "playback", "playground", "playlist", "playoff", "playoffs", "playstation", "please", "plot", "plot twist", "plug-in", "plugin", "podcast", "podcaster", "point", "points", "policy", "pop-up", "popcorn", "popup", "positive", "post-it", "postmortem", "potter", "power", "power bank", "power bi", "power button", "powerbank", "powerpoint", "practice", "practices", "pre-order", "pre-workout", "premier", "premier league", "preorder", "prep", "prequel", "present", "present perfect", "pricing", "pride", "prime", "prime video", "print", "print screen", "printscreen", "privacy", "privacy policy", "pro", "problem", "prod", "producer", "product", "product designer", "product manager", "product owner", "production", "programming", "project", "project manager", "promo", "promo code", "prompt", "prompt engineer", "prompt engineering", "proof", "proof of concept", "protein", "proxy", "pub", "pull", "pull request", "push", "push notification", "python", "q&a", "qr", "quarterly", "queen", "quest", "queue", "quick", "quick win", "quiz", "radiohead", "rafting", "random", "ranked", "ransomware", "rate", "rave", "razer", "reach", "react", "reaction", "reactions", "read", "real", "real estate", "real-time", "reality", "reality show", "rebase", "rebranding", "recovery", "recruiter", "red", "red bull", "red carpet", "red flag", "reddit", "reebok", "reel", "reels", "refactor", "refactoring", "refinement", "refund", "release", "release notes", "remake", "remaster", "reminder", "remote", "remote work", "reply", "reply all", "repo", "report", "reporting", "repository", "repost", "request", "research", "resell", "reseller", "reset", "respawn", "response", "responsive", "restart", "retention", "retreat", "retrospective", "retweet", "revenue", "review", "reviewer", "ribs", "rihanna", "rizz", "road", "road trip", "roadie", "roadmap", "roadtrip", "roaming", "roast", "roblox", "rock'n'roll", "roguelike", "rollback", "rollercoaster", "rollout", "rolls-royce", "romance", "rooftop", "room", "router", "routine", "royale", "royalty", "rugby", "running", "runtime", "rush", "rust", "ryanair", "safe", "safe space", "sale", "sales", "sales manager", "salesforce", "samsung", "sandbox", "sandwich", "scalable", "scale-up", "scenes", "sci-fi", "science", "science fiction", "scientist", "scope", "scope creep", "score", "scraping", "screen", "screen time", "screenshot", "script", "scroll", "scrum", "scrum master", "search", "search engine", "second", "second hand", "second-hand", "see", "see you", "seen", "self-care", "self-help", "self-love", "self-service", "selfie", "selfie stick", "seller", "sequel", "server", "serverless", "service", "service desk", "session", "setup", "shake", "shaming", "shareholder", "sharepoint", "sharing", "shazam", "sheet", "sheets", "shein", "shell", "shipping", "shooter", "shop", "shopify", "shopping", "shortcut", "shorts", "shot", "shout-out", "shoutout", "show", "shower", "showroom", "showstopper", "side", "side hustle", "side project", "sign", "sign in", "sign up", "sign-off", "signal", "silicon", "silicon valley", "simp", "simple", "sitcom", "situationship", "six", "six pack", "sixpack", "skateboard", "skateboarding", "skatepark", "skater", "sketch", "skill", "skills", "skillset", "skin", "skincare", "skype", "skyscanner", "slack", "slasher", "slay", "slide", "slider", "slides", "small", "small talk", "smart", "smart city", "smart contract", "smart home", "smart tv", "smart watch", "smartband", "smartwatch", "smoothie", "snapchat", "sneakerhead", "sneakers", "snippet", "snooker", "snowboar", "snowboard", "snowboarding", "social", "social engineering", "social media manager", "soft", "soft launch", "soft skills", "software", "software developer", "software engineer", "software house", "software update", "songwriter", "sorry", "soul", "soulmate", "sound", "soundbar", "soundcheck", "soundtrack", "source", "space", "spacex", "spaghetti", "spaghetti code", "spam", "spawn", "speaker", "speech", "speed", "speed dating", "speedrun", "speedrunner", "spiderman", "spin-off", "spoiler", "spoiler alert", "spongebob", "sponsored", "spotify", "spreadsheet", "sprint", "sprint planning", "spyware", "squad", "squash", "stack", "stack overflow", "stack trace", "staging", "stakeholder", "stakeholders", "stalker", "stalking", "stand-up", "stand-up comedy", "standup", "star wars", "starbucks", "starlink", "start-up", "startup", "staycation", "steakhouse", "steam", "steampunk", "stick", "sticker", "stitch", "stopover", "storage", "store", "stories", "story", "story points", "storyboard", "storytelling", "streak", "stream", "streamer", "streaming", "street", "street food", "streetball", "streetstyle", "streetwear", "stretching", "study", "stunt", "stuntman", "stylist", "subscribe", "subscriber", "subscription", "subtitles", "subway", "subwoofer", "success", "summary", "summer", "summit", "sunrise", "sunset", "super", "super bowl", "supercharger", "superfood", "superhero", "superman", "support", "surfing", "surround", "survival", "sustainability", "sustainable", "swag", "swagger", "sweet", "sweetheart", "swift", "swipe", "swipe up", "sync", "t-shirt", "tagline", "take", "take away", "takeaway", "talent", "talent acquisition", "talent show", "talk", "talk show", "target", "task", "tea", "team", "team building", "team lead", "team leader", "teambuilding", "teams", "teamwork", "teaser", "tech", "tech debt", "tech lead", "tech stack", "technical", "technical debt", "template", "tensorflow", "test", "test case", "tests", "thank", "thank you", "thanks", "thanksgiving", "the", "theme", "things", "think", "think-tank", "this", "thread", "threads", "thriller", "thrones", "thumbnail", "thumbs", "thumbs up", "ticket", "tie-break", "tiktok", "tiktoker", "time", "time management", "time to market", "timeline", "timer", "tinder", "to do list", "to go", "to-do", "to-do list", "toggle", "token", "toner", "toolkit", "tooltip", "touch", "touch id", "touchpad", "touchscreen", "trace", "track", "tracking", "trackpad", "trader", "trading", "traffic", "trailer", "trainee", "trainer", "training", "trance", "transformer", "trekking", "trello", "trending", "trendsetter", "trial", "trick", "trip", "truck", "true", "true crime", "tuning", "tutorial", "tweet", "twerking", "twist", "twitch", "twitter", "typescript", "typing", "u2", "uber", "uber eats", "unboxing", "underdog", "underground", "unfollow", "unicorn", "unit", "unit test", "unit tests", "unity", "unplugged", "unsubscribe", "update", "upgrade", "upsell", "uptime", "use", "use case", "user", "user experience", "user interface", "user story", "username", "valley", "valorant", "vans", "venture", "venture capital", "vibe", "vibes", "video", "video call", "views", "vintage", "viral", "virtual", "virtual reality", "vision", "vlog", "vlogger", "voice", "voice message", "voucher", "walking", "wallet", "warming", "waste", "watch", "watching", "waterfall", "way", "waze", "wearable", "wearables", "web", "web app", "web designer", "web3", "webcam", "webhook", "wednesday", "weekday", "weeken", "weekend", "weekendowych", "weekly", "weird", "welcome", "well", "well done", "well-being", "wellbeing", "wellness", "whatever", "whatsapp", "whey", "whiteboard", "whitepaper", "wi-fi", "widget", "wifi", "wimbledon", "win-win", "windows", "windsurfing", "wireframe", "wireless", "wishlist", "with", "woke", "woodstock", "word", "word of mouth", "wordpress", "work from home", "work-life", "work-life balance", "workaround", "workout", "workshop", "world", "wow", "wrap", "xbox", "year", "yes", "yolo", "you", "youtube", "youtube shorts", "youtuber", "zero", "zero waste", "zone"], "read_as_polish": ["art", "bank", "blog", "bloga", "budżet", "canva", "data", "demo", "duolingo", "figma", "figmie", "film", "golf", "grill", "hotel", "internet", "jazz", "kebab", "komputer", "laptop", "laptopa", "laptopem", "laptopie", "lider", "list", "lobby", "lunchbox", "mecz", "media", "menu", "metal", "model", "ok", "partner", "pizza", "plan", "premier", "pro", "problem", "radio", "retro", "rock", "serial", "smartfon", "sms", "sport", "star", "stop", "super", "sushi", "tablet", "talent", "taxi", "telegram", "tenis", "test", "tour", "trener", "video", "webinar", "webinaru", "webinarze", "zero", "zoom"], "suffixes": ["ami", "ach", "owi", "iem", "owy", "owa", "owe", "em", "om", "ów", "ie", "ze", "u", "a", "y", "i", "e", "ę"], "loan_stems": ["mail", "weekend", "facebook", "lunch", "router", "link", "youtube", "google", "instagram", "podcast", "playlist", "meeting", "smartphone", "deadline", "feedback", "update", "spotify", "netflix", "whatsapp", "messenger", "tiktok", "linkedin", "iphone"], "pl_inflected_block": ["add-ona", "add-one", "add-oni", "airbusa", "all-stara", "all-stare", "all-stary", "ally", "andy", "andów", "angela", "angeli", "apple musicie", "arte", "bankach", "bankami", "banki", "bankiem", "bankowe", "bankowy", "banku", "banków", "batmana", "bestie", "billboardy", "bitcoina", "bonda", "bossa", "brandy", "breaking newsa", "breaking newsami", "breaking newsy", "breaking newsów", "brexitu", "bugu", "burger kinga", "burgera", "burgery", "business angela", "business angeli", "business casey", "business modela", "business modelach", "business modele", "business modelem", "business modeli", "business modelu", "business partnera", "business partnerami", "business partnerem", "business partnerów", "business planach", "business planami", "business planem", "business planie", "business planom", "business planu", "business plany", "business planów", "casey", "catch-upa", "chata", "chaty", "chatę", "chilli", "cold maila", "cold maile", "cold mailem", "cold maili", "cold mailowy", "cold mailu", "content marketingowe", "content marketingowy", "content marketingu", "covery", "cross-platforma", "cross-platformach", "cross-platformie", "cross-platformy", "cross-platformę", "deep worka", "deep worki", "deep workiem", "deep worku", "deep worków", "della", "disneya", "doga", "dogi", "dragi", "dream teamu", "e-maila", "e-maile", "e-mailem", "e-maili", "e-mailowy", "e-mailu", "edge casey", "eventy", "face ida", "face ide", "face idę", "fair playa", "fairy", "fake newsa", "fake newsami", "fake newsy", "fake newsów", "flaga", "flagami", "flagi", "flagę", "follow upa", "follow-upa", "fora", "forach", "forów", "frontach", "frontem", "frontowe", "frontu", "fronty", "frontów", "game passe", "glowa", "glowe", "glowie", "glowy", "go-to-marketach", "go-to-marketu", "go-toi", "go-toy", "good lucky", "google playa", "green flaga", "green flagami", "green flagi", "green flagę", "greene", "group chata", "group chaty", "group chatę", "hands-ona", "hands-one", "hands-oni", "hardy", "harry pottera", "hashtagi", "hashtagiem", "hashtagu", "hate", "heavy metale", "heavy metali", "heavy metalowa", "heavy metalowe", "heavy metalowy", "heavy metalu", "help deska", "help deskach", "help deski", "help deskę", "hip hope", "hip hopu", "hip-hope", "hip-hopu", "hitem", "hitu", "hity", "hitów", "hope", "hopu", "huta", "huty", "internetach", "internetem", "internetowa", "internetowe", "internetowi", "internetowy", "internetu", "internety", "internetów", "ipada", "james bonda", "jamesa", "jamesem", "jamie", "jamy", "jeansy", "jokera", "k-pope", "k-popu", "kinga", "kingi", "know-howie", "large language modele", "large language modeli", "large language modelu", "let's goi", "level upa", "line-upa", "live chata", "live chaty", "live chatę", "loga", "logiem", "long ready", "lucky", "maine", "mainstreamowe", "mainstreamu", "make-upa", "making ofe", "managera", "managerem", "marketach", "marketingiem", "marketingowa", "marketingowe", "marketingowy", "marketingu", "marketu", "marvela", "metale", "metali", "metalowa", "metalowe", "metalowy", "metalu", "microsoftu", "midi", "modela", "modelach", "modele", "modelem", "modeli", "modelu", "musicie", "must-ready", "newsa", "newsami", "newsy", "newsów", "nicei", "no problemach", "no problemami", "no problemem", "no problemie", "no problemom", "no problemu", "no problemy", "no problemów", "parti", "partie", "partnera", "partnerami", "partnerem", "partnerów", "party", "passe", "passę", "pasta", "pasty", "pastę", "performance marketingowe", "performance marketingowy", "performance marketingu", "photoshopie", "pizza huta", "pizza huty", "planach", "planami", "planem", "planie", "planom", "planu", "plany", "planów", "playa", "pop-upa", "popcornu", "pottera", "power bankach", "power bankami", "power banki", "power bankiem", "power bankowe", "power bankowy", "power banku", "power banków", "power bie", "pre-orderu", "premiera", "premierem", "premierowi", "premiery", "premierze", "premierów", "premierę", "problemach", "problemami", "problemem", "problemie", "problemom", "problemu", "problemy", "problemów", "pubie", "pubu", "q&aa", "q&ae", "q&ai", "q&au", "quick wina", "quick winie", "quick winy", "quick winę", "ready", "realem", "realu", "red flaga", "red flagami", "red flagi", "red flagę", "reda", "samsunga", "screena", "screeny", "service deska", "service deskach", "service deski", "service deskę", "spamu", "stand-upa", "start-upa", "supermana", "talentem", "talentu", "talenty", "talentów", "teamu", "test casey", "testach", "testami", "testem", "testowy", "testu", "testy", "testów", "they", "time to marketach", "time to marketu", "to do lista", "to do listach", "to do listami", "to do liste", "to do listem", "to do listu", "to do listy", "to do listów", "to do listę", "to goi", "to-do lista", "to-do listach", "to-do listami", "to-do liste", "to-do listem", "to-do listu", "to-do listy", "to-do listów", "to-do listę", "to-doi", "to-doom", "touch ida", "touch ide", "touch idę", "tweeta", "tweetach", "tweetem", "tweety", "tweetów", "twittera", "twitterem", "twitterze", "unit testach", "unit testem", "unit testu", "unit testy", "unit testów", "unity", "use casey", "win-wina", "win-wine", "win-winem", "win-wini", "win-winie", "win-winy", "win-winę", "windowsa"]}
english/english_detect.py ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Find English words in ordinary Polish text and wrap them in braces for polish_mixed_cleaners (run time, ~µs per word).
4
+
5
+ A word (or a Polish-inflected form of it: meetingu -> meeting + u) is English when
6
+ - it is in the curated list (english_words.txt: the English words of the training set, brands, common loanwords), or
7
+ - it is common in English and clearly rarer in Polish (wordfreq Zipf: en >= 3, en - pl >= MARGIN) and not a common
8
+ Polish word (pl < 4.5: protects "to", "dom", "pies"…), and it has no Polish diacritics;
9
+ and it is not on the read-as-Polish list (laptop, retro, film…). Explicit braces in the input are kept as they are.
10
+
11
+ from english_detect import mark_english; mark_english("Po meetingu wyślę ci feedback.") -> "Po {meeting}u wyślę ci {feedback}."
12
+ python3 voxcpm/english_detect.py --eval data_v3/matcha_fav2/metadata.csv
13
+ """
14
+ import re
15
+ from functools import lru_cache
16
+ from pathlib import Path
17
+
18
+ HERE = Path(__file__).resolve().parent
19
+ MARGIN, EN_MIN, PL_MAX = 1.5, 3.5, 3.5
20
+ PL_INFLECTED_MAX = 3.0 # an inflected form at least this common in Polish is a Polish word
21
+ SUFFIXES = sorted(["ami", "ach", "owi", "iem", "em", "om", "ów", "ie", "u", "a", "y", "i", "e", "ę", "ze", "owy", "owa", "owe"], key=len, reverse=True)
22
+ READ_AS_POLISH = {"retro", "webinar", "duolingo", "lobby", "laptop", "blog", "budżet", "zoom", "canva", "figma", "film", "plan", "super", "stop",
23
+ "sport", "hotel", "tenis", "golf", "mecz", "lider", "trener", "komputer", "internet", "radio", "taxi", "menu", "pizza",
24
+ "smartfon", "tablet", "serial", "lunchbox", "jazz", "rock", "sms", "ok", "demo", "sushi", "kebab", "grill", "telegram",
25
+ "webinaru", "webinarze", "laptopa", "laptopie", "laptopem", "bloga", "figmie"} | {"art", "bank", "data", "internet", "list", "media", "metal", "model", "partner", "pizza", "plan", "premier", "pro", "problem", "star", "super", "talent", "test", "tour", "video", "zero"}
26
+ PL_HOMOGRAPHS = {"to", "a", "i", "na", "do", "on", "no", "nie", "ale", "jak", "tak", "most", "drug", "wind", "now", "got", "but", "star", "form",
27
+ "set", "lot", "men", "end", "car", "list", "post", "tor", "pan", "pal", "bar", "kit", "mama", "data", "kino", "wars", "win",
28
+ "desk", "legend", "work"}
29
+ # established loans whose inflected forms are frequent in Polish text (maila, weekendu, Facebooku) but still English-sounding
30
+ LOAN_STEMS = ("mail", "weekend", "facebook", "lunch", "router", "link", "youtube", "google", "instagram", "podcast", "playlist", "meeting",
31
+ "smartphone", "deadline", "feedback", "update", "spotify", "netflix", "whatsapp", "messenger", "tiktok", "linkedin", "iphone")
32
+ PL_DIACRITICS = re.compile(r"[ąćęłńóśźż]", re.I)
33
+ WORD = re.compile(r"\{[^{}]*\}|[A-Za-zÀ-ÿĄĆĘŁŃÓŚŹŻąćęłńóśźż][A-Za-zÀ-ÿĄĆĘŁŃÓŚŹŻąćęłńóśźż'’-]*")
34
+
35
+
36
+ def _load_curated():
37
+ f = HERE / "english_words.txt"
38
+ if not f.exists():
39
+ return set()
40
+ out = set()
41
+ for l in f.read_text(encoding="utf-8").splitlines():
42
+ l = l.strip().lower()
43
+ if l and not l.startswith("#"):
44
+ out.add(l)
45
+ out |= {w for w in l.split() if len(w) > 2 and w not in PL_HOMOGRAPHS} # words of phrases: "pull request" -> pull, request
46
+ return out
47
+
48
+
49
+ CURATED = _load_curated()
50
+
51
+
52
+ def known(w):
53
+ lw = w.lower()
54
+ return lw in CURATED and lw not in READ_AS_POLISH
55
+
56
+
57
+ @lru_cache(maxsize=200000)
58
+ def by_frequency(w):
59
+ """fallback for whole words not on the list: clearly English, rare in Polish"""
60
+ lw = w.lower()
61
+ if lw in READ_AS_POLISH or PL_DIACRITICS.search(lw) or len(lw) < 4:
62
+ return False
63
+ try:
64
+ from wordfreq import zipf_frequency
65
+ except ImportError:
66
+ return False
67
+ en, pl = zipf_frequency(lw, "en"), zipf_frequency(lw, "pl")
68
+ return en >= EN_MIN and en - pl >= MARGIN and pl < PL_MAX
69
+
70
+
71
+ @lru_cache(maxsize=200000)
72
+ def pl_word(lw):
73
+ try:
74
+ from wordfreq import zipf_frequency
75
+ except ImportError:
76
+ return False
77
+ return zipf_frequency(lw, "pl") >= PL_INFLECTED_MAX
78
+
79
+
80
+ def is_english(w):
81
+ return known(w) or by_frequency(w)
82
+
83
+
84
+ def split_word(w):
85
+ """English stem + Polish ending, or None"""
86
+ if is_english(w):
87
+ return w, ""
88
+ lw = w.lower()
89
+ if "'" in w or "’" in w: # deadline'u, pendrive'a
90
+ st = w.replace("’", "'").split("'", 1)
91
+ if known(st[0]) or by_frequency(st[0]):
92
+ return st[0], "'" + st[1] if st[1] else ""
93
+ if pl_word(lw) and not any(lw.startswith(x) and len(lw) - len(x) <= 3 for x in LOAN_STEMS):
94
+ return None # wina, legendy, deskę, worki: Polish words whose stem happens to be English
95
+ for k in SUFFIXES: # inflected forms only of listed words (stripping endings of arbitrary words: nowy -> "now" + y)
96
+ if lw.endswith(k) and len(w) - len(k) >= 3 and known(w[:-len(k)]):
97
+ return w[:-len(k)], w[-len(k):]
98
+ return None
99
+
100
+
101
+ def mark_english(text):
102
+ def rep(m):
103
+ w = m.group(0)
104
+ if w.startswith("{"):
105
+ return w
106
+ parts = [p for p in re.split(r"(-)", w)] if "-" in w and not is_english(w) else [w] # Wi-Fi stays whole if known
107
+ if len(parts) > 1:
108
+ return w if split_word(w) is None else "{" + split_word(w)[0] + "}" + split_word(w)[1]
109
+ s = split_word(w)
110
+ return w if s is None else "{" + s[0] + "}" + s[1]
111
+ out = WORD.sub(rep, text)
112
+ return re.sub(r"\}(\s+)\{", r"\1", out) # adjacent English words -> one span: {pull request}
113
+
114
+
115
+ if __name__ == "__main__":
116
+ import argparse, csv
117
+ ap = argparse.ArgumentParser(); ap.add_argument("--eval", type=Path); ap.add_argument("--show", type=int, default=15); a = ap.parse_args()
118
+ rows = list(csv.DictReader(a.eval.open(encoding="utf-8"), delimiter="|"))
119
+ tp = fp = fn = 0; fps, fns = [], []
120
+ for r in rows:
121
+ gold = {s.lower() for s in re.findall(r"\{([^}]*)\}", r["marked"])}
122
+ pred = {s.lower() for s in re.findall(r"\{([^}]*)\}", mark_english(r["text"]))}
123
+ gw = {w for s in gold for w in s.split()}; pw = {w for s in pred for w in s.split()}
124
+ tp += len(gw & pw); fp += len(pw - gw); fn += len(gw - pw)
125
+ fps += [(w, r["text"]) for w in pw - gw]; fns += [(w, r["text"]) for w in gw - pw]
126
+ print(f"words: precision {tp / max(1, tp + fp):.3f}, recall {tp / max(1, tp + fn):.3f} (tp {tp}, fp {fp}, fn {fn})")
127
+ from collections import Counter
128
+ print("most common false positives:", Counter(w for w, _ in fps).most_common(a.show))
129
+ print("most common misses:", Counter(w for w, _ in fns).most_common(a.show))
english/english_words.txt ADDED
@@ -0,0 +1,1549 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # English words and phrases pronounced the English way inside Polish speech
2
+ # + English words of the fav2 training set (2026-10-02); Polish-pronounced ones are in english_detect.READ_AS_POLISH
3
+ ac/dc
4
+ accelerator
5
+ account manager
6
+ accountability
7
+ achievement
8
+ action points
9
+ add-on
10
+ adobe
11
+ aesthetic
12
+ affiliate
13
+ after party
14
+ afterparty
15
+ afterwork
16
+ agile
17
+ airbnb
18
+ airbus
19
+ airdrop
20
+ airplay
21
+ airpods
22
+ airtag
23
+ algorithm
24
+ aliexpress
25
+ alignment
26
+ all inclusive
27
+ all-star
28
+ alternative
29
+ amazing
30
+ amazon
31
+ amazon prime
32
+ analytics
33
+ angular
34
+ anyway
35
+ app
36
+ app store
37
+ apple
38
+ apple music
39
+ apple pay
40
+ apple store
41
+ apple tv
42
+ apple watch
43
+ apps
44
+ art director
45
+ asap
46
+ attachment
47
+ audiobook
48
+ augmented reality
49
+ autoplay
50
+ awesome
51
+ azure
52
+ babe
53
+ baby boomers
54
+ baby shower
55
+ babysitter
56
+ back office
57
+ back-end
58
+ backdoor
59
+ backend
60
+ background
61
+ backlog
62
+ backpack
63
+ backpacker
64
+ backpacking
65
+ backstage
66
+ backup
67
+ bacon
68
+ badge
69
+ bae
70
+ barbecue
71
+ barber
72
+ barbershop
73
+ barbie
74
+ bartender
75
+ baseball
76
+ basic
77
+ basically
78
+ basketball
79
+ batman
80
+ battle royale
81
+ beatbox
82
+ beauty
83
+ beef
84
+ behind the scenes
85
+ benchmark
86
+ benchmarking
87
+ best friend
88
+ best practice
89
+ best practices
90
+ best seller
91
+ bestie
92
+ big brother
93
+ big data
94
+ billboard
95
+ binge watching
96
+ binge-watching
97
+ bitcoin
98
+ black friday
99
+ blame
100
+ blind date
101
+ bling
102
+ blockbuster
103
+ blockchain
104
+ blocker
105
+ blogger
106
+ bluetooth
107
+ boarding
108
+ body positive
109
+ body shaming
110
+ bodybuilder
111
+ bodybuilding
112
+ boeing
113
+ boilerplate
114
+ bolt
115
+ booking
116
+ boomer
117
+ booster
118
+ bootcamp
119
+ boss fight
120
+ bottleneck
121
+ bowl
122
+ bowling
123
+ box office
124
+ boyfriend
125
+ boysband
126
+ brainstorm
127
+ brainstorming
128
+ branch
129
+ brand
130
+ brand ambassador
131
+ brand awareness
132
+ brandbook
133
+ branding
134
+ breakdance
135
+ breakdown
136
+ breakfast
137
+ breaking
138
+ breaking news
139
+ breakpoint
140
+ brexit
141
+ brief
142
+ briefing
143
+ brownie
144
+ brunch
145
+ bubble
146
+ bubble tea
147
+ bucket list
148
+ budget
149
+ bug
150
+ bug bounty
151
+ bug report
152
+ bugfix
153
+ bugs
154
+ build
155
+ bumble
156
+ bundle
157
+ burger
158
+ burger king
159
+ burnout
160
+ burpees
161
+ business
162
+ business angel
163
+ business case
164
+ business intelligence
165
+ business model
166
+ business partner
167
+ business plan
168
+ button
169
+ buzz
170
+ buzzword
171
+ by the way
172
+ bye
173
+ c-level
174
+ cache
175
+ calisthenics
176
+ call
177
+ call to action
178
+ cancel culture
179
+ capcut
180
+ cappuccino
181
+ caption
182
+ car sharing
183
+ cardio
184
+ career path
185
+ carry
186
+ carsharing
187
+ case study
188
+ cash
189
+ cash flow
190
+ cashback
191
+ casual
192
+ casual friday
193
+ catcalling
194
+ catch-up
195
+ catering
196
+ challenge
197
+ champions league
198
+ changelog
199
+ chargeback
200
+ charger
201
+ chat
202
+ chat gpt
203
+ chatbot
204
+ chatgpt
205
+ cheat
206
+ cheat sheet
207
+ check-in
208
+ check-out
209
+ checkbox
210
+ checklist
211
+ checkout
212
+ checkpoint
213
+ cheers
214
+ cheeseburger
215
+ cheesecake
216
+ chill
217
+ chillout
218
+ christmas
219
+ chromebook
220
+ churn
221
+ churn rate
222
+ cider
223
+ city break
224
+ claim
225
+ clean code
226
+ clearance
227
+ clickbait
228
+ clickup
229
+ cliffhanger
230
+ climate change
231
+ clone
232
+ close friends
233
+ closing
234
+ cloud
235
+ cloud computing
236
+ cloudflare
237
+ cluster
238
+ clutch
239
+ co-host
240
+ co-op
241
+ coach
242
+ coachella
243
+ coaching
244
+ code
245
+ code review
246
+ codebase
247
+ coder
248
+ coding
249
+ coffee shop
250
+ cold call
251
+ cold mail
252
+ coldplay
253
+ coliving
254
+ collab
255
+ collabs
256
+ comeback
257
+ comedy
258
+ coming out
259
+ coming-of-age
260
+ commit
261
+ commitment
262
+ community manager
263
+ compiler
264
+ compliance
265
+ component
266
+ computer vision
267
+ concealer
268
+ conference call
269
+ confluence
270
+ congrats
271
+ congratulations
272
+ consent
273
+ contactless
274
+ container
275
+ content
276
+ content creator
277
+ content marketing
278
+ continue
279
+ continuous integration
280
+ converse
281
+ conversion rate
282
+ cookie
283
+ cookies
284
+ cool
285
+ copilot
286
+ copy
287
+ copy paste
288
+ copy-paste
289
+ copyright
290
+ copywriter
291
+ copywriting
292
+ corporate
293
+ cosmopolitan
294
+ cosplay
295
+ counter-strike
296
+ country
297
+ coupon
298
+ cover
299
+ coworking
300
+ cozy
301
+ craft
302
+ creative director
303
+ creator
304
+ credit card
305
+ creepy
306
+ crew
307
+ cringe
308
+ cronjob
309
+ cross-platform
310
+ cross-sell
311
+ crossfit
312
+ crossover
313
+ crowdfunding
314
+ crunch
315
+ crush
316
+ crypto
317
+ cupcake
318
+ curling
319
+ customer experience
320
+ customer service
321
+ customer success
322
+ customer support
323
+ cut-off
324
+ cute
325
+ cutscene
326
+ cyber monday
327
+ cyberbullying
328
+ cyberpunk
329
+ daily
330
+ daily standup
331
+ dark mode
332
+ darling
333
+ darts
334
+ dashboard
335
+ data analyst
336
+ data engineer
337
+ data science
338
+ data scientist
339
+ dataset
340
+ date
341
+ dating
342
+ deadlift
343
+ deadline
344
+ deadlock
345
+ deadpool
346
+ deal
347
+ dealer
348
+ debriefing
349
+ debug
350
+ debugger
351
+ debugging
352
+ deck
353
+ deep dive
354
+ deep learning
355
+ deep work
356
+ deepfake
357
+ deepseek
358
+ deliverable
359
+ delivery
360
+ dell
361
+ dependency
362
+ deploy
363
+ deployment
364
+ design
365
+ design patterns
366
+ designer
367
+ desktop
368
+ dev
369
+ developer
370
+ devops
371
+ devtools
372
+ diff
373
+ digital detox
374
+ digital nomad
375
+ dinner
376
+ dip
377
+ direct message
378
+ director
379
+ discord
380
+ discount
381
+ discovery
382
+ disney
383
+ disneyland
384
+ diss
385
+ diversity
386
+ dj
387
+ docker
388
+ donut
389
+ double click
390
+ downgrade
391
+ downtime
392
+ draft
393
+ drag and drop
394
+ dream job
395
+ dream team
396
+ dress code
397
+ drip
398
+ drive
399
+ drive-in
400
+ drive-thru
401
+ drop
402
+ dropbox
403
+ dropdown
404
+ dropshipping
405
+ dubstep
406
+ duty-free
407
+ déjà vu
408
+ e-book
409
+ e-commerce
410
+ e-learning
411
+ e-mail
412
+ earbuds
413
+ early access
414
+ early adopter
415
+ early bird
416
+ easter egg
417
+ easy
418
+ easyjet
419
+ ebay
420
+ ebook
421
+ eco-friendly
422
+ ecommerce
423
+ edge case
424
+ elasticsearch
425
+ elearning
426
+ elevator pitch
427
+ email
428
+ embedding
429
+ eminem
430
+ emirates
431
+ emmy
432
+ emoji
433
+ emote
434
+ employer branding
435
+ empowerment
436
+ encryption
437
+ end-to-end
438
+ endpoint
439
+ engagement
440
+ enter
441
+ equity
442
+ error
443
+ escalation
444
+ escape room
445
+ ethereum
446
+ etsy
447
+ eurovision
448
+ event
449
+ excel
450
+ exit
451
+ expedia
452
+ explainer
453
+ exploit
454
+ extrovert
455
+ eyeliner
456
+ face id
457
+ facebook
458
+ facebook ads
459
+ facepalm
460
+ facetime
461
+ fact checking
462
+ fact-checking
463
+ factoring
464
+ factory
465
+ fair play
466
+ fake
467
+ fake news
468
+ fallback
469
+ fanboy
470
+ fancy
471
+ fandom
472
+ fanfic
473
+ fangirl
474
+ fanpage
475
+ fantasy
476
+ farming
477
+ fast fashion
478
+ fast food
479
+ feature
480
+ feature flag
481
+ feature request
482
+ features
483
+ featuring
484
+ feed
485
+ feedback
486
+ fig
487
+ filter
488
+ fine tuning
489
+ fine-tuning
490
+ finger food
491
+ finisher
492
+ fintech
493
+ firebase
494
+ firewall
495
+ firmware
496
+ fit
497
+ fitbit
498
+ fitness
499
+ flash sale
500
+ flex
501
+ flexing
502
+ flipchart
503
+ flipping
504
+ flow
505
+ folk
506
+ follow
507
+ follow up
508
+ follow-up
509
+ follower
510
+ followers
511
+ fomo
512
+ food court
513
+ food truck
514
+ foodie
515
+ football
516
+ footer
517
+ for you page
518
+ forbes
519
+ forecast
520
+ fork
521
+ fortnite
522
+ forward
523
+ framework
524
+ free shipping
525
+ free trial
526
+ freelance
527
+ freelancer
528
+ freemium
529
+ freeride
530
+ freestyle
531
+ freeware
532
+ friday
533
+ friend zone
534
+ friends
535
+ friends with benefits
536
+ friendzone
537
+ front office
538
+ front-end
539
+ frontend
540
+ frontman
541
+ frozen
542
+ full stack
543
+ full time
544
+ full-stack
545
+ full-time
546
+ fullstack
547
+ fun
548
+ funnel
549
+ funny
550
+ galaxy
551
+ game
552
+ game changer
553
+ game of thrones
554
+ game over
555
+ game pass
556
+ game show
557
+ gamedev
558
+ gamepad
559
+ gameplay
560
+ gamer
561
+ gamification
562
+ gaming
563
+ gaming pc
564
+ garage
565
+ garmin
566
+ gaslighting
567
+ gate
568
+ geforce
569
+ gemini
570
+ ghosting
571
+ gift card
572
+ girlboss
573
+ girlfriend
574
+ github
575
+ github copilot
576
+ gitlab
577
+ giveaway
578
+ glamping
579
+ global warming
580
+ glow
581
+ glow-up
582
+ gmail
583
+ go-live
584
+ go-to
585
+ go-to-market
586
+ goat
587
+ golang
588
+ good job
589
+ good luck
590
+ google
591
+ google ads
592
+ google analytics
593
+ google cloud
594
+ google docs
595
+ google drive
596
+ google maps
597
+ google meet
598
+ google pay
599
+ google play
600
+ google sheets
601
+ gopro
602
+ gps
603
+ grammy
604
+ grammys
605
+ graphic designer
606
+ graphql
607
+ great job
608
+ green flag
609
+ greenwashing
610
+ grind
611
+ grinding
612
+ grooming
613
+ group chat
614
+ growth
615
+ growth hacking
616
+ growth mindset
617
+ grunge
618
+ guide
619
+ gym
620
+ hackathon
621
+ hacker
622
+ hacking
623
+ halloween
624
+ hands-on
625
+ happy birthday
626
+ happy end
627
+ happy hour
628
+ happy new year
629
+ hard skills
630
+ hardware
631
+ harley
632
+ harley-davidson
633
+ harry potter
634
+ hashtag
635
+ hat trick
636
+ hat-trick
637
+ hate
638
+ hate speech
639
+ hater
640
+ haul
641
+ headbanging
642
+ header
643
+ headhunter
644
+ headless
645
+ headline
646
+ headliner
647
+ headphones
648
+ headquarters
649
+ headset
650
+ headshot
651
+ healer
652
+ healing
653
+ heart
654
+ heatmap
655
+ heavy metal
656
+ hello
657
+ help desk
658
+ helpdesk
659
+ hey
660
+ hi-tech
661
+ high score
662
+ high-tech
663
+ highlighter
664
+ highlights
665
+ hiking
666
+ hilton
667
+ hip hop
668
+ hip-hop
669
+ hiring manager
670
+ hit
671
+ hockey
672
+ home office
673
+ homepod
674
+ homestay
675
+ honey
676
+ hoodie
677
+ hooks
678
+ hosting
679
+ hot dog
680
+ hot-dog
681
+ hotfix
682
+ hotspot
683
+ house
684
+ housekeeping
685
+ housewarming
686
+ hover
687
+ hubspot
688
+ hugging face
689
+ hustle
690
+ hybrid work
691
+ hype
692
+ hypebeast
693
+ hyped
694
+ icloud
695
+ iconic
696
+ imac
697
+ inbound
698
+ inbox
699
+ incel
700
+ inclusion
701
+ incubator
702
+ indeed
703
+ indesign
704
+ indie
705
+ indiegogo
706
+ indoor
707
+ influencer
708
+ influencer marketing
709
+ info
710
+ inheritance
711
+ input
712
+ insight
713
+ insights
714
+ instagram
715
+ interface
716
+ interior design
717
+ internet of things
718
+ internship
719
+ introvert
720
+ invite
721
+ ipad
722
+ iphone
723
+ ipod
724
+ issue
725
+ jailbreak
726
+ jam session
727
+ james bond
728
+ java
729
+ javascript
730
+ jeans
731
+ jeep
732
+ jet lag
733
+ jingle
734
+ jir
735
+ jira
736
+ job
737
+ job interview
738
+ job offer
739
+ jogging
740
+ joker
741
+ journaling
742
+ joystick
743
+ jungle
744
+ k-pop
745
+ key account
746
+ key account manager
747
+ keyboard
748
+ keynote
749
+ kick-off
750
+ kickboxing
751
+ kickoff
752
+ kickstarter
753
+ kids
754
+ kindle
755
+ kitesurfing
756
+ knockout
757
+ know-how
758
+ kubernetes
759
+ landing
760
+ landing page
761
+ large language model
762
+ last minute
763
+ late check-out
764
+ latency
765
+ launch
766
+ layoff
767
+ layoffs
768
+ layout
769
+ lead
770
+ lead generation
771
+ leaderboard
772
+ leadership
773
+ leasing
774
+ legacy
775
+ legacy code
776
+ lemonade
777
+ lessons
778
+ let's go
779
+ level
780
+ level up
781
+ license
782
+ life hack
783
+ lifehack
784
+ lifestyle
785
+ light mode
786
+ like
787
+ line-up
788
+ lineup
789
+ link
790
+ link in bio
791
+ linkedin
792
+ linter
793
+ literally
794
+ live
795
+ live chat
796
+ live coding
797
+ live stream
798
+ livestream
799
+ lo-fi
800
+ load balancer
801
+ lockdown
802
+ lofi
803
+ log out
804
+ logout
805
+ long read
806
+ look
807
+ loot
808
+ lounge
809
+ love bombing
810
+ low-code
811
+ lunch
812
+ lunchbox
813
+ macbook
814
+ macbook air
815
+ macbook pro
816
+ machine learning
817
+ machinekind
818
+ mail
819
+ mailchimp
820
+ mailing
821
+ main
822
+ mainstream
823
+ make-up
824
+ makeover
825
+ maker
826
+ makeup
827
+ making of
828
+ malware
829
+ management
830
+ manager
831
+ mansplaining
832
+ marketing automation
833
+ marketplace
834
+ marvel
835
+ mastercard
836
+ masterchef
837
+ masterclass
838
+ mastering
839
+ match
840
+ mcdonald's
841
+ mcdonalds
842
+ meal prep
843
+ meeting
844
+ meeting room
845
+ meetup
846
+ member
847
+ membership
848
+ meme
849
+ mental health
850
+ mention
851
+ merch
852
+ merchandise
853
+ merge
854
+ merge request
855
+ merry christmas
856
+ messenger
857
+ metaverse
858
+ microblading
859
+ microservices
860
+ microsoft
861
+ microsoft office
862
+ microsoft teams
863
+ mid
864
+ midjourney
865
+ miles
866
+ milestone
867
+ milkshake
868
+ millennials
869
+ mindfulness
870
+ mindset
871
+ minecraft
872
+ minions
873
+ mixing
874
+ mobile app
875
+ mock
876
+ mockup
877
+ monetization
878
+ monthly
879
+ mood
880
+ moodboard
881
+ moshpit
882
+ mousepad
883
+ muffin
884
+ multiplayer
885
+ multitasking
886
+ music video
887
+ must have
888
+ must-have
889
+ must-read
890
+ must-see
891
+ must-watch
892
+ nearshoring
893
+ nerf
894
+ netflix
895
+ networking
896
+ neural network
897
+ news
898
+ newsletter
899
+ newsroom
900
+ next.js
901
+ nice
902
+ nice to have
903
+ nickname
904
+ nightclub
905
+ nightlife
906
+ nike
907
+ no comment
908
+ no problem
909
+ no way
910
+ no-code
911
+ node.js
912
+ noob
913
+ nordic walking
914
+ notebook
915
+ notification
916
+ notifications
917
+ notion
918
+ nuggets
919
+ nvidia
920
+ oasis
921
+ off-road
922
+ off-site
923
+ offboarding
924
+ office
925
+ office manager
926
+ offline
927
+ offshoring
928
+ offside
929
+ ok boomer
930
+ on-call
931
+ on-site
932
+ onboarding
933
+ one-liner
934
+ one-on-one
935
+ onedrive
936
+ online
937
+ onlyfans
938
+ open mic
939
+ open source
940
+ open space
941
+ open world
942
+ open'er
943
+ openai
944
+ opt-in
945
+ opt-out
946
+ oscars
947
+ out of office
948
+ outage
949
+ outbound
950
+ outcome
951
+ outdoor
952
+ outfit
953
+ outlet
954
+ outlook
955
+ output
956
+ outreach
957
+ outsourcing
958
+ overbooking
959
+ overclocking
960
+ overengineering
961
+ overhead
962
+ override
963
+ oversize
964
+ overthinking
965
+ overtime
966
+ overview
967
+ overwatch
968
+ ownership
969
+ pace
970
+ packaging
971
+ pain point
972
+ paintball
973
+ pair programming
974
+ pancake
975
+ pancakes
976
+ part time
977
+ part-time
978
+ partner in crime
979
+ party
980
+ password
981
+ password manager
982
+ past simple
983
+ patch
984
+ patreon
985
+ payload
986
+ paypal
987
+ paywall
988
+ peeling
989
+ pendrive
990
+ pentest
991
+ penthouse
992
+ performance
993
+ performance marketing
994
+ performance review
995
+ perplexity
996
+ personal brand
997
+ personal branding
998
+ personal trainer
999
+ phishing
1000
+ photoshop
1001
+ pinterest
1002
+ pipeline
1003
+ pitch
1004
+ pitch deck
1005
+ pivot
1006
+ pixar
1007
+ pizza hut
1008
+ placeholder
1009
+ plank
1010
+ planner
1011
+ planning
1012
+ plant-based
1013
+ play store
1014
+ play-off
1015
+ playback
1016
+ playground
1017
+ playlist
1018
+ playoff
1019
+ playoffs
1020
+ playstation
1021
+ please
1022
+ plot twist
1023
+ plug-in
1024
+ plugin
1025
+ podcast
1026
+ podcaster
1027
+ pop-up
1028
+ popcorn
1029
+ popup
1030
+ post-it
1031
+ postmortem
1032
+ power bank
1033
+ power bi
1034
+ power button
1035
+ powerbank
1036
+ powerpoint
1037
+ pre-order
1038
+ pre-workout
1039
+ premier league
1040
+ preorder
1041
+ prequel
1042
+ present perfect
1043
+ pricing
1044
+ pride
1045
+ prime video
1046
+ print screen
1047
+ printscreen
1048
+ privacy policy
1049
+ prod
1050
+ producer
1051
+ product designer
1052
+ product manager
1053
+ product owner
1054
+ production
1055
+ project manager
1056
+ promo code
1057
+ prompt
1058
+ prompt engineer
1059
+ prompt engineering
1060
+ proof of concept
1061
+ protein
1062
+ proxy
1063
+ pub
1064
+ pull
1065
+ pull request
1066
+ push
1067
+ push notification
1068
+ python
1069
+ q&a
1070
+ qr
1071
+ quarterly
1072
+ queen
1073
+ quest
1074
+ queue
1075
+ quick win
1076
+ quiz
1077
+ radiohead
1078
+ rafting
1079
+ random
1080
+ ranked
1081
+ ransomware
1082
+ rave
1083
+ razer
1084
+ reach
1085
+ react
1086
+ reaction
1087
+ reactions
1088
+ real estate
1089
+ real-time
1090
+ reality show
1091
+ rebase
1092
+ rebranding
1093
+ recovery
1094
+ recruiter
1095
+ red bull
1096
+ red carpet
1097
+ red flag
1098
+ reddit
1099
+ reebok
1100
+ reel
1101
+ reels
1102
+ refactor
1103
+ refactoring
1104
+ refinement
1105
+ refund
1106
+ release
1107
+ release notes
1108
+ remake
1109
+ remaster
1110
+ reminder
1111
+ remote
1112
+ remote work
1113
+ reply
1114
+ reply all
1115
+ repo
1116
+ reporting
1117
+ repository
1118
+ repost
1119
+ request
1120
+ research
1121
+ resell
1122
+ reseller
1123
+ reset
1124
+ respawn
1125
+ response
1126
+ responsive
1127
+ restart
1128
+ retention
1129
+ retreat
1130
+ retrospective
1131
+ retweet
1132
+ revenue
1133
+ review
1134
+ reviewer
1135
+ ribs
1136
+ rihanna
1137
+ rizz
1138
+ road trip
1139
+ roadie
1140
+ roadmap
1141
+ roadtrip
1142
+ roaming
1143
+ roast
1144
+ roblox
1145
+ rock'n'roll
1146
+ roguelike
1147
+ rollback
1148
+ rollercoaster
1149
+ rollout
1150
+ rolls-royce
1151
+ romance
1152
+ rooftop
1153
+ router
1154
+ routine
1155
+ royalty
1156
+ rugby
1157
+ running
1158
+ runtime
1159
+ rush
1160
+ rust
1161
+ ryanair
1162
+ safe space
1163
+ sales manager
1164
+ salesforce
1165
+ samsung
1166
+ sandbox
1167
+ sandwich
1168
+ scalable
1169
+ scale-up
1170
+ sci-fi
1171
+ science fiction
1172
+ scope creep
1173
+ scraping
1174
+ screen
1175
+ screen time
1176
+ screenshot
1177
+ script
1178
+ scroll
1179
+ scrum
1180
+ scrum master
1181
+ search engine
1182
+ second hand
1183
+ second-hand
1184
+ see you
1185
+ seen
1186
+ self-care
1187
+ self-help
1188
+ self-love
1189
+ self-service
1190
+ selfie
1191
+ selfie stick
1192
+ sequel
1193
+ server
1194
+ serverless
1195
+ service desk
1196
+ session
1197
+ setup
1198
+ shake
1199
+ shareholder
1200
+ sharepoint
1201
+ shazam
1202
+ sheet
1203
+ shein
1204
+ shell
1205
+ shooter
1206
+ shopify
1207
+ shopping
1208
+ shortcut
1209
+ shorts
1210
+ shot
1211
+ shout-out
1212
+ shoutout
1213
+ show
1214
+ showroom
1215
+ showstopper
1216
+ side hustle
1217
+ side project
1218
+ sign in
1219
+ sign up
1220
+ sign-off
1221
+ signal
1222
+ silicon valley
1223
+ simp
1224
+ sitcom
1225
+ situationship
1226
+ six pack
1227
+ sixpack
1228
+ skateboard
1229
+ skateboarding
1230
+ skatepark
1231
+ skater
1232
+ sketch
1233
+ skill
1234
+ skills
1235
+ skillset
1236
+ skin
1237
+ skincare
1238
+ skype
1239
+ skyscanner
1240
+ slack
1241
+ slasher
1242
+ slay
1243
+ slide
1244
+ slider
1245
+ slides
1246
+ small talk
1247
+ smart city
1248
+ smart contract
1249
+ smart home
1250
+ smart tv
1251
+ smart watch
1252
+ smartband
1253
+ smartwatch
1254
+ smoothie
1255
+ snapchat
1256
+ sneakerhead
1257
+ sneakers
1258
+ snippet
1259
+ snooker
1260
+ snowboar
1261
+ snowboard
1262
+ snowboarding
1263
+ social engineering
1264
+ social media manager
1265
+ soft launch
1266
+ soft skills
1267
+ software
1268
+ software developer
1269
+ software engineer
1270
+ software house
1271
+ software update
1272
+ songwriter
1273
+ sorry
1274
+ soul
1275
+ soulmate
1276
+ sound
1277
+ soundbar
1278
+ soundcheck
1279
+ soundtrack
1280
+ spacex
1281
+ spaghetti code
1282
+ spam
1283
+ spawn
1284
+ speaker
1285
+ speech
1286
+ speed dating
1287
+ speedrun
1288
+ speedrunner
1289
+ spiderman
1290
+ spin-off
1291
+ spoiler
1292
+ spoiler alert
1293
+ spongebob
1294
+ sponsored
1295
+ spotify
1296
+ spreadsheet
1297
+ sprint
1298
+ sprint planning
1299
+ spyware
1300
+ squad
1301
+ squash
1302
+ stack
1303
+ stack overflow
1304
+ stack trace
1305
+ staging
1306
+ stakeholder
1307
+ stakeholders
1308
+ stalker
1309
+ stalking
1310
+ stand-up
1311
+ stand-up comedy
1312
+ standup
1313
+ star wars
1314
+ starbucks
1315
+ starlink
1316
+ start-up
1317
+ startup
1318
+ staycation
1319
+ steakhouse
1320
+ steam
1321
+ steampunk
1322
+ sticker
1323
+ stitch
1324
+ stopover
1325
+ storage
1326
+ stories
1327
+ story
1328
+ story points
1329
+ storyboard
1330
+ storytelling
1331
+ streak
1332
+ stream
1333
+ streamer
1334
+ streaming
1335
+ street food
1336
+ streetball
1337
+ streetstyle
1338
+ streetwear
1339
+ stretching
1340
+ stunt
1341
+ stuntman
1342
+ stylist
1343
+ subscribe
1344
+ subscriber
1345
+ subscription
1346
+ subtitles
1347
+ subway
1348
+ subwoofer
1349
+ summary
1350
+ summer
1351
+ summit
1352
+ sunrise
1353
+ sunset
1354
+ super bowl
1355
+ supercharger
1356
+ superfood
1357
+ superhero
1358
+ superman
1359
+ support
1360
+ surfing
1361
+ surround
1362
+ survival
1363
+ sustainability
1364
+ sustainable
1365
+ swag
1366
+ swagger
1367
+ sweet
1368
+ sweetheart
1369
+ swift
1370
+ swipe
1371
+ swipe up
1372
+ sync
1373
+ t-shirt
1374
+ tagline
1375
+ take away
1376
+ takeaway
1377
+ talent acquisition
1378
+ talent show
1379
+ talk
1380
+ talk show
1381
+ target
1382
+ task
1383
+ team
1384
+ team building
1385
+ team lead
1386
+ team leader
1387
+ teambuilding
1388
+ teams
1389
+ teamwork
1390
+ teaser
1391
+ tech
1392
+ tech debt
1393
+ tech lead
1394
+ tech stack
1395
+ technical debt
1396
+ template
1397
+ tensorflow
1398
+ test case
1399
+ thank you
1400
+ thanks
1401
+ thanksgiving
1402
+ theme
1403
+ think
1404
+ think-tank
1405
+ this
1406
+ thread
1407
+ threads
1408
+ thriller
1409
+ thumbnail
1410
+ thumbs up
1411
+ ticket
1412
+ tie-break
1413
+ tiktok
1414
+ tiktoker
1415
+ time management
1416
+ time to market
1417
+ timeline
1418
+ timer
1419
+ tinder
1420
+ to do list
1421
+ to go
1422
+ to-do
1423
+ to-do list
1424
+ toggle
1425
+ token
1426
+ toner
1427
+ toolkit
1428
+ tooltip
1429
+ touch id
1430
+ touchpad
1431
+ touchscreen
1432
+ track
1433
+ tracking
1434
+ trackpad
1435
+ trader
1436
+ trading
1437
+ traffic
1438
+ trailer
1439
+ trainee
1440
+ training
1441
+ trance
1442
+ transformer
1443
+ trekking
1444
+ trello
1445
+ trending
1446
+ trendsetter
1447
+ trial
1448
+ true crime
1449
+ tutorial
1450
+ tweet
1451
+ twerking
1452
+ twitch
1453
+ twitter
1454
+ typescript
1455
+ typing
1456
+ u2
1457
+ uber
1458
+ uber eats
1459
+ unboxing
1460
+ underdog
1461
+ underground
1462
+ unfollow
1463
+ unicorn
1464
+ unit test
1465
+ unit tests
1466
+ unity
1467
+ unplugged
1468
+ unsubscribe
1469
+ update
1470
+ upgrade
1471
+ upsell
1472
+ uptime
1473
+ use case
1474
+ user
1475
+ user experience
1476
+ user interface
1477
+ user story
1478
+ username
1479
+ valorant
1480
+ vans
1481
+ venture capital
1482
+ vibe
1483
+ vibes
1484
+ video call
1485
+ views
1486
+ vintage
1487
+ viral
1488
+ virtual reality
1489
+ vlog
1490
+ vlogger
1491
+ voice message
1492
+ voucher
1493
+ wallet
1494
+ waterfall
1495
+ waze
1496
+ wearable
1497
+ wearables
1498
+ web app
1499
+ web designer
1500
+ web3
1501
+ webcam
1502
+ webhook
1503
+ wednesday
1504
+ weekday
1505
+ weeken
1506
+ weekend
1507
+ weekendowych
1508
+ weekly
1509
+ weird
1510
+ welcome
1511
+ well done
1512
+ well-being
1513
+ wellbeing
1514
+ wellness
1515
+ whatever
1516
+ whatsapp
1517
+ whey
1518
+ whiteboard
1519
+ whitepaper
1520
+ wi-fi
1521
+ widget
1522
+ wifi
1523
+ wimbledon
1524
+ win-win
1525
+ windows
1526
+ windsurfing
1527
+ wireframe
1528
+ wireless
1529
+ wishlist
1530
+ woke
1531
+ woodstock
1532
+ word
1533
+ word of mouth
1534
+ wordpress
1535
+ work from home
1536
+ work-life
1537
+ work-life balance
1538
+ workaround
1539
+ workout
1540
+ workshop
1541
+ wow
1542
+ wrap
1543
+ xbox
1544
+ yes
1545
+ yolo
1546
+ youtube
1547
+ youtube shorts
1548
+ youtuber
1549
+ zero waste
english/polish_cleaners.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Polski cleaner dla Matcha-TTS. scripts/patch_matcha.py dokleja go do matcha/text/cleaners.py.
3
+
4
+ Wymaga: libespeak-ng (apt: libespeak-ng1 + espeak-ng-data; binarka espeak-ng NIE jest potrzebna),
5
+ phonemizer (jest w deps Matcha). Jeśli phonemizer nie znajdzie biblioteki, ustaw
6
+ PHONEMIZER_ESPEAK_LIBRARY=/usr/lib/aarch64-linux-gnu/libespeak-ng.so.1
7
+
8
+ Wyjście: IPA z akcentami – ten sam format co english_cleaners2. Polskie samogłoski nosowe
9
+ (ɔ̃, ɛ̃) używają COMBINING TILDE U+0303, którego nie ma w oryginalnym symbols.py –
10
+ patch_matcha.py dokłada go do _letters_ipa (n_vocab 178 -> 179).
11
+ """
12
+ import re
13
+ from phonemizer.backend import EspeakBackend
14
+
15
+ _pl_backend = EspeakBackend(
16
+ language="pl",
17
+ preserve_punctuation=True,
18
+ with_stress=True,
19
+ words_mismatch="ignore",
20
+ language_switch="remove-flags",
21
+ )
22
+
23
+ _PL_WORD = "0-9a-ząćęłńóśźż"
24
+
25
+
26
+ def _abbr(k: str, v: str):
27
+ """Regex dla skrótu: musi stać na granicy słowa. 'r.'/'w.' tylko po liczbie/liczbie rzymskiej
28
+ (inaczej 'Piotr.' -> 'Piotroku')."""
29
+ if k in ("r.", "w."):
30
+ return re.compile(rf"(?<=[0-9ivx])\s?{re.escape(k)}"), f" {v}"
31
+ tail = "" if k.endswith(".") else rf"(?![{_PL_WORD}])"
32
+ return re.compile(rf"(?<![{_PL_WORD}]){re.escape(k)}{tail}"), v
33
+
34
+
35
+ _PL_ABBREV = [
36
+ _abbr(k, v)
37
+ for k, v in [
38
+ ("np.", "na przykład"),
39
+ ("tzn.", "to znaczy"),
40
+ ("tj.", "to jest"),
41
+ ("itd.", "i tak dalej"),
42
+ ("itp.", "i tym podobne"),
43
+ ("m.in.", "między innymi"),
44
+ ("dr", "doktor"),
45
+ ("prof.", "profesor"),
46
+ ("inż.", "inżynier"),
47
+ ("mgr", "magister"),
48
+ ("ul.", "ulica"),
49
+ ("al.", "aleja"),
50
+ ("r.", "roku"),
51
+ ("w.", "wieku"),
52
+ ("godz.", "godzina"),
53
+ ("min.", "minut"),
54
+ ("św.", "święty"),
55
+ ("nr", "numer"),
56
+ ("tel.", "telefon"),
57
+ ("zł", "złotych"),
58
+ ]
59
+ ]
60
+
61
+
62
+ def _expand_pl_abbreviations(text: str) -> str:
63
+ for rx, rep in _PL_ABBREV:
64
+ text = rx.sub(rep, text)
65
+ return text
66
+
67
+
68
+ def _collapse_whitespace(text: str) -> str:
69
+ return re.sub(r"\s+", " ", text).strip()
70
+
71
+
72
+ def _normalize_punct(text: str) -> str:
73
+ text = re.sub(r"\s*(?:—|–| - )\s*", ", ", text).replace("…", "...")
74
+ text = text.replace("„", "").replace("”", "").replace("“", "").replace('"', "").replace("«", "").replace("»", "")
75
+ return text
76
+
77
+
78
+ def polish_cleaners(text: str) -> str:
79
+ """Tekst PL -> IPA (espeak-ng). Liczby zostaw espeakowi – czyta je poprawnie po polsku
80
+ w mianowniku; jeśli potrzebujesz odmiany, zamień je wcześniej w prepare_dataset."""
81
+ text = text.lower()
82
+ text = _normalize_punct(text)
83
+ text = _expand_pl_abbreviations(text)
84
+ phonemes = _pl_backend.phonemize([text], strip=True, njobs=1)[0]
85
+ return _collapse_whitespace(phonemes)
english/polish_mixed_cleaners.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ # --- tts-pl: Polish text with English words (appended by patch_matcha.py after polish_cleaners) ---------------------
4
+ # English words are marked in braces: "Dzięki za {feedback}, wrzucę to na {Slack}a." The braced part is phonemized by
5
+ # espeak-ng en-us, the rest by the Polish pipeline above; a Polish ending glued to a brace ("{Slack}a") is joined to the
6
+ # English phonemes without a space. All en-us phones are in the symbol table (checked: voxcpm/pilot_phonemes.py).
7
+ _en_backend = EspeakBackend(
8
+ language="en-us",
9
+ preserve_punctuation=True,
10
+ with_stress=True,
11
+ words_mismatch="ignore",
12
+ language_switch="remove-flags",
13
+ )
14
+ _EN_SPAN = re.compile(r"\{([^{}]+)\}")
15
+
16
+
17
+ def _pl_phon(text: str) -> str:
18
+ text = _expand_pl_abbreviations(_normalize_punct(text.lower()))
19
+ return _pl_backend.phonemize([text], strip=True, njobs=1)[0] if text.strip() else ""
20
+
21
+
22
+ _VOICELESS = ("p", "t", "k", "f", "s", "ʃ", "θ", "h", "tʃ", "ˈp", "ˈt", "ˈk", "ˈf", "ˈs", "ˈʃ", "ˈθ", "ˈh", "ˌp", "ˌt", "ˌk", "ˌf", "ˌs", "ˌh")
23
+
24
+
25
+ def _one_letter(w: str, next_ph: str) -> str:
26
+ voiceless = next_ph.startswith(_VOICELESS)
27
+ return {"w": "f" if voiceless else "v", "z": "s" if voiceless else "z", "i": "i", "a": "a", "o": "ɔ", "u": "u"}[w]
28
+
29
+
30
+ def polish_mixed_cleaners(text: str) -> str:
31
+ """Polish IPA with English IPA for {braced} spans. Without braces identical to polish_cleaners."""
32
+ if "{" not in text:
33
+ return polish_cleaners(text)
34
+ out, pos = "", 0
35
+ for m in _EN_SPAN.finditer(text):
36
+ pl = text[pos:m.start()]
37
+ prep = ""
38
+ mm = re.search(r"(?:^|\s)([wzaiouWZAIOU])\s*$", pl) # a one-letter word right before the English span: espeak
39
+ if mm: # would read it alone as a letter name ("w" -> "vɨ")
40
+ prep, pl = mm.group(1).lower(), pl[:mm.start(1)]
41
+ if pl.strip():
42
+ glue = not pl[0].isspace() and out != "" # Polish ending right after the previous brace
43
+ ph = _pl_phon(pl)
44
+ if glue: # the ending is unstressed: part of the English word
45
+ head, _, rest = ph.partition(" ")
46
+ ph = head.replace("ˈ", "").replace("ˌ", "") + (" " + rest if rest else "")
47
+ out += ("" if glue else " ") + ph
48
+ en = _en_backend.phonemize([m.group(1)], strip=True, njobs=1)[0]
49
+ if prep: # "w {weekend}": the preposition, voiced or not by the next sound
50
+ out += " " + _one_letter(prep, en)
51
+ glue = m.start() > 0 and not text[m.start() - 1].isspace() and out != ""
52
+ out += ("" if glue else " ") + en
53
+ pos = m.end()
54
+ tail = text[pos:]
55
+ if tail.strip():
56
+ glue = not tail[0].isspace()
57
+ ph = _pl_phon(tail)
58
+ if glue:
59
+ head, _, rest = ph.partition(" ")
60
+ ph = head.replace("ˈ", "").replace("ˌ", "") + (" " + rest if rest else "")
61
+ out += ("" if glue else " ") + ph
62
+ return _collapse_whitespace(out)
model/matcha_pl_v2.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9c4e8605cf517f932d8f72fc32f4d81854de33c2a7d6fa82ad052fc755b3a024
3
+ size 83542710
onnx/matcha_pl_t2.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e2a2ea8bc43fa60ec731299e10dda57459c7375c4f5d40d6506f0514fec2884a
3
+ size 139965159
onnx/matcha_pl_t4.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6dabac7caaea9d75690d12bb878cd3dc6163484398ef2610d516df413abc8703
3
+ size 140422993
onnx/voices.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"default": "fav2", "targets": [], "presets": {"fav2": {"label": "fav2 (synthetic voice)", "weights": {"0": 1.0}}}, "speakers": {"0": {"name": "fav2", "emb": [-0.171126, 0.322866, -0.493196, -0.251865, -1.496564, -0.773552, 0.672265, -0.925804, -0.569764, -0.062601, 0.368567, -0.555231, -0.010228, 0.525713, 1.064089, 1.084695, -0.108082, -1.248569, 0.401326, -0.809678, 0.146417, 0.637237, 0.170811, -0.746055, 0.30452, -0.758564, -0.460776, -0.647524, -0.687801, 2.077753, -0.159227, -0.075347, 0.608661, 0.566903, -0.023465, -1.022551, -0.390619, -0.467591, 0.456134, 0.381035, -0.043261, -0.79233, -1.292068, -0.338539, 0.090066, -0.007928, 1.320292, -0.026984, -0.945175, -0.495162, -0.239323, 0.335876, -0.208299, 1.380403, -0.118773, -1.187929, 1.033132, 0.574047, 0.126154, 0.615193, -0.638149, -0.652656, 0.079094, 1.707609]}}, "styles": {"0": {"label": "flat-range · slow", "emb": [-0.145681, 0.028514, 0.031073, 0.213126, 0.141315, -0.091171, 0.020456, -0.050942, 0.116065, -0.037322, -0.050199, -0.128892, -0.080357, 0.045101, 0.012145, -0.013334, 0.032367, 0.00523, 0.016566, -0.002529, 0.094458, 0.054667, -7e-06, -0.011532, -0.006527, -0.130739, -0.04346, -0.025447, -0.056555, 0.02478, 0.035768, -0.007505, -0.064534, 0.114622, -0.005323, -0.011425, -0.081168, -0.026979, -0.054348, 0.063037, 0.021073, 0.113498, 0.125257, 0.107236, -0.032194, 0.021723, 0.069703, 0.023842, 0.102836, -0.123746, 0.012705, -0.015574, -0.023926, 0.049007, 0.077019, 0.142015, -0.022084, -0.036438, 0.126887, -0.074276, -0.087569, -0.009835, -0.031884, 0.1038]}, "1": {"label": "flat-range · slow · question", "emb": [-0.065793, 0.16722, -0.040421, 0.10364, 0.149176, -0.021905, -0.0432, -0.050239, -0.040979, -0.090244, -0.097514, -0.184097, -0.077265, 0.04736, -0.055627, -0.118585, 0.066956, -0.061624, 0.048341, 0.052993, 0.177459, 0.01611, -0.109275, -0.070324, 0.041396, 0.006175, 0.020192, -0.063335, 0.00341, -0.05934, -0.201707, 0.057273, 0.006712, 0.016891, 0.020629, -0.063877, -0.011998, -0.184993, -0.020477, 0.005055, -0.082237, 0.120278, -0.023095, 0.012626, 0.12684, 0.096845, -0.126149, 0.069004, -0.104394, 0.008861, 0.031055, -0.069648, 0.03642, 0.04356, 0.024144, 0.107632, 0.092163, 0.005802, 0.17045, -0.057356, -0.10544, 0.03624, -0.143395, 0.086159]}, "2": {"label": "flat-range · normal", "emb": [0.015198, 0.005387, -0.070077, 0.085694, 0.052682, -0.069297, -0.052193, -0.011528, 0.103583, 0.036779, -0.018627, -0.018627, -0.054331, -0.057561, 0.073174, 0.013283, 0.107597, 0.027577, 0.007558, 0.048043, -0.014568, 0.021438, -0.040362, -0.023572, 0.020275, -0.050076, -0.064918, 0.025708, -0.020152, -0.007477, 0.011547, 0.020923, -0.030765, -0.026945, -0.108283, 0.071716, -0.079583, -0.020836, 0.00641, 0.041376, -0.011752, 0.124817, 0.074644, 0.055393, 0.074216, 0.001747, 0.055778, -0.037595, 0.018188, -0.117185, -0.054989, 0.057521, 0.038923, 3.1e-05, -0.018487, 0.037477, 0.0652, 0.003342, 0.0622, 0.02653, 0.015227, -0.062551, 0.058737, -0.038891]}, "3": {"label": "flat-range · normal · question", "emb": [-0.033626, 0.123205, -0.104265, 0.116839, 0.158891, 0.03783, -0.124739, -0.13248, 0.047867, 0.023742, 0.102209, -0.103134, -0.015378, 0.050243, 0.184138, -0.05144, 0.137179, 0.063629, 0.10753, -0.026578, -0.051683, 0.090953, 0.096812, -0.112768, 0.075321, -0.093111, 0.098713, -0.018047, 0.111272, -0.088065, -0.118353, 0.12843, -0.041105, -0.091738, -0.013021, 0.096103, -0.080562, -0.139384, -0.049917, -0.024333, -0.139616, 0.064256, 0.010544, -0.032663, -0.035371, 0.009209, -0.197999, 0.041773, -0.06381, -0.09734, 0.00059, 0.013481, 0.011969, -0.06911, 0.026348, -0.020739, 0.100743, 0.028176, 0.141968, 0.027852, -0.026274, 0.098182, -0.024583, 0.015864]}, "4": {"label": "flat-range · fast", "emb": [0.079858, -0.032991, -0.141646, -0.0183, -0.05767, -0.010497, -0.130122, -0.063902, 0.006765, 0.108658, 0.042958, -0.02097, 0.050789, -0.10057, 0.101453, 0.113868, 0.042049, 0.099299, -0.084551, -0.002367, -0.086793, 0.08406, -0.099978, 0.061491, 0.097875, 0.108743, -0.111331, 0.084997, 0.144157, 0.00984, 0.065044, 0.041029, 0.064102, -0.095855, -0.145943, 0.078539, 0.045341, 0.036196, 0.068478, -0.028343, -0.042336, 0.131945, 0.046076, -0.006211, 0.078042, -0.122365, 0.007158, -0.175239, -0.052579, -0.182534, -0.110177, 0.126633, 0.037948, 0.037947, -0.06254, -0.004245, 0.158694, 0.066889, -0.018682, -0.003524, 0.125085, 0.024064, 0.130969, -0.106359]}, "5": {"label": "flat-range · fast · question", "emb": [0.09611, 0.034653, -0.220507, -0.148164, 0.024787, -0.047649, -0.211915, 0.173699, -0.072696, 0.068309, 0.094034, 0.072822, 0.019759, -0.108546, 0.158991, -0.032414, -0.033625, 0.035397, -0.038269, 0.020347, -0.026651, 0.06203, -0.057607, -0.056806, 0.105391, 0.188259, 0.159449, 0.088129, 0.173849, 0.078067, -0.155068, 0.117547, 0.10826, -0.139548, -0.019679, 0.050196, -0.005208, -0.135763, -0.048872, -0.156271, -0.068358, 0.079436, -0.067806, -0.098738, -0.000494, -0.008177, -0.207378, -0.158861, -0.088763, -0.091702, -0.054759, 0.171019, 0.123302, -0.038804, -0.038359, -0.009134, 0.188344, 0.213565, 0.065066, 0.131621, 0.000913, 0.027884, 0.028019, -0.047102]}, "6": {"label": "mid-range · slow", "emb": [-0.108414, -0.003766, 0.026759, 0.090972, 0.10488, 0.021303, 0.077811, 0.025143, 0.086748, -0.043222, -0.055501, -0.021596, -0.058954, 0.001334, 0.023127, -0.064402, -0.036275, -0.027464, -0.026106, -0.042851, 0.060475, -0.092045, 0.021875, 0.021948, -0.03574, -0.059152, -0.073984, 0.022593, -0.105647, 0.0545, 0.035674, -0.054579, -0.073088, 0.100104, 0.035317, -0.017922, -0.046948, -0.142279, -0.01218, 0.065619, 0.045547, -0.026938, 0.060306, 0.052985, 0.078487, 0.10227, 0.052383, 0.094831, 0.118608, 0.057531, 0.049244, -0.069276, 0.011932, -0.007232, 0.115472, 0.066428, -0.100617, -0.001337, 0.06223, -0.00322, -0.097148, -0.034642, -0.11133, 0.029218]}, "7": {"label": "mid-range · slow · question", "emb": [-0.029557, 0.133307, 0.098692, 0.122858, 0.09645, 0.008557, -0.014066, -0.135018, -0.079446, -0.12148, -0.135168, -0.129205, -0.064973, 0.125791, -0.074336, 0.01901, -0.015607, -0.046001, 0.083561, -0.01328, 0.075397, -0.012248, 0.024806, -0.042582, -0.084804, -0.042625, 0.019341, -0.129714, 0.029283, 0.029565, -0.080985, 0.070864, -0.059116, 0.07597, 0.106906, -0.044583, -0.017669, -0.20186, -0.141748, 0.010677, 0.008098, -0.023605, 0.056758, 0.098303, -0.034178, 0.045052, -0.183866, 0.117161, -0.002713, -0.024853, 0.015352, -0.082478, -0.014168, 0.110169, -0.000971, -0.01839, 0.054924, -0.169824, 0.123016, -0.045664, -0.173564, 0.084706, -0.13797, -0.031571]}, "8": {"label": "mid-range · normal", "emb": [0.047679, -0.033757, 0.012959, -0.020053, -0.017468, -0.00887, 0.010025, 0.062036, 0.099756, 0.013468, -0.017102, -0.037922, 0.03251, 0.001108, 0.008804, 0.02545, -9e-05, -0.001319, -0.010407, 0.004526, -0.03449, -0.04883, 0.001763, 0.010887, -0.014453, 0.03218, -0.055419, 0.059566, -0.003377, 0.022355, 0.007696, -0.022474, 0.013298, 0.010364, -0.023911, 0.041498, -0.037128, 0.003917, 0.013321, -0.010775, -0.001142, -0.059385, 0.010826, 0.003236, 0.048636, 0.028829, 0.040092, 0.028113, 0.009203, -0.027532, 0.003704, 0.009829, 0.002783, -0.042211, 0.032808, 0.036177, -0.001528, 0.017659, -0.00515, 0.016582, 0.046999, -0.007643, 0.016614, -0.050302]}, "9": {"label": "mid-range · normal · question", "emb": [0.100659, -0.035835, -0.122456, -0.055806, -0.030154, 0.026734, -0.065558, -0.071907, -0.035, -0.033529, -0.074552, -0.03608, -0.054054, -0.077936, -0.061722, -0.055407, 0.160748, 0.000847, -0.061431, 0.010338, 0.100741, 0.014006, -0.102683, -0.072087, 0.03347, 0.006653, 0.183114, -0.049406, -0.037271, 0.041016, -0.186704, -0.042957, 0.027818, 0.038135, 0.052061, 0.089554, 0.044856, -0.021578, -0.071574, 0.037154, -0.032053, -0.05052, -0.023911, -0.050673, -0.013418, 0.040641, -0.213389, 0.059986, -0.13572, 0.073084, -0.129966, -0.05335, 0.188839, 0.034079, -0.022861, -0.074348, 0.077725, -0.061973, -0.01645, 0.041444, -0.007721, 0.011829, -0.024506, 0.00019]}, "10": {"label": "mid-range · fast", "emb": [0.148559, -0.117011, -0.108052, -0.079113, -0.151191, -0.009634, -0.05918, 0.006944, 0.0017, 0.115003, 0.033147, 0.08128, 0.118907, -0.075013, -0.014178, 0.08572, -0.014366, 0.092867, -0.012872, -0.028587, -0.077081, 0.010422, -0.063002, 0.000577, -0.009214, 0.135065, -0.056282, 0.013967, 0.067966, -0.058367, 0.023978, 0.070172, 0.075121, -0.092142, -0.06845, 0.120971, 0.014942, 0.059432, 0.032089, -0.000947, -0.023865, -0.014222, 0.013042, -0.099835, -0.027346, -0.049702, 0.015537, -0.066083, -0.075356, -0.094995, -0.060072, 0.054041, 0.036734, -0.039968, -0.078773, -0.020267, -0.01236, 0.055531, -0.081482, 0.057737, 0.08034, -0.001431, 0.14718, -0.100518]}, "11": {"label": "mid-range · fast · question", "emb": [0.073619, 0.043859, -0.05577, -0.034364, -0.257909, 0.070455, -0.16292, -0.010065, -0.044395, 0.102808, -0.050129, 0.0522, 0.193897, -0.029656, 0.007619, 0.052111, 0.04524, 0.049192, 0.113122, 0.129318, -0.029497, 0.10029, -0.2246, 0.008363, 0.124819, 0.078415, 0.031787, -0.101723, 0.063401, -0.14017, -0.119636, 0.044516, 0.090903, -0.005523, -0.089667, 0.139016, 0.156393, 0.024767, -0.054849, -0.176828, -0.139236, -0.009136, -0.24576, -0.182452, -0.160701, -0.003506, -0.06909, -0.035963, -0.067486, -0.004653, 0.015554, 0.119868, 0.013078, -0.071847, -0.064107, -0.047181, 0.090308, 0.078807, 0.023879, 0.118498, 0.09614, 0.184368, -0.05321, -0.100499]}, "12": {"label": "wide-range · slow", "emb": [-0.11099, 0.018829, 0.151204, 0.0139, 0.021509, 0.077328, 0.178788, -0.00928, 0.037616, -0.079435, -0.026652, 0.004519, -0.03194, -0.02984, -0.083479, 0.028554, -0.129474, -0.073987, 0.002037, -0.035017, 0.00193, -0.117057, 0.072726, -0.015901, -0.111475, -0.012635, -0.029585, -0.043885, -0.097188, -0.00683, 0.040953, -0.091716, -0.097066, 0.125877, 0.101466, -0.117703, -0.001483, 0.087936, -0.00806, 0.008189, 0.058145, -0.089602, 0.007832, 0.081087, -0.011696, 0.06454, 0.071723, 0.129059, 0.07864, 0.163052, 0.116826, -0.039481, -0.059053, -0.109745, 0.080791, 0.026902, -0.097094, -0.036005, -0.098446, 0.011695, -0.115028, 0.013473, -0.030081, 0.050539]}, "13": {"label": "wide-range · slow · question", "emb": [-0.049316, 0.079729, 0.134762, -0.017171, 0.016638, 0.03792, 0.077599, -0.047527, -0.058096, -0.125282, -0.065962, 0.054827, -0.042702, 0.080202, -0.128793, 0.047482, -0.015366, -0.128568, 0.174576, -0.064135, 0.028825, -0.057269, 0.013506, -0.084323, -0.018376, -0.006145, 0.135988, -0.051993, 0.045764, -0.068694, -0.096576, 0.060418, -0.033247, 0.118162, 0.214827, -0.079408, 0.013513, -0.143196, -0.043047, -0.070651, 0.008669, -0.048957, -0.056213, 0.003604, -0.062643, 0.060966, -0.091224, 0.131408, -0.051059, 0.116348, 0.082638, -0.183355, 0.106217, 0.073501, 0.069447, 0.046283, 0.073742, -0.094445, -0.096596, 0.057557, -0.018585, 0.11509, -0.091432, 0.025908]}, "14": {"label": "wide-range · normal", "emb": [0.001553, -0.012023, 0.022358, -0.114422, -0.004232, 0.085474, 0.091031, -0.031596, 0.057701, -0.040212, -0.030307, 0.059041, 0.029353, -0.018229, -0.066481, 0.040342, -0.084407, -0.071293, -0.011668, -0.019989, -0.097087, -0.081197, 0.043118, 0.05649, -0.095185, 0.082748, 0.037413, 0.053604, 0.048286, 0.028822, -0.014488, -0.034348, 0.006524, -0.035016, 0.036618, 0.001304, -0.009479, 0.160705, -0.002441, 0.008384, 0.018137, -0.126345, -0.07473, -0.048525, -0.066345, -0.034876, 0.039267, 0.043862, 0.02485, 0.089538, 0.044936, -0.034978, 0.019987, -0.038721, -0.009296, 0.00596, -0.083425, -0.002204, -0.127395, 0.020764, -0.041537, 0.060425, 0.03617, -0.042043]}, "15": {"label": "wide-range · normal · question", "emb": [0.031989, 0.12776, 0.097385, -0.115555, 0.019236, 0.075017, 0.006442, -0.068154, -0.075861, -0.122641, -0.011926, 0.1815, -0.024032, -0.059157, -0.206298, 0.076823, -0.15704, -0.082074, 0.253635, 0.075241, 0.020136, -0.032513, -0.070692, -0.050269, -0.057442, 0.141685, 0.191198, -0.020758, 0.109362, -0.140957, -0.093134, 0.079722, 0.104948, -0.135023, 0.117103, -0.141334, -0.067662, -0.041133, -0.069584, -0.123385, -0.084509, -0.171221, -0.072137, -0.091094, -0.012565, 0.058296, -0.145974, 0.03443, -0.038373, 0.012998, 0.006425, -0.059752, 0.043147, -0.073827, 0.020636, 0.113688, 0.142444, -0.03517, 0.023351, 0.126022, -0.010433, 0.027106, 0.032558, 0.033757]}, "16": {"label": "wide-range · fast", "emb": [0.115599, -0.161136, -0.017431, -0.194831, -0.190049, 0.115864, -0.027475, -0.059261, 0.004603, 0.053946, 0.058454, 0.123359, 0.167072, -0.035785, -0.042583, 0.098873, -0.055196, -0.016422, -0.073254, -0.057121, -0.117421, -0.035423, -0.049022, 0.022217, -0.045531, 0.14901, 0.03188, 0.039933, 0.114307, -0.010411, 0.067121, 0.07167, 0.077926, -0.039093, 0.018199, 0.13719, 0.112801, 0.193481, 0.011642, -0.087589, 0.05298, -0.081547, -0.037497, -0.120967, -0.089402, -0.108299, 0.098022, -0.054007, -0.052677, 0.008059, 0.001495, 0.017505, -0.021015, -0.057143, -0.132628, -0.041625, 0.020005, 0.046707, -0.255037, 0.038068, 0.124554, 0.037912, 0.14988, -0.066634]}, "17": {"label": "wide-range · fast · question", "emb": [0.144282, -0.070793, -0.002914, -0.1106, -0.186188, 0.1517, -0.046887, -0.091894, -0.099903, 0.008947, 0.039248, 0.194223, 0.059878, -0.129902, 0.013289, -0.02141, 0.007187, 0.010225, 0.133719, -0.010978, -0.103538, 0.001154, 0.001617, 0.02783, 0.174246, 0.161041, 0.069097, -0.014994, 0.140037, -0.069386, -0.149788, -0.034438, 0.068539, -0.06458, -0.006801, -0.000357, 0.067643, -0.222343, -0.03566, -0.223449, -0.043558, -0.130799, -0.064022, -0.154887, -0.037838, -0.038297, -0.081953, 0.020593, -0.169838, 0.140732, -0.054224, 0.050515, 0.021453, -0.180905, -0.079634, -0.081443, 0.068684, 0.10073, -0.081147, 0.084175, 0.024963, 0.050901, 0.029197, -0.016361]}}, "formula": "spk_emb = speakers['0'].emb (+ styles[k].emb for a style token; 7 = neutral)", "defaults": {"temperature": 0.8, "length_scale": 0.8, "style": 7}}
samples/README.md ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Held-out test sentences (not in the training set). v2 at the default settings (tempo 0.8, temperature 0.8, 4 ODE steps); teacher = VoxCPM2 with the frozen fav2 voice.
2
+
3
+ | # | text | v2 | VoxCPM2 teacher |
4
+ |---|---|---|---|
5
+ | e01 | Dzień dobry! W czym mogę dziś pomóc? | [v2](samples/e01_v2.wav) | [teacher](samples/e01_teacher.wav) |
6
+ | e02 | Proszę zamknąć okno, robi się zimno. | [v2](samples/e02_v2.wav) | [teacher](samples/e02_teacher.wav) |
7
+ | e03 | Czy mam włączyć światło w kuchni? | [v2](samples/e03_v2.wav) | [teacher](samples/e03_teacher.wav) |
8
+ | e04 | Kiedy przyjedzie kurier z paczką? | [v2](samples/e04_v2.wav) | [teacher](samples/e04_teacher.wav) |
9
+ | e05 | Spotkanie zaczyna się o piętnastej trzydzieści, a potrwa mniej więcej godzinę. | [v2](samples/e05_v2.wav) | [teacher](samples/e05_teacher.wav) |
10
+ | e06 | Po meetingu wyślę ci feedback na maila, a w weekend zrobię update na laptopie. | [v2](samples/e06_v2.wav) | [teacher](samples/e06_teacher.wav) |
11
+ | e07 | Sprawdziłem pogodę: jutro rano będzie dwanaście stopni i lekki deszcz, więc lepiej weź parasol. | [v2](samples/e07_v2.wav) | [teacher](samples/e07_teacher.wav) |
12
+ | e08 | Tak. | [v2](samples/e08_v2.wav) | [teacher](samples/e08_teacher.wav) |
13
+ | e09 | Uwaga, podłoga jest mokra! Proszę iść ostrożnie. | [v2](samples/e09_v2.wav) | [teacher](samples/e09_teacher.wav) |
14
+ | e10 | Zanim zaczniemy gotować, umyjmy ręce. Potem pokroimy warzywa w kostkę i wrzucimy je na rozgrzaną patelnię. Na koniec dodamy odrobinę soli i pieprzu. Gotowe w dwadzieścia minut! | [v2](samples/e10_v2.wav) | [teacher](samples/e10_teacher.wav) |
15
+ | e11 | Wczoraj wieczorem wybrałem się na krótki spacer nad rzekę. Było cicho, tylko kaczki pływały przy brzegu, a niebo powoli robiło się pomarańczowe. Pomyślałem wtedy, że takie chwile są naprawdę bezcenne. A ty, jak lubisz spędzać wieczory? | [v2](samples/e11_v2.wav) | [teacher](samples/e11_teacher.wav) |
16
+ | e12 | Nazywam się HVSR i zostałem zbudowany przez firmę Machinekind, żeby pomagać ludziom w codziennych sprawach. | [v2](samples/e12_v2.wav) | [teacher](samples/e12_teacher.wav) |
samples/e01_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1399e8fae07a4bf43beba64bc9e95cd66e7136f854947a0bbe47e867c221cd0a
3
+ size 103532
samples/e01_v2.wav ADDED
Binary file (88.6 kB). View file
 
samples/e02_teacher.wav ADDED
Binary file (97.2 kB). View file
 
samples/e02_v2.wav ADDED
Binary file (93.7 kB). View file
 
samples/e03_teacher.wav ADDED
Binary file (72.7 kB). View file
 
samples/e03_v2.wav ADDED
Binary file (76.8 kB). View file
 
samples/e04_teacher.wav ADDED
Binary file (70.6 kB). View file
 
samples/e04_v2.wav ADDED
Binary file (72.7 kB). View file
 
samples/e05_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:da49be5db5fffe6b0337d814318930a61b70cf8ef4521d94d5e317c27e44ff5b
3
+ size 188910
samples/e05_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:47ceb30103ffabee549e0d56dc3339b6d819f78ca925d07833a33cf747c6e11b
3
+ size 183852
samples/e06_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:526375bab41ff55a5d22e43056c2a179d270df20d16ad3b372be55ff1b3115a1
3
+ size 191498
samples/e06_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:70eab2acde73c51e6f9ecc2b05da412686c2d7ad770aa38fcc2e804f6c39e465
3
+ size 183852
samples/e07_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3413e8cfcc33dbf71b51ed858ed9d90291217f3410da0527c36c269287f6ad04
3
+ size 246300
samples/e07_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d13152a9fa679f813a1ef62e76305a273dc6f21704937b87b689b49232ea466
3
+ size 236076
samples/e08_teacher.wav ADDED
Binary file (21.7 kB). View file
 
samples/e08_v2.wav ADDED
Binary file (16.4 kB). View file
 
samples/e09_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ae665cf8bdc7f62ec575fb7307d55ce02d38203c70d9933ee90b251a97a14d06
3
+ size 143516
samples/e09_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7818a4793c2820af4f46114203c84ae74260825e1a8fc42eac1dcbe62d2983a5
3
+ size 129068
samples/e10_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4bc1855a6fcb110e983b675394f9d4e99192c6c54f461e4992a32dd0a9b0dcea
3
+ size 467388
samples/e10_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b2e02b8f60c2637fc5ad2f738de938eb2e4d483f28bdae0d9bf3819e835d0617
3
+ size 442924
samples/e11_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c49d533bd0953b808495f0d54992c4851f79e97deccde9ea9f2ba004483a7d43
3
+ size 580284
samples/e11_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:205fe76d82dfcf7c526e20f0246155e2ee7286066aabcc52be9f5be62b17681b
3
+ size 573484
samples/e12_teacher.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:756a23ca8236efae553edd8865d1023b1607cdd3f1b4a84dc5f9d407261ba068
3
+ size 308628
samples/e12_v2.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:068d1ff1ba93579476d93c648a2d7b156be2cda35cd90d6481b7dc6747b0abb7
3
+ size 269868
vocoder/config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "resblock": "1",
3
+ "num_gpus": 0,
4
+ "batch_size": 16,
5
+ "learning_rate": 2e-05,
6
+ "adam_b1": 0.8,
7
+ "adam_b2": 0.99,
8
+ "lr_decay": 0.999,
9
+ "seed": 1234,
10
+ "upsample_rates": [
11
+ 8,
12
+ 8,
13
+ 2,
14
+ 2
15
+ ],
16
+ "upsample_kernel_sizes": [
17
+ 16,
18
+ 16,
19
+ 4,
20
+ 4
21
+ ],
22
+ "upsample_initial_channel": 512,
23
+ "resblock_kernel_sizes": [
24
+ 3,
25
+ 7,
26
+ 11
27
+ ],
28
+ "resblock_dilation_sizes": [
29
+ [
30
+ 1,
31
+ 3,
32
+ 5
33
+ ],
34
+ [
35
+ 1,
36
+ 3,
37
+ 5
38
+ ],
39
+ [
40
+ 1,
41
+ 3,
42
+ 5
43
+ ]
44
+ ],
45
+ "segment_size": 8192,
46
+ "num_mels": 80,
47
+ "num_freq": 1025,
48
+ "n_fft": 1024,
49
+ "hop_size": 256,
50
+ "win_size": 1024,
51
+ "sampling_rate": 22050,
52
+ "fmin": 0,
53
+ "fmax": 8000,
54
+ "fmax_for_loss": null,
55
+ "num_workers": 8,
56
+ "dist_config": {
57
+ "dist_backend": "nccl",
58
+ "dist_url": "tcp://localhost:54321",
59
+ "world_size": 1
60
+ },
61
+ "fine_tuning": true
62
+ }
vocoder/generator_fav2 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dd4abd345bed0a61fd67a457b8ee8c5353b8c43270ad94a58efa8ff41cd1912b
3
+ size 55824872