vecxoz commited on
Commit
1baf376
·
verified ·
1 Parent(s): f091d9e

Add files using upload-large-folder tool

Browse files
Files changed (50) hide show
  1. LICENSE-CODE.txt +21 -0
  2. LICENSE-WEIGHTS.txt +9 -0
  3. README.md +36 -0
  4. SCTK/CHANGELOG +370 -0
  5. SCTK/DISCLAIMER +12 -0
  6. SCTK/Dockerfile +25 -0
  7. SCTK/LICENSE.md +32 -0
  8. SCTK/README.md +146 -0
  9. SCTK/TODO +58 -0
  10. SCTK/makefile +52 -0
  11. SCTK/src/sclite/sgml.h +22 -0
  12. ensemble.py +184 -0
  13. infer.py +268 -0
  14. kenlm_models_order_3/ady.arpa +0 -0
  15. kenlm_models_order_3/aln.arpa +0 -0
  16. kenlm_models_order_3/bas.arpa +0 -0
  17. kenlm_models_order_3/bew.arpa +0 -0
  18. kenlm_models_order_3/bxk.arpa +0 -0
  19. kenlm_models_order_3/cgg.arpa +0 -0
  20. kenlm_models_order_3/el-CY.arpa +0 -0
  21. kenlm_models_order_3/hch.arpa +0 -0
  22. kenlm_models_order_3/kcn.arpa +0 -0
  23. kenlm_models_order_3/koo.arpa +0 -0
  24. kenlm_models_order_3/led.arpa +0 -0
  25. kenlm_models_order_3/lke.arpa +0 -0
  26. kenlm_models_order_3/lth.arpa +0 -0
  27. kenlm_models_order_3/meh.arpa +0 -0
  28. kenlm_models_order_3/mmc.arpa +0 -0
  29. kenlm_models_order_3/pne.arpa +0 -0
  30. kenlm_models_order_3/qxp.arpa +0 -0
  31. kenlm_models_order_3/ruc.arpa +0 -0
  32. kenlm_models_order_3/rwm.arpa +0 -0
  33. kenlm_models_order_3/sco.arpa +0 -0
  34. kenlm_models_order_3/tob.arpa +0 -0
  35. kenlm_models_order_3/top.arpa +0 -0
  36. kenlm_models_order_3/ttj.arpa +0 -0
  37. kenlm_models_order_3/ukv.arpa +0 -0
  38. kenlm_models_order_3/ush.arpa +0 -0
  39. models-01-mms-1b-l1107-tuned-commonvoice-train-data/preprocessor_config.json +9 -0
  40. models-01-mms-1b-l1107-tuned-commonvoice-train-data/tokenizer_config.json +49 -0
  41. models-01-mms-1b-l1107-tuned-commonvoice-train-data/trainer_state.json +482 -0
  42. models-01-mms-1b-l1107-tuned-commonvoice-train-data/vocab.json +1 -0
  43. models-03-mms-1b-all-tuned-commonvoice-all-data/config.json +107 -0
  44. models-03-mms-1b-all-tuned-commonvoice-all-data/preprocessor_config.json +9 -0
  45. models-03-mms-1b-all-tuned-commonvoice-all-data/special_tokens_map.json +6 -0
  46. models-03-mms-1b-all-tuned-commonvoice-all-data/tokenizer_config.json +49 -0
  47. models-03-mms-1b-all-tuned-commonvoice-all-data/trainer_state.json +514 -0
  48. models-03-mms-1b-all-tuned-commonvoice-all-data/vocab.json +1 -0
  49. requirements.txt +21 -0
  50. solution.ipynb +297 -0
LICENSE-CODE.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Igor Ivanov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
LICENSE-WEIGHTS.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ CC-BY-NC-4.0
2
+ https://creativecommons.org/licenses/by-nc/4.0/
3
+
4
+ The model weights are a derivative work of the following models,
5
+ obtained by fine-tuning on the Common Voice datasets.
6
+
7
+ https://huggingface.co/facebook/mms-1b-fl102
8
+ https://huggingface.co/facebook/mms-1b-l1107
9
+ https://huggingface.co/facebook/mms-1b-all
README.md ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-4.0
3
+ tags:
4
+ - automatic-speech-recognition
5
+ - mms
6
+ - pytorch
7
+ metrics:
8
+ - wer
9
+ ---
10
+
11
+ ## Shared Task: Mozilla Common Voice Spontaneous Speech ASR
12
+ https://www.codabench.org/competitions/10820/
13
+ Inference code and weights of the 1st place solution in 3 of 4 subtasks:
14
+ - Multilingual General
15
+ - Best small model
16
+ - Unseen Languages
17
+
18
+ Author: Igor Ivanov (team "vecxoz")
19
+
20
+ This repository contains both fine-tuned model weights and
21
+ the inference code used to obtain the winning scores.
22
+ Code and weights are licensed separately.
23
+ License for code: MIT
24
+ License for weights: CC-BY-NC-4.0
25
+ License for `SCTK` distribution can be found in the corresponding subdirectory.
26
+
27
+ The model weights are a derivative work of the following models,
28
+ obtained by fine-tuning on the Common Voice datasets.
29
+ https://huggingface.co/facebook/mms-1b-fl102
30
+ https://huggingface.co/facebook/mms-1b-l1107
31
+ https://huggingface.co/facebook/mms-1b-all
32
+
33
+ The test dataset is not included according to the Common Voice requirements.
34
+ Empty directory structure of the dataset is retained for clarity.
35
+
36
+ Please see `paper.pdf` and `solution.ipynb` for the details and code entry point.
SCTK/CHANGELOG ADDED
@@ -0,0 +1,370 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ SCTK Version 2.4.XXX - Release SOON - This is a list of changes in the master branch thus far
2
+ [*] Added support sclit support for Ukraninian
3
+ [*] Corrected many compiler warnings for newer OSX and Ubuntu compilers
4
+ [*] sclite and asclite makefiles updated for standard C and C++ compiler flags
5
+ [*] Commit ID 82955db made a fix that is not backward compatable for CTM2CTM scoring.
6
+ see the commit message.
7
+ [*] Documented the optional word scoring and add test cases.
8
+ [*] Documented the Input Dependent GLM Rules in doc/GLMRules.
9
+ [*] Added the Arabic, Mandarin, and English GLMs into doc/trans_rules
10
+ [*] Added a test case for an unsolved asclite bug (commit https://github.com/usnistgov/SCTK/commit/cf4ee3f583980329e7f46cb81dcd0c5685ff0e06)
11
+
12
+ SCTK Version 2.4.12 - Release October 27, 2021
13
+ [*] Added a Docker File
14
+ [*] fixed headers for Xcode
15
+
16
+ SCTK Version 2.4.11 - Release Novembver 11, 2018
17
+ [*] Corrected asclite warning messages. Warnings prevented the code from working on Darwin 18.2.0
18
+
19
+ SCTK Version 2.4.10 - Release October 15, 2014
20
+ [*] Added the case conversion for Babel's UTF-8 of Mongolian and Guarani data. Changes for
21
+ Guarani include handling of two-UTF characters representing G~.
22
+
23
+ SCTK Version 2.4.9 - Release October 15, 2014
24
+ [*] Removed the use of getopt in acomp.pl and def_art.pl
25
+ [*] rfilter typdef reassignment to char to an unsigned char replaced with a new typedef 'Char'
26
+ to support new GCC.
27
+ [*] Added the sclite_tolower utility to handle case conversion via sclite's library.
28
+ [*] Added the case conversion for Babel's UTF-8 of Kazakh, Cebuano, Kurmanji, and Lithuanian
29
+
30
+ SCTK Version 2.4.8 - Release March 29, 2013
31
+ [*] Added the case conversion for Babel's UTF-8 of Vietnamese and Turkisoh.
32
+
33
+ SCTK Version 2.4.1 - Release March 12, 2012
34
+ [*] Fixed compilation issue
35
+
36
+ SCTK Version 2.4.0 - Release November 10, 2009
37
+ [*] Fixed asclite to handle rttm properly when _ are present in the ref
38
+ [/] The transcript filter, csrfilt.sh, now only modifies the transcript during
39
+ the filter process rather than up-casing all ASCII characters.
40
+ [/] The scoring routines that relied on up-cased text were modified to accept
41
+ the change.
42
+ [/] Hubscr uem filtering is applied to asclite and mdeval
43
+ [-] removed unwanted gif images for align2html
44
+
45
+ SCTK Version 2.3.11 - Release April 8, 2009
46
+ [+] rttmValidator can handle RTTM slat and RTTM without SPKR-INFO
47
+
48
+ SCTK Version 2.3.10 - Release March 6, 2009
49
+ [*] Fixed tests
50
+
51
+ SCTK Version 2.3.9 - Release March 5, 2009
52
+ [*] Compile with gcc 4.3.
53
+
54
+ SCTK Version 2.3.8 - Release March 4, 2009
55
+ [*] Fix slat test when gnuplot is not installed.
56
+
57
+ SCTK Version 2.3.7 - Release March 3, 2009
58
+ [*] Revisite slatreport.
59
+
60
+ SCTK Version 2.3.6 - Release February 26, 2009
61
+ [*] Fixed install and makefile.
62
+
63
+ SCTK Version 2.3.5 - Release February 26, 2009
64
+ [*] Fixed slatreport makefile behavior.
65
+
66
+ SCTK Version 2.3.4 - Release February 24, 2009
67
+ [/] Added SLAT report computation and doc updates.
68
+
69
+ SCTK Version 2.3.3 - Release February 20, 2009
70
+ [+] Added SLAT report and handling by asclite.
71
+
72
+ SCTK Version 2.3.2 - Release January 12, 2009
73
+ [/] Changed BZip2 to LZMA.
74
+
75
+ SCTK Version 2.3.1 - Release January 6, 2009
76
+ [/] Changed miniLZO to BZip2.
77
+
78
+ SCTK Version 2.3 - Release September 5, 2008
79
+ [+] Code optimization.
80
+ [+] Added label and category information in asclite SGML for STM files.
81
+
82
+ SCTK Version 2.3-rc2c - Release May 8, 2008
83
+ [+] Check if the character " is not in a RTTM file.
84
+ [/] Changed the sclite compilation flags.
85
+
86
+ SCTK Version 2.3-rc2b - Release May 6, 2008
87
+ [*] Fixed an asclite bug went more than 32768 segment are added to the structure.
88
+ [/] Changed the asclite compilation flags.
89
+
90
+ SCTK Version 2.3-rc2 - Release November 26, 2007
91
+ [*] Fixed the exit code, for a fatal error, it exists with a non 0 value.
92
+ [/] Change the error/Info message when filtering.
93
+ [+] Added information in the documentation for asclite regarding the
94
+ UEM filtering.
95
+
96
+ SCTK Version 2.3-rc1 - Release September 21, 2007
97
+ [*] Fixed asclite when no input given
98
+ [*] Fixed mapsswe segmentation code
99
+ [+] Added UEM inplementation directly to asclite
100
+ [+] -wordalign-cost options for asclite adding some cost variance
101
+ depending in the word syntactic distance
102
+ [+] Added Time base cost model trigger with '-time-base-cost' in asclite
103
+ [+] Generic/Rover full implementation in asclite
104
+ [+] Added cumulative table to HTML reports
105
+ [+] Added man and HTML docs for tools
106
+ [/] Changed the speaker auto-overlap behavior from internal to command-
107
+ line options for asclite
108
+ [/] Inter Segment Gaps by default for every file type in asclite
109
+ [/] Update headers disclaimer and file format
110
+ [+] Added rttmValidator
111
+ [+] Added stmValidator
112
+ [+] Added ctmValidator
113
+
114
+ SCTK Version 2.2.4 - Release May 1, 2007
115
+ [+] Added block size and force compression in hubscr.pl
116
+ [+] Added block size limit to 1GB
117
+ [+] Added block computation less aggressive to allow bigger block size
118
+ [*] Fixed linking issue for RTTM and STM files in cause of empty segment
119
+ [*] Fixed display issue with align2html
120
+
121
+ SCTK Version 2.2.3 - Release April 18, 2007
122
+ [*] Fix the time computation in html report when ISG vs. empty segment
123
+ [/] Fix computation percentage for this table of html display
124
+ [/] Better handling on exceptions to drop segment groups from alignments
125
+ [/] Change some outputs to debug level instead of info level
126
+ [/] Better handling of the memory threshold
127
+ [/] Changed from ucl library to lzo library for compression
128
+ [+] Safer memory deallocation in the LCM
129
+ [+] Minimum command line option to drop the small alignments
130
+
131
+ SCTK Version 2.2.2 - Release March 23, 2007
132
+ [/] Speed up the use of Compression Matrix by not using System Timer
133
+ [/] New implementation of the compressed Levenshtein Matrix to avoid
134
+ overhead creation
135
+ [*] Fix the output report file generation for asclite
136
+
137
+ SCTK Version 2.2.1 - Release March 13, 2007
138
+ [*] Fixed the sequence number in SGML when using RTTM Refs
139
+ [+] Added Difficulty limit
140
+
141
+ SCTK Version 2.2.0 - Release March 12, 2007
142
+ [*] test: fixed some tests
143
+ [*] core: fixed align2html display
144
+ [+] core: added compression to align bigger matrices
145
+ [+] core: added pruning using time
146
+
147
+ SCTK Version 2.1.7 - Release February 22, 2007
148
+ [*] test: fixed some tests
149
+ [*] core: fixed floating point issue
150
+
151
+ SCTK Version 2.1.6 - Release February 21, 2007
152
+ [+] tools: new display for align2html
153
+ [*] test: fixed some tests
154
+ [*] core: fixed sorting issues
155
+
156
+ SCTK Version 2.1.5 - Release February 9, 2007
157
+ [+] core: asclite handles speakers preferences for alignment
158
+ [+] core: asclite handles rttm as references and hypotheses
159
+ [+] core: asclite has a new option '-adaptive-cost' that restricts the
160
+ alignment with the time
161
+ [+] core: asclite has a new option '-spkr-align' that handle the new
162
+ SASTT alignment requirement for speaker mapping
163
+ [+] core: asclite output a new level of log displaying the alignment
164
+ and the group of segments used for the alignment
165
+ [+] core: asclite has a new error output: speaker error
166
+ [+] tools: mergectm2rttm script to merged ctm into rttm file
167
+ [+] tools: md-eval for speaker alignment
168
+ [+] tools: align2html to display graphical alignment in HTML/Javascript
169
+ [*] core: fix bugs that ignore tokens and segments in the alignments
170
+ [*] core: fix the pruning time based algorithm
171
+ [*] core: fix the floating point bug in asclite
172
+ [/] core: asclite options '-time-prune' and '-word-time-align' require
173
+ milliseconds instead of seconds in the commandline
174
+
175
+ SCTK Version 2.1.4 - Release May 19, 2006
176
+ [+] Updated asclite to handle 64-bits
177
+ [+] Updated asclite with caching information (increase speed +5-10%)
178
+
179
+ SCTK Version 2.1.3 - Release April 21, 2006
180
+ [+] Updated toolkit to handle rttm file format
181
+
182
+ SCTK Version 2.1.2 - Release April 4, 2006
183
+ [*] Updated asclite with bugfix and memory usage
184
+
185
+ SCTK Version 2.1.1 - Release December 5, 2005
186
+ [*] Hotfix 64bits and Alpha platforms (Thanks to David Huggins-Daines).
187
+
188
+ SCTK Version 2.1 - Release June 3, 2005
189
+ [*] Fixed csrfilt.sh to respect hyphens in optionally deletable fragments.
190
+
191
+ SCTK Version 2.0 Beta 6 - Release May 2005
192
+ [+] Added asclite
193
+
194
+ SCTK Version 2.0 Beta 5 - Release October 22, 2004
195
+ [+] Added Mandarin hesitations to chfilt.pl and utf_filt.pl
196
+
197
+ SCTK Version 2.0 Beta 4 - Release October 18, 2004
198
+ [/] Modified tanweenFilt to remove all tanween characters.
199
+ [*] Fixed a bug in tanweenFilt and hamzaNorm to also change optionally
200
+ deletable words.
201
+
202
+ SCTK Version 2.0 Beta 3 - Release October 5, 2004
203
+ [/] Fixed the install for rfilter1
204
+ [+] Added an option to chfilt.pl to map channel id's A or B to 1 and 2 respectively.
205
+ [+] Added a new program tanweenFilt.pl
206
+
207
+ SCTK Version 2.0 Beta 1 - Release August 30, 2004
208
+ [/] Restructured release directories. 'src' now includes many programs
209
+ [+] Integrated in all programs in the 'tranfilt' package
210
+ [*] make install now makes move programs to 'bin'
211
+ [+] hamzaNorm is a new program.
212
+ [/] 2004 Arabic transcripts are now handled by hubscr and chfilt.
213
+
214
+ SCTK Version 1.3 - Release July 30, 2004
215
+ [*] Minor bug fixes for core dumps
216
+ [+] Added the ability to pass two tags attached to each word through the
217
+ scorer. The tags are attached to the words by appending ';<string>'
218
+ to the word's text. There can be up to two tags, and they may be empty.
219
+ [+] Added a '#' after NCE values in the .sys reports to indicate the
220
+ abscence of reference lexemes for a speaker.
221
+ [/] Expanded the buffers in the rpg.c suite of routines for report generation.
222
+ [/] Expanded the maximum alternation size to 10000 characters.
223
+ [+] Added a "Lattice" error rate calculation in the .prn reports. It's the
224
+ percent of reference tokens not correct in any systems transcript.
225
+
226
+ SCTK Version 1.2c - Release October 11, 2000
227
+ [/] Improved installation targets in makefile
228
+
229
+ SCTK Version 1.2b - Release October 1, 2000
230
+ [/] Improved testing code to not report errors under Linux
231
+
232
+ SCTK Version 1.2a
233
+ [*] Fixed an installation problem for Linux involving scfp.
234
+
235
+ SCTK Version 1.2
236
+ [+] added the prn report to sc_stats. Prints N-system alignments together.
237
+ [+] Added option alignment by word-weighted-mediated alignments.
238
+ [/] Weight inputs include wwl file (-w) and LM file (-L).
239
+ [+] Added testing scripts and documentation examples.
240
+ [+] Added the .wws output format.
241
+ [/] Update .prf output to include word weights and other information.
242
+ [+] Add SLM toolkit v2 into the sctk package.
243
+ [/] modified config.in, makefile.in and the installation process
244
+ [/] Various internal structures modified to handle word weights.
245
+ [/] Compiles under Linux using gmake.
246
+ [/] Documetation changes, including additional comments concerning the
247
+ waveform id in the STM and CTM file formats.
248
+
249
+ SCTK Version 1.1 - Release November 13, 1997
250
+ [/] Utility versions in this release: sclite V2.1, sc_stats V1.1
251
+ [+] added the Executive and Raw Executive Summaries to sc_stats.
252
+ [+] added the det curve to sc_stats so that combined plots are produced.
253
+ [/] modified mapsswe test to handle arbitrary number of segments
254
+ [*] Correct a bug in mtchprs.c which was free-ing a the test confindence
255
+ array prematurely.
256
+
257
+ SCTK Version 1.0
258
+ [/] Release under new name SCTK
259
+ [/] Modified the label extraction function 'parse_input_comment_line'
260
+ to ignore duplicate LABEL and CATEGORY lines.
261
+ [+] Added a sequence number to each PATH in alignment sequence so
262
+ that the input sequence of alignments can be reconstructed.
263
+ [+] Added the capability to keep track of reference confidence scores
264
+ when aligning ref ctm's against hyp ctm's.
265
+ [*] Corrected the .pre dump of the alignment structure when the case
266
+ sensitive flag is set. The error was introduced by modifications.
267
+ [*] Fixed a problem in TEXT_strcasecmp(). It failed to handle the
268
+ case where str1 was shorter than srt2.
269
+ [*] Fixed a problem in 'align.c/extract_speaker()' a NULL was not
270
+ terminating each newly extracted speaker id.
271
+ [/] Revised the reports lut, sum, snt, spkr,ovr to handle speakers W/o
272
+ any reference tokens, In the sum report, the speakers W/o
273
+ reference tokens are ignored when computing the speaker
274
+ mean, sd, and median.
275
+ [*] fixed a bug in tcslite.sh which output an error when test 5 was
276
+ run and the use of gnudiff was not compiled in to sclite.
277
+ [*] fixed a bug in config.in which was propagated to config.sh. The
278
+ problem was a missing backquote on "uname -s".
279
+ [+] Added error checking to the ctm2ctm alignment module. No checking
280
+ had been performed to make sure the ref and hyp files had the
281
+ same conversations and channels.
282
+ [/] Fixed a problem in 'expand_words_to_chars()' it was not deleting
283
+ hyphens from single character words do to an incorrect conditional.
284
+ [+] Added a new way to score, 'Optionally Deletable'. This required a
285
+ major set of modifications and generalizations.
286
+ [/] Modified the character scoring proceedure so that confidence scores
287
+ are imputed to the sub-characters making up the word.
288
+ [*] Corrected a bug in Compute_ROC:det.c which incorrectly incremented
289
+ pointers.
290
+
291
+ SCLITE Version 1.4a - Release May 29, 1997
292
+ [/] Cleaned the distribution to be ISO-9669 compatable
293
+
294
+ SCLITE Version 1.4 - Release October 18, 1996
295
+ [/] Forced confidence values to flow through the entire data pipeline.
296
+ [+] Added the '-C' option to include 'normalized cross-entropy'
297
+ statistics in all output files.
298
+ [+] Added algo2 for the inferred segmentation option '-S'
299
+ [+] Added "IGNORE_TIME_SEGMENT_IN_SCORING" as an allowable
300
+ transcript for an stm record. See the stm file documentation for
301
+ it's use.
302
+
303
+ SCLITE Version 1.3 - Release April 22, 1996
304
+ [*] Corrected a minor makefile inconsistency. (One file was compiled
305
+ twice).
306
+ [/] Changed Network_dp_align to optionally include NULLS in the output.
307
+ [/] Changed the -m option to now reduce either the reference or
308
+ hypothesis file, or both before alignment takes place.
309
+ [*] fixed an uninitialized variable in alex.c which became apparent
310
+ in the 'dtl' and 'spk' reports.
311
+ [*] Corrected a argument passed to fill_STM_structure() in stm2ctm.c
312
+ which caused a warning on some compilers.
313
+ [+] Added a bug report proceedures.
314
+
315
+ SCLITE Version 1.2a - Release March 15, 1996
316
+ [*] Forgot one minor file in the distrubution, "sclite.c".
317
+
318
+ SCLITE Version 1.2 - Release March 8, 1996
319
+ [*] Corrected a bug in the lur report that was activated if a speaker
320
+ had no reference words, but had errorneously hypothesized words.
321
+ [+] Added the sent, spk, and ovrdtl reports to sclite.
322
+ [+] Added the option to score CTM to CTM files. This is essentially
323
+ the same code used for the first SWB LVCSR evaluation, however, since
324
+ the new network alignment routines were used unifying the alignment
325
+ into a single step, alignments will differ slightly from those
326
+ generated with the old scoring package.
327
+ [+] Added the "-T" option to do time-mediated alignments.
328
+ [-] Removed the size limitations in the report generation software,
329
+ 'rpg.c'. There is still are hard limit on the length of characters
330
+ for each cell of 200.
331
+ [/] Standardize program exit codes to be 0 for successfull execution
332
+ and 1 for failed execution.
333
+ [*] Correct the handling of NULL alternatives in the hypothesis file.
334
+ Scoring reference to hypothesis yields the same error rates as
335
+ scoring hypothesis to reference. The only difference is insertions
336
+ are swapped with deletions.
337
+ [+] The installer now has the option to enable or disable alignments
338
+ via GNU's diff.
339
+ [+] Added informative error messages when label definitions, which are
340
+ used by the 'lur' report, have been improperly specified.
341
+
342
+ SCLITE Version 1.1 - Release September 27, 1995
343
+ [+] New/modified output options:
344
+ * Added options to '-o': 'none' to not make any reports,
345
+ 'sgml' to create an sgml file for alignments, 'lur' for the
346
+ labeled utterance report.
347
+ * '-p'. Pipes output of alignments to other sclite utilities.
348
+ in the sgml format.
349
+ [+] New Input options:
350
+ * '-P' accepts piped sgml format input from other sclite utilities.
351
+ * '-e' identifies the input character encoding.
352
+ [+] New alignment options:
353
+ * '-S' performs an inferred word segmentation algorithm rather
354
+ than using the word segmentation of the reference and hyp files.
355
+ * '-F' aligns fragments to words with matching substrings and scores
356
+ them as correct.
357
+ * Changed the -c option to include the optional flag "ASCIITOO"
358
+ which also splits ascii words when doing a character alignment.
359
+ Also added another flag, "DH", to delete hyphens from the ref and
360
+ hyp transcripts before alingment.
361
+ [*] Fixes and Changes:
362
+ * Modified the '-n' option to handle multiple hyp files.
363
+ * Fixed a bug in 'parse_stm_line' to handle empty texts.
364
+ * Modified the read function for a CTM file so that any length
365
+ file will be properly read in.
366
+ [/] Compiled and tested using the HP-UX and DEC OSF1 native cc
367
+ compilers.
368
+
369
+ SCLITE Version 1.0 - Release July 27, 1995
370
+ [+] Initial Release
SCTK/DISCLAIMER ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This software was developed at the National Institute of Standards and
2
+ Technology by employees of the Federal Government in the course of their
3
+ official duties. Pursuant to title 17 Section 105 of the United States Code
4
+ this software is not subject to copyright protection and is in the public
5
+ domain. SCTK is an experimental system. NIST assumes no responsibility
6
+ whatsoever for its use by other parties, and makes no guarantees, expressed or
7
+ implied, about its quality, reliability, or any other characteristic. We would
8
+ appreciate acknowledgement if the software is used.
9
+
10
+ THIS SOFTWARE IS PROVIDED "AS IS." With regard to this software, NIST MAKES NO
11
+ EXPRESS OR IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING
12
+ MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
SCTK/Dockerfile ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM alpine:3.8
2
+
3
+ LABEL Description="NIST Speech Recognition Scoring Toolkit (SCTK)"
4
+
5
+ # SCTK dependencies
6
+ RUN apk add --update \
7
+ alpine-sdk \
8
+ git \
9
+ perl \
10
+ && rm -rf /var/cache/apk/*
11
+
12
+ WORKDIR /opt
13
+
14
+ # Build and install all SCTK tools
15
+ RUN git clone https://github.com/usnistgov/SCTK \
16
+ && cd SCTK \
17
+ && make config \
18
+ && make all \
19
+ && make install \
20
+ && make clean \
21
+ && cp ./bin/* /usr/local/bin/
22
+
23
+ WORKDIR /var/sctk
24
+
25
+ CMD ["sclite"]
SCTK/LICENSE.md ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Full details can be found at: http://nist.gov/data/license.cfm
2
+
3
+ LICENSING STATEMENT
4
+ -------------------
5
+
6
+ NIST-developed software is provided by NIST as a public service. You may use,
7
+ copy, and distribute copies of the software in any medium, provided that you
8
+ keep intact this entire notice. You may improve, modify, and create derivative
9
+ works of the software or any portion of the software, and you may copy and
10
+ distribute such modifications or works. Modified works should carry a notice
11
+ stating that you changed the software and should note the date and nature of
12
+ any such change. Please explicitly acknowledge the National Institute of
13
+ Standards and Technology as the source of the software.
14
+
15
+ NIST-developed software is expressly provided "AS IS." NIST MAKES NO WARRANTY
16
+ OF ANY KIND, EXPRESS, IMPLIED, IN FACT, OR ARISING BY OPERATION OF LAW,
17
+ INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS
18
+ FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND DATA ACCURACY. NIST NEITHER
19
+ REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE
20
+ UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST DOES
21
+ NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR
22
+ THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY,
23
+ RELIABILITY, OR USEFULNESS OF THE SOFTWARE.
24
+
25
+ You are solely responsible for determining the appropriateness of using and
26
+ distributing the software and you assume all risks associated with its use,
27
+ including but not limited to the risks and costs of program errors, compliance
28
+ with applicable laws, damage to or loss of data, programs or equipment, and the
29
+ unavailability or interruption of operation. This software is not intended to
30
+ be used in any situation where a failure could cause risk of injury or damage
31
+ to property. The software developed by NIST employees is not subject to
32
+ copyright protection within the United States.
SCTK/README.md ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SCTK, the NIST Scoring Toolkit
2
+
3
+ **File:** README.md
4
+
5
+ **Date:** October 28, 2021
6
+
7
+ **SCTK Version:** 2.4.12
8
+
9
+ This directory contains SCTK, the NIST Scoring Toolkit. SCTK contains the
10
+ source code, documentation and example data for the following programs:
11
+ - sclite V2.10 - "Score Lite",
12
+ - sc_stats V1.3 - sclite's Statistical Significance Comparison tool
13
+ - rover V0.1 - Recognition Output Voting Error Reduction
14
+ - asclite V1.11 - Multidimensional alignment replacement for sclite
15
+
16
+ ## SCTK Basic Installation
17
+
18
+ To install compile and install *sctk*, from the main directory type the commands:
19
+
20
+ % make config
21
+ % make all
22
+ % make check
23
+ % make install
24
+ % make doc
25
+
26
+ The `make config` command executes the script `config.sh` in the `src/sclite` directory and initialized the makefiles in the rest of the src directories.
27
+
28
+ You can specify installation directory by changing the `PREFIX` variable in the `src/makefile` file. By default, all executables will be installed in `bin` of this directory. Be sure to add the installation directory to your `PATH` variable in order to access the programs.
29
+
30
+ The `make all` command will compile all toolkit executables and libraries. Compilation of `rfilter1` may fail if your version of `libC` is very new because it now includes the `strcmp*` family of functions. You can use the libC versions, and avoid compilation complaints, by following the instructions in `src/rfilter1/makefile`.
31
+
32
+ The `make check` will perform self tests on the toolkit. Please report any problems to Jon Fiscus at NIST with any bug reports or comments at the email address <jonathan.fiscus@nist.gov>. Please include the version number and any other relevant information such as OS, compiler, etc.
33
+
34
+ The `make install` command will copy the executables to `$PREFIX` (see `make config` above.)
35
+
36
+ UNIX-style manual pages and HTML formatted manuals are provided in the `doc` directory.
37
+
38
+ ### Bundled Software
39
+
40
+ This version of SCTK includes the CMU-Cambridge Statistical Language Modeling Toolkit v2. Included in STCK is the complete source code tree and documentation. The toolkit has been included so that SCLITE can use a language model to compute conditional word weights for word-weighted scoring.
41
+
42
+ ### Optional Software/Notes:
43
+
44
+ **sclite**:
45
+ To use the interactive installation for *sclite*, edit the file `src/sclite/config.sh` at line 36, set the `user_interaction=1` it will ask you during the configuration (`make config`) if you want to use *GNU diff* instead of sclite and CMU-Cambridge SLM for sclite. Those choices are not recommended and not used anymore.
46
+
47
+ *sclite* has the ability to use GNU's `diff` utility as an alternate string alignment method. The installer has the choice whether or not to include this ability in the compiled version.
48
+
49
+ **GNU diff**:
50
+ If the use of GNU's `diff` is desired, you will need GNU's `diff` utility from their `diffutils` distribution (version 2.7). If you cannot locate this distribution, a copy is available at <ftp://jaguar.ncsl.nist.gov/pub/diffutils-2.7.tar>. When you install `diff`, make sure the executable is installed as `gdiff`, `gnudiff` or `diffgnu` (`config.sh` expects it to be called one of these).
51
+
52
+ *Special Note to SGI owners: When installing GNU's `diff` make sure to call it `gnudiff` or `diffgnu`. If you use `gdiff` the executable name may be overshadowed by a pre-existing executable.*
53
+
54
+ **utf\_filt**:
55
+ `utf_filt` is using SGML external software and modules like SGMLS perl module and `nsgmls` program which have been updated and continued: OpenSP (<http://sourceforge.net/project/showfiles.php?group_id=2115&package_id=2869>). Version v1.5.2 of OpenSP have been tested and working with the current
56
+ version of `utf_filt`.
57
+
58
+ *Special Note to Cygwin users:* it has been reported that compilation of `rfilter1` can fail in some case, please read the OPTIONS part of the `rfilter1/makefile` and adapt accordingly before retrying compilation.
59
+
60
+
61
+ **64 bits Compilation**:
62
+ With big alignments, sctk needs to be compiled in 64 bits. By default, the C/C++ software are compiled in 32 bits with the options (`-Os`) but can be compiled in 64 bits. To do so, `-m64` is added to the CFLAGS variable in `src/asclite/core/makefile`, `src/asclite/test/makefile`, `src/rfilter1/makefile` and `src/sclite/makefile`.
63
+
64
+ Example of `CFLAGS` for OSX 10.4+: `-fast -m64 -arch x86_64 -arch ppc64`
65
+
66
+ ## Known to compile on:
67
+
68
+ The distribution was initially written in ANSI C on a SUN Workstation. To date, the code has been successfully compiled and tested on the following platforms:
69
+
70
+ Systems | Version
71
+ ------------------------------------------ |---------------------------
72
+ SUN SunOS 4.1.4 using gcc |
73
+ SUN Solaris SunOS 5.4 using cc |
74
+ SUN Solaris SunOS 5.5 using gcc | 1.0 - 1.2
75
+ SGI IRIX 5.3 using cc |
76
+ SGI IRIX 4.0.3H using gcc |
77
+ HP 735 using gcc |
78
+ HP using "cc" | 1.0 - 1.2
79
+ DEC Alpha running DEC OSF/1 V2.0 "cc -std1" |
80
+ DEC Alpha running DEC OSF/1 V2.0 "gcc" | 1.1
81
+ IBM Powerstation running AIX V3.2 using cc | 1.0
82
+ IBM Powerstation running AIX V3.2 using gcc [*] | 1.0
83
+ Linux Version 2.0.33 | 1.0 - 1.2
84
+ Cygwin | 1.3 - 2.0B2
85
+ Linux Version 2.2.17 | 1.3 - 2.0B2
86
+ Linux Version 2.4.20-20-9 [**] | 1.3 - 2.1.7
87
+ Linux Version 2.6.19.fc5 | 2.2.0 - 2.2.4
88
+ Linux Version 2.6.9-5.EL (gcc 3.4.6-3) | 2.2.0 - 2.2.4
89
+ Darwin Version 7.4.0 | 1.3
90
+ Darwin Version 8.5.0 (gcc v4.0.1 build 5367) | 2.1.2 - 2.3-rc1
91
+ Darwin Version 8.11.0 (gcc v4.0.1 build 5367) | 2.3-rc2 - 2.4.0
92
+ Darwin Version 9.6.0 (gcc v4.0.1 build 5490) | 2.3.6 - 2.4.0
93
+ RedHat Fedora 9 (gcc v4.3.0-8) | 2.3.9 - 2.4.0
94
+ Darwin Version 10.8.0 (gcc version 4.2.1 (Apple Inc. build 5666) | 2.4.2 - 2.4.8
95
+
96
+ [\*] compiled with warning messages, but successful self test
97
+
98
+ [\*\*] compiled and ran, but test6, which uses GNU's diff for alignment fails. The use of DIFF for alignment is rarely used and the failure can be safely ignored.
99
+
100
+ ## Docker
101
+
102
+ A Dockerfile is included to build and use SCTK without compiling the codebase for your particular platform.
103
+
104
+ To build:
105
+
106
+ ```
107
+ docker build -t sctk .
108
+ ```
109
+
110
+ ### Hypothesis Test
111
+ To run `sclite` on a reference file and hypothesis file, you need to map a volume to your host.
112
+
113
+ Linux or a Mac:
114
+ ```
115
+ docker run -it -v $PWD:/var/sctk sctk sclite -i wsj -r ref.txt -h hyp.txt
116
+ ```
117
+ Windows:
118
+ ```
119
+ docker run -it -v /myhostpath:/var/sctk sctk sclite -i wsj -r ref.txt -h hyp.txt
120
+ ```
121
+
122
+ ### sc_stats
123
+ To run more advanced features of the SDK, shell into the container with a volume mapped to your local files:
124
+ ```
125
+ docker run -it -v $PWD:/var/sctk sctk sh
126
+ /var/sctk #
127
+ ```
128
+ Then run sclite piped to sc_stats:
129
+ ```
130
+ sclite -i wsj -r ref.txt -h hyp1.txt -h hyp2.txt -o sgml stdout | sc_stats -p -t mapsswe -u
131
+ sc_stats: 1.3
132
+ Beginning Multi-System comparisons and reports
133
+ Performing the Matched Pair Sentence Segment (Word Error) Test
134
+ Printing Unified Statistical Test Reports
135
+ Output written to 'Ensemble.stats.unified'
136
+
137
+ Successful Completion
138
+ ```
139
+
140
+ ## Contact
141
+
142
+ If you have questions, please address them to Jonathan Fiscus at <jonathan.fiscus@nist.gov>
143
+
144
+ ## License
145
+
146
+ See LICENSE.md for details or <http://www.nist.gov/open/license.cfm>
SCTK/TODO ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ File: TODO
2
+ ----------
3
+
4
+ High Priority:
5
+ [ ] fix utf_filt tests
6
+ [ ] fix mdeval tests
7
+ [x] fix empty inputs
8
+ [-] STM Validators (need tests)
9
+ [-] RTTM Validators (need tests)
10
+ [x] CTM Validators
11
+ [x] cumulative overlap table in HTML reports
12
+ [-] update docs
13
+ [ ] acomp
14
+ [x] align2html
15
+ [x] asclite
16
+ [ ] chfilt
17
+ [ ] csrfilt
18
+ [x] ctmValidator
19
+ [ ] def_art
20
+ [ ] hamzaNorm
21
+ [ ] hubscr
22
+ [ ] md-eval
23
+ [x] mergectm2rttm
24
+ [ ] rfilter1
25
+ [ ] rover
26
+ [ ] rttmSmooth
27
+ [ ] rttmSort
28
+ [ ] rttmValidator
29
+ [ ] sc_stats
30
+ [ ] sclite
31
+ [ ] spkr2sad
32
+ [ ] stm2rttm
33
+ [ ] stmValidator
34
+ [ ] tanweenFilt
35
+ [ ] utf_filt
36
+ [ ] Re-implement MAPPSWE segmentation to take into account overlapping speech
37
+
38
+ Medium Priority:
39
+ [x] use UEMs in asclite
40
+ [x] empty channel (ihm)
41
+ [x] prefilter
42
+ [x] inter segment gaps
43
+ [x] time-based alignments
44
+ [ ] alignment visualization program
45
+ [ ] add SASTT cookbook to docs
46
+ [ ] multi-threads
47
+
48
+ Low Priority:
49
+ [x] additive cost based on word aligment distances
50
+ [ ] rover implementation and experiments
51
+ [ ] Alignment testing
52
+ [ ] align the 4 systems in /slp/raid2/ROVER2/AlignmentWord/data
53
+ [ ] word alignment
54
+ [ ] time mediated alignment
55
+ [ ] generate a similar alignment file to /slp/raid2/ROVER2/AlignmentWord/data/MF.putative.train
56
+ [ ] consult with Jon to verify output
57
+ [ ] Re-activate mfalign.
58
+ [ ] Run voting experiment comparing old alignment to new alignments
SCTK/makefile ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ######### Main Makefile for the sctk #############
2
+
3
+
4
+ #### Creation Date: Aug 7, 1997
5
+ #
6
+ # version: 0.3
7
+ # 2006-02-20 jerome
8
+ # [/] make check, will output the uname
9
+ #
10
+ # version: 0.2
11
+ # 2006-01-11 jerome
12
+ # [/] casper to gaston for CVS
13
+
14
+ MAKE=make
15
+
16
+ .PHONY : install
17
+
18
+ all clean install config:
19
+ (mkdir -p bin)
20
+ (cd src && if test -f makefile ; then $(MAKE) $@ ; fi)
21
+
22
+ .PHONY : doc
23
+
24
+ doc:
25
+ (cd doc && if test -f makefile ; then $(MAKE) all ; fi)
26
+
27
+ distclean:
28
+ (rm -f bin/*)
29
+ (cd src && if test -f makefile ; then $(MAKE) $@ ; fi)
30
+
31
+ dist:
32
+ @ echo "Make the distribution"
33
+ @ echo "sctk-"`grep Version: README | head -1 | perl -pe 's/.*Version:\s+//; s/\s+\$$//; s/\s+/_/g'` > .fname
34
+ @ echo "Building a release version" `cat .fname`
35
+ @ echo "Verifying and up-to-date CVS copy"
36
+ @ cvs -d gaston.ncsl.nist.gov:/home/sware/cvs up
37
+ @ cvs -d gaston.ncsl.nist.gov:/home/sware/cvs co -d `cat .fname` sctk
38
+ @ echo "Building the TAR file"
39
+ @ echo `cat .fname`"-"`date -u +%Y%m%d-%H%M`"Z.tar.bz2" > .distname
40
+ @ find `cat .fname` -name "._*" -delete
41
+ @ tar jcf `cat .distname` --exclude CVS --exclude .svn --exclude TODO `cat .fname`
42
+ @ md5 `cat .distname` > `cat .distname`.md5
43
+ @ (cd `cat .fname` && make config all check install doc)
44
+ @ rm -rf `cat .fname` .fname .distname
45
+
46
+ cvs-tag-current-distribution:
47
+ @ echo "Tagging the current CVS for distribution '"`grep Version: README | head -1 | perl -pe 's/.*Version:\s+/release-/; s/\s+\$$//; s/\s+/_/g; s/\./-/g'`"'"
48
+ @ cvs -d gaston:/home/sware/cvs tag `grep Version: README | head -1 | perl -pe 's/.*Version:\s+/release-/; s/\s+\$$//; s/\s+/_/g; s/\./-/g'`
49
+
50
+ check:
51
+ @ uname -a
52
+ (cd src && if test -f makefile ; then $(MAKE) $@ ; fi)
SCTK/src/sclite/sgml.h ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ #define MAX_TAGS 10
3
+ #define MAX_ATTRIB 30
4
+
5
+ typedef struct sgml_label_struct{
6
+ TEXT *name;
7
+ int attrib_num;
8
+ TEXT *attrib_name[MAX_ATTRIB];
9
+ TEXT *attrib_value[MAX_ATTRIB];
10
+ } SGML_LABEL;
11
+
12
+ typedef struct sgml_tags{
13
+ int num_tags;
14
+ SGML_LABEL tags[MAX_TAGS];
15
+ } SGML;
16
+
17
+ void init_SGML(SGML *sg);
18
+ void dump_SGML_tag(SGML *sg, int n, FILE *fp);
19
+ int add_SGML_tag(SGML *sg, TEXT *str);
20
+ TEXT *delete_SGML_tag(SGML *sg, TEXT *str);
21
+ TEXT *get_SGML_attrib(SGML *sg, int tn, TEXT *sname);
22
+
ensemble.py ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #------------------------------------------------------------------------------
2
+ #------------------------------------------------------------------------------
3
+
4
+ import os
5
+ import sys
6
+ import glob
7
+ import shutil
8
+ import subprocess
9
+ import numpy as np
10
+ import pandas as pd
11
+ from argparse import ArgumentParser
12
+
13
+ parser = ArgumentParser()
14
+ parser.add_argument('--input_dir', default='mdc_asr_shared_task_test_data', type=str, help='Directory with a test dataset')
15
+ parser.add_argument('--output_dir_single', default='submission_single_model', type=str, help='Output directory for a single model submission')
16
+ parser.add_argument('--output_dir_ensemble', default='submission_ensemble', type=str, help='Output directory for an ensemble submission')
17
+ parser.add_argument('--rover_path', default='./SCTK/bin/rover', type=str, help='Path to the ROVER binary')
18
+ args = parser.parse_args()
19
+ for a in [a for a in vars(args) if '__' not in a]: print('%-25s %s' % (a, vars(args)[a]))
20
+
21
+ #------------------------------------------------------------------------------
22
+ #------------------------------------------------------------------------------
23
+
24
+ def parse_rover_ctm(ctm_path):
25
+ """
26
+ Parse CTM ensemble file and convert to submission format
27
+
28
+ Parameters:
29
+ ctm_path : str
30
+ Path to a CTM ensemble file
31
+
32
+ Returns:
33
+ result_df : pd.DataFrame
34
+ DataFrame with final transcription strings
35
+ """
36
+ # Define CTM column names
37
+ # CTM Format: ID channel start duration word confidence
38
+ col_names = ['audio_file', 'channel', 'start', 'duration', 'word', 'conf']
39
+
40
+ # Read the file
41
+ df = pd.read_csv(ctm_path, sep=r'\s+', names=col_names, engine='python')
42
+
43
+ # Sort by file ID and then by start time
44
+ df = df.sort_values(by=['audio_file', 'start'])
45
+
46
+ # Group by audio file and join words
47
+ result_df = df.groupby('audio_file')['word'].apply(lambda x: ' '.join(str(w).strip() for w in x)).reset_index()
48
+ # or with cleaning
49
+ # result_df = df.groupby('audio_file')['word'].apply(lambda x: ' '.join(str(w).strip() for w in x if str(w) not in ['@', '*', '<unk>'])).reset_index()
50
+
51
+ # Rename the column to 'sentence'
52
+ result_df.rename(columns={'word': 'sentence'}, inplace=True)
53
+
54
+ return result_df
55
+
56
+ #------------------------------------------------------------------------------
57
+ # Run ROVER ensembling
58
+ #------------------------------------------------------------------------------
59
+
60
+ os.makedirs(args.output_dir_single, exist_ok=True)
61
+ os.makedirs(args.output_dir_ensemble, exist_ok=True)
62
+
63
+ ctm_files = sorted(glob.glob('output_*_ctm/*/*.ctm'))
64
+ # print(len(ctm_files))
65
+
66
+ for file in ctm_files:
67
+ shutil.copy(file, os.path.join(args.output_dir_ensemble, os.path.basename(file)))
68
+
69
+ tasks = ['multilingual-general', 'unseen-langs']
70
+ langs_general = ['aln', 'bew', 'bxk', 'cgg', 'el-CY', 'hch', 'kcn', 'koo',
71
+ 'led', 'lke', 'lth', 'meh', 'mmc', 'pne', 'ruc', 'rwm',
72
+ 'sco', 'tob', 'top', 'ttj', 'ukv']
73
+ langs_unseen = ['ady', 'bas', 'kbd', 'qxp', 'ush']
74
+
75
+ langs = langs_general + langs_unseen
76
+
77
+ for lang in langs:
78
+
79
+ res = subprocess.run(
80
+ [
81
+ args.rover_path,
82
+ '-h', os.path.join(args.output_dir_ensemble, '%s_1.ctm' % lang), 'ctm',
83
+ '-h', os.path.join(args.output_dir_ensemble, '%s_2.ctm' % lang), 'ctm',
84
+ '-h', os.path.join(args.output_dir_ensemble, '%s_3.ctm' % lang), 'ctm',
85
+ '-h', os.path.join(args.output_dir_ensemble, '%s_4.ctm' % lang), 'ctm',
86
+ '-o', os.path.join(args.output_dir_ensemble, '%s_ens.ctm' % lang),
87
+ '-m', 'avgconf',
88
+ '-s',
89
+ '-T',
90
+ ],
91
+ stdout=subprocess.DEVNULL,
92
+ check=True,
93
+ )
94
+
95
+ #------------------------------------------------------------------------------
96
+ # Parse ensemble CTM files and create TSV files
97
+ #------------------------------------------------------------------------------
98
+
99
+ for input_task in tasks:
100
+
101
+ if input_task == 'multilingual-general':
102
+ langs = langs_general
103
+ else:
104
+ langs = langs_unseen
105
+
106
+ os.makedirs(os.path.join(args.output_dir_ensemble, input_task), exist_ok=True)
107
+
108
+ for lang in langs:
109
+ print('-'*50)
110
+ print('Processing lang:', lang)
111
+
112
+ #---- Load data
113
+
114
+ input_file = os.path.join(args.input_dir, input_task, '%s.tsv' % lang)
115
+ corpus_df = pd.read_csv(input_file, sep='\t')
116
+ corpus_df['sentence'] = 'nanana'
117
+ print('Test size:', len(corpus_df))
118
+
119
+ #---- Parse CTM ensemble file
120
+
121
+ parsed_df = parse_rover_ctm(os.path.join(args.output_dir_ensemble, '%s_ens.ctm' % lang))
122
+
123
+ #---- Save
124
+
125
+ corpus_df = corpus_df.drop('sentence', axis=1)
126
+ corpus_df = pd.merge(corpus_df, parsed_df, on='audio_file', how='left')
127
+
128
+ out_file = os.path.join(args.output_dir_ensemble, input_task, os.path.basename(input_file))
129
+ corpus_df[['audio_file', 'sentence']].to_csv(out_file, index=False, sep='\t')
130
+ print('Saved:', out_file)
131
+
132
+ #------------------------------------------------------------------------------
133
+ # Create final submission from the best single model mms-1b-l1107
134
+ # We copy "multilingual-general" and "unseen-langs" from "output_2_submission", and "small-model" from "output_5_submission"
135
+ #------------------------------------------------------------------------------
136
+
137
+ shutil.copytree('output_2_submission/multilingual-general', os.path.join(args.output_dir_single, 'multilingual-general'))
138
+ shutil.copytree('output_2_submission/unseen-langs', os.path.join(args.output_dir_single, 'unseen-langs'))
139
+
140
+ os.makedirs(os.path.join(args.output_dir_single, 'small-model'), exist_ok=True)
141
+ files = sorted(glob.glob('output_5_submission/*/*.tsv'))
142
+ # print(len(files))
143
+ for file in files:
144
+ shutil.copy(file, os.path.join(args.output_dir_single, 'small-model'))
145
+
146
+ #------------------------------------------------------------------------------
147
+ # Create final submission from an ensemble
148
+ # We already have "multilingual-general" and "unseen-langs" after CTM file parsing
149
+ # Now we copy "small-model" from "output_5_submission"
150
+ #------------------------------------------------------------------------------
151
+
152
+ os.makedirs(os.path.join(args.output_dir_ensemble, 'small-model'), exist_ok=True)
153
+ files = sorted(glob.glob('output_5_submission/*/*.tsv'))
154
+ # print(len(files))
155
+ for file in files:
156
+ shutil.copy(file, os.path.join(args.output_dir_ensemble, 'small-model'))
157
+
158
+ # Transcription for "tob" language by the quantized model is the best, we copy it to "multilingual-general"
159
+ shutil.copy(os.path.join(args.output_dir_ensemble, 'small-model', 'tob.tsv'), os.path.join(args.output_dir_ensemble, 'multilingual-general'))
160
+
161
+ #------------------------------------------------------------------------------
162
+ # Create archives
163
+ #------------------------------------------------------------------------------
164
+
165
+ # Remove all .ctm files because we already created final .tsv files
166
+ files = sorted(glob.glob(os.path.join(args.output_dir_ensemble, '*.ctm')))
167
+ # print(len(files))
168
+ for file in files:
169
+ os.remove(file)
170
+
171
+ # Create archives
172
+ zip_single_model = shutil.make_archive('submission_single_model', 'zip', root_dir=args.output_dir_single)
173
+ zip_ensemble = shutil.make_archive('submission_ensemble', 'zip', root_dir=args.output_dir_ensemble)
174
+
175
+ print('-'*50)
176
+ print('Saved as:', zip_single_model)
177
+ print('Saved as:', zip_ensemble)
178
+
179
+
180
+ #------------------------------------------------------------------------------
181
+ #------------------------------------------------------------------------------
182
+ #------------------------------------------------------------------------------
183
+ #------------------------------------------------------------------------------
184
+
infer.py ADDED
@@ -0,0 +1,268 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #------------------------------------------------------------------------------
2
+ #------------------------------------------------------------------------------
3
+
4
+ import os
5
+ os.environ['TOKENIZERS_PARALLELISM'] = 'true'
6
+ import re
7
+ import sys
8
+ import glob
9
+ import shutil
10
+ import numpy as np
11
+ import pandas as pd
12
+ import torch
13
+ from argparse import ArgumentParser
14
+
15
+ from datasets import Dataset, Audio
16
+ from transformers import Wav2Vec2CTCTokenizer
17
+ from transformers import Wav2Vec2FeatureExtractor
18
+ from transformers import Wav2Vec2Processor
19
+ from transformers import Wav2Vec2ForCTC
20
+ from pyctcdecode import build_ctcdecoder
21
+
22
+ #------------------------------------------------------------------------------
23
+ #------------------------------------------------------------------------------
24
+
25
+ parser = ArgumentParser()
26
+ parser.add_argument('--input_dir', default='mdc_asr_shared_task_test_data', type=str, help='Directory with a test dataset')
27
+ parser.add_argument('--kenlm_model', default='kenlm_models_order_3', type=str, help='Directory with a KenLM models')
28
+ parser.add_argument('--beam_width', default=100, type=int, help='Beam width')
29
+ parser.add_argument('--attn_implementation', default='sdpa', type=str, help='Attention implementation: sdpa or flash_attention_2') #
30
+ parser.add_argument('--use_amp', default=0, type=int, choices=[0, 1], help='Whether to use auto mixed precision')
31
+ parser.add_argument('--device', default='cuda:0', type=str, help='Device')
32
+ args = parser.parse_args()
33
+ for a in [a for a in vars(args) if '__' not in a]: print('%-25s %s' % (a, vars(args)[a]))
34
+
35
+ #------------------------------------------------------------------------------
36
+ # Definitions
37
+ #------------------------------------------------------------------------------
38
+
39
+ def calculate_word_confidence(word_offsets, logits):
40
+ """
41
+ Get word probabilities for ROVER ensemble
42
+ by averaging probabilities of all frames belonging to a word.
43
+
44
+ Parameters:
45
+ word_offsets : dict
46
+ Word offsets
47
+ logits : torch.tensor
48
+ Logits
49
+
50
+ Returns:
51
+ results : list
52
+ Probabilities
53
+ """
54
+ # Apply Softmax to get probabilities
55
+ # logits shape: [1, sequence_length, vocab_size]
56
+ probs = torch.nn.functional.softmax(logits, dim=-1)[0]
57
+
58
+ # Get the max probability at each frame (the probability of the chosen token)
59
+ # shape: [sequence_length]
60
+ frame_confidences, _ = torch.max(probs, dim=-1)
61
+
62
+ results = []
63
+
64
+ for item in word_offsets:
65
+ start = item['start_offset']
66
+ end = item['end_offset']
67
+
68
+ # Extract the confidences for the duration of this word
69
+ # We take the mean of the frame probabilities for this word segment
70
+ if start == end:
71
+ # Handle single-frame words
72
+ word_conf = frame_confidences[start].item()
73
+ else:
74
+ word_conf = frame_confidences[start:end].mean().item()
75
+
76
+ results.append(word_conf)
77
+
78
+ return results
79
+
80
+ #------------------------------------------------------------------------------
81
+ #------------------------------------------------------------------------------
82
+
83
+ models = [
84
+ 'models-01-mms-1b-l1107-tuned-commonvoice-train-data',
85
+ 'models-02-mms-1b-l1107-tuned-commonvoice-all-data',
86
+ 'models-03-mms-1b-all-tuned-commonvoice-all-data',
87
+ 'models-04-mms-1b-fl102-tuned-commonvoice-all-data',
88
+ 'models-05-mms-1b-l1107-tuned-commonvoice-all-data-pruned-quant',
89
+ ]
90
+ tasks = ['multilingual-general', 'unseen-langs']
91
+ langs_general = [
92
+ 'aln', 'bew', 'bxk', 'cgg', 'el-CY', 'hch', 'kcn', 'koo',
93
+ 'led', 'lke', 'lth', 'meh', 'mmc', 'pne', 'ruc', 'rwm',
94
+ 'sco', 'tob', 'top', 'ttj', 'ukv',
95
+ ]
96
+ langs_unseen = ['ady', 'bas', 'kbd', 'qxp', 'ush']
97
+
98
+ device = torch.device(args.device)
99
+
100
+ for model_id, model_name in enumerate(models, start=1):
101
+ print('Processing model:', model_name)
102
+
103
+ for input_task in tasks:
104
+
105
+ if input_task == 'multilingual-general':
106
+ langs = langs_general
107
+ else:
108
+ langs = langs_unseen
109
+
110
+ for lang in langs:
111
+ print('-'*50)
112
+ print('Processing lang:', lang)
113
+
114
+ #---- Load data
115
+
116
+ output_dir_submission = os.path.join('output_%d_submission' % model_id, input_task)
117
+ output_dir_ctm = os.path.join('output_%d_ctm' % model_id, input_task)
118
+ os.makedirs(output_dir_submission, exist_ok=True)
119
+ os.makedirs(output_dir_ctm, exist_ok=True)
120
+
121
+ input_file = os.path.join(args.input_dir, input_task, '%s.tsv' % lang)
122
+ corpus_df = pd.read_csv(input_file, sep='\t')
123
+ corpus_df['sentence'] = 'nanana'
124
+
125
+ # Create full paths to the audio files
126
+ corpus_df['path'] = corpus_df['audio_file'].map(lambda x: os.path.join(args.input_dir, 'audios', x))
127
+
128
+ print('Test size:', len(corpus_df))
129
+
130
+ #---- Create dataset
131
+
132
+ corpus_df['audio'] = corpus_df['path']
133
+
134
+ assert os.path.exists(corpus_df.iloc[0]['path']), 'Cannot find .mp3 file'
135
+
136
+ common_voice_test = Dataset.from_pandas(corpus_df, preserve_index=False)
137
+ common_voice_test = common_voice_test.cast_column('audio', Audio(sampling_rate=16000))
138
+ print(common_voice_test)
139
+
140
+ #---- Load model
141
+
142
+ # For quantized models adapter mechanism does not work, so we do not use "target_lang=lang"
143
+ if model_id == 5:
144
+ model = Wav2Vec2ForCTC.from_pretrained(os.path.join(model_name, lang),
145
+ ignore_mismatched_sizes=True,
146
+ attn_implementation=args.attn_implementation,).to(device)
147
+ else:
148
+ model = Wav2Vec2ForCTC.from_pretrained(model_name,
149
+ target_lang=lang,
150
+ ignore_mismatched_sizes=True,
151
+ attn_implementation=args.attn_implementation,).to(device)
152
+
153
+ model.eval()
154
+ torch.set_grad_enabled(False)
155
+ if model_id == 5:
156
+ processor = Wav2Vec2Processor.from_pretrained(os.path.join(model_name, lang), target_lang=lang)
157
+ else:
158
+ processor = Wav2Vec2Processor.from_pretrained(model_name, target_lang=lang)
159
+ processor.tokenizer.set_target_lang(lang)
160
+
161
+ #---- Create CTC Decoder
162
+
163
+ vocab_dict = processor.tokenizer.get_vocab()
164
+ sorted_vocab_dict = sorted((v, k) for k, v in vocab_dict.items())
165
+ vocab = [k for v, k in sorted_vocab_dict]
166
+
167
+ vocab[0] = ''
168
+
169
+ decoder = build_ctcdecoder(
170
+ labels=vocab,
171
+ kenlm_model_path=os.path.join(args.kenlm_model, '%s.arpa' % lang),
172
+ alpha=0.5,
173
+ beta=1.0,
174
+ )
175
+
176
+ #---- Infer all examples
177
+
178
+ ctm_lines = []
179
+ time_offset = model.config.inputs_to_logits_ratio / 16_000
180
+
181
+ pred_str_list_single = []
182
+ for i in range(len(common_voice_test)):
183
+ input_dict = processor(common_voice_test[i]["audio"]["array"], sampling_rate=16_000, return_tensors="pt", padding=True)
184
+ audio_id = os.path.basename(common_voice_test[i]['path'])
185
+
186
+ with torch.amp.autocast(device_type=device.type, enabled=bool(args.use_amp)):
187
+ # Quantized model expects data if fp16 (half)
188
+ if model_id == 5:
189
+ logits = model(input_dict.input_values.half().to(device)).logits
190
+ else:
191
+ logits = model(input_dict.input_values.to(device)).logits
192
+
193
+ # Greedy decoding
194
+ if lang in ['bxk', 'cgg', 'koo', 'lke', 'ruc', 'rwm', 'tob', 'top', 'qxp']:
195
+ pred_ids = torch.argmax(logits, dim=-1)[0]
196
+ res = processor.decode(pred_ids, output_word_offsets=True)
197
+ pred_str = res.text
198
+ word_offsets = res.word_offsets
199
+ # Beam search decoding
200
+ else:
201
+ # We decode twice just for reproducibility, because "decoder.decode" and "decoder.decode_beams"
202
+ # may give slightly different results (in fact "pred_str" and "pred_str_beam" are very close).
203
+ # We use "decoder.decode" to get predictions from each single model, and we use "decoder.decode_beams"
204
+ # to get word offsets for ensemble.
205
+ pred_str = decoder.decode(logits[0].detach().cpu().numpy(), beam_width=args.beam_width)
206
+ beams = decoder.decode_beams(logits[0].detach().cpu().numpy(), beam_width=args.beam_width)
207
+ pred_str_beam, lm_state, word_offsets_beam, logit_score, lm_score = beams[0]
208
+
209
+ # Convert to format expected by "calculate_word_confidence" function
210
+ word_offsets = []
211
+ for item in word_offsets_beam:
212
+ word = item[0]
213
+ start_offset = item[1][0]
214
+ end_offset = item[1][1]
215
+ d = {'word': word, 'start_offset': start_offset, 'end_offset': end_offset}
216
+ word_offsets.append(d)
217
+
218
+ # Compute probabilities
219
+ confidences = calculate_word_confidence(word_offsets, logits)
220
+
221
+ # Create lines in CTM format for the ROVER ensemble
222
+ for j, item in enumerate(word_offsets):
223
+ word = item['word']
224
+ if lang == 'ady' or lang == 'kbd':
225
+ word = word.lower()
226
+
227
+ start_frame = item['start_offset']
228
+ end_frame = item['end_offset']
229
+
230
+ # Calculate time in seconds
231
+ start_time = start_frame * time_offset
232
+ end_time = end_frame * time_offset
233
+ duration = end_time - start_time
234
+
235
+ # Confidence
236
+ # If real confidences are not available it is possible to use 1.0 for all
237
+ # conf = 1.00
238
+ conf = confidences[j]
239
+
240
+ # Format: id channel start duration word conf
241
+ line = f"{audio_id} 1 {start_time:.4f} {duration:.4f} {word} {conf:.6f}"
242
+ ctm_lines.append(line)
243
+
244
+ pred_str_list_single.append(pred_str)
245
+
246
+ #---- Save predictions from a single model
247
+
248
+ corpus_df['sentence'] = pred_str_list_single
249
+ out_file = os.path.join(output_dir_submission, os.path.basename(input_file))
250
+ if lang == 'ady' or lang == 'kbd':
251
+ corpus_df['sentence'] = corpus_df['sentence'].map(lambda x: x.strip().lower())
252
+ corpus_df[['audio_file', 'sentence']].to_csv(out_file, index=False, sep='\t')
253
+ print('Saved:', out_file)
254
+
255
+ #---- Save CTM file
256
+
257
+ out_file = os.path.join(output_dir_ctm, '%s_%s.ctm' % (lang, model_id))
258
+ with open(out_file, 'wt', encoding='utf-8') as f:
259
+ for line in ctm_lines:
260
+ f.write(line + '\n')
261
+ print('Saved:', out_file)
262
+
263
+
264
+ #------------------------------------------------------------------------------
265
+ #------------------------------------------------------------------------------
266
+ #------------------------------------------------------------------------------
267
+ #------------------------------------------------------------------------------
268
+
kenlm_models_order_3/ady.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/aln.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/bas.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/bew.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/bxk.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/cgg.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/el-CY.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/hch.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/kcn.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/koo.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/led.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/lke.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/lth.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/meh.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/mmc.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/pne.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/qxp.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/ruc.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/rwm.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/sco.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/tob.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/top.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/ttj.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/ukv.arpa ADDED
The diff for this file is too large to render. See raw diff
 
kenlm_models_order_3/ush.arpa ADDED
The diff for this file is too large to render. See raw diff
 
models-01-mms-1b-l1107-tuned-commonvoice-train-data/preprocessor_config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_normalize": true,
3
+ "feature_extractor_type": "Wav2Vec2FeatureExtractor",
4
+ "feature_size": 1,
5
+ "padding_side": "right",
6
+ "padding_value": 0.0,
7
+ "return_attention_mask": true,
8
+ "sampling_rate": 16000
9
+ }
models-01-mms-1b-l1107-tuned-commonvoice-train-data/tokenizer_config.json ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<pad>",
5
+ "lstrip": true,
6
+ "normalized": false,
7
+ "rstrip": true,
8
+ "single_word": false,
9
+ "special": false
10
+ },
11
+ "1": {
12
+ "content": "<s>",
13
+ "lstrip": true,
14
+ "normalized": false,
15
+ "rstrip": true,
16
+ "single_word": false,
17
+ "special": false
18
+ },
19
+ "2": {
20
+ "content": "</s>",
21
+ "lstrip": true,
22
+ "normalized": false,
23
+ "rstrip": true,
24
+ "single_word": false,
25
+ "special": false
26
+ },
27
+ "3": {
28
+ "content": "<unk>",
29
+ "lstrip": true,
30
+ "normalized": false,
31
+ "rstrip": true,
32
+ "single_word": false,
33
+ "special": false
34
+ }
35
+ },
36
+ "bos_token": "<s>",
37
+ "clean_up_tokenization_spaces": false,
38
+ "do_lower_case": false,
39
+ "eos_token": "</s>",
40
+ "extra_special_tokens": {},
41
+ "model_max_length": 1000000000000000019884624838656,
42
+ "pad_token": "<pad>",
43
+ "processor_class": "Wav2Vec2Processor",
44
+ "replace_word_delimiter_char": " ",
45
+ "target_lang": "aln",
46
+ "tokenizer_class": "Wav2Vec2CTCTokenizer",
47
+ "unk_token": "<unk>",
48
+ "word_delimiter_token": "|"
49
+ }
models-01-mms-1b-l1107-tuned-commonvoice-train-data/trainer_state.json ADDED
@@ -0,0 +1,482 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_global_step": null,
3
+ "best_metric": 0.4353967324090347,
4
+ "best_model_checkpoint": null,
5
+ "epoch": 28.0,
6
+ "eval_steps": 500,
7
+ "global_step": 13412,
8
+ "is_hyper_param_search": false,
9
+ "is_local_process_zero": true,
10
+ "is_world_process_zero": true,
11
+ "log_history": [
12
+ {
13
+ "epoch": 1.0,
14
+ "grad_norm": 2.380281448364258,
15
+ "learning_rate": 0.001,
16
+ "loss": 1.7268,
17
+ "step": 479
18
+ },
19
+ {
20
+ "epoch": 1.0,
21
+ "eval_loss": 1.1925925016403198,
22
+ "eval_runtime": 35.5616,
23
+ "eval_samples_per_second": 7.452,
24
+ "eval_steps_per_second": 0.956,
25
+ "eval_wer": 0.5826336002082927,
26
+ "step": 479
27
+ },
28
+ {
29
+ "epoch": 2.0,
30
+ "grad_norm": 2.2042243480682373,
31
+ "learning_rate": 0.001,
32
+ "loss": 1.2196,
33
+ "step": 958
34
+ },
35
+ {
36
+ "epoch": 2.0,
37
+ "eval_loss": 1.0446339845657349,
38
+ "eval_runtime": 34.5325,
39
+ "eval_samples_per_second": 7.674,
40
+ "eval_steps_per_second": 0.985,
41
+ "eval_wer": 0.564863633404934,
42
+ "step": 958
43
+ },
44
+ {
45
+ "epoch": 3.0,
46
+ "grad_norm": 1.166773796081543,
47
+ "learning_rate": 0.001,
48
+ "loss": 1.1397,
49
+ "step": 1437
50
+ },
51
+ {
52
+ "epoch": 3.0,
53
+ "eval_loss": 1.0775465965270996,
54
+ "eval_runtime": 34.6211,
55
+ "eval_samples_per_second": 7.654,
56
+ "eval_steps_per_second": 0.982,
57
+ "eval_wer": 0.5362233938683851,
58
+ "step": 1437
59
+ },
60
+ {
61
+ "epoch": 4.0,
62
+ "grad_norm": 1.5602997541427612,
63
+ "learning_rate": 0.001,
64
+ "loss": 1.092,
65
+ "step": 1916
66
+ },
67
+ {
68
+ "epoch": 4.0,
69
+ "eval_loss": 1.001297116279602,
70
+ "eval_runtime": 34.6053,
71
+ "eval_samples_per_second": 7.658,
72
+ "eval_steps_per_second": 0.983,
73
+ "eval_wer": 0.5200156219488381,
74
+ "step": 1916
75
+ },
76
+ {
77
+ "epoch": 5.0,
78
+ "grad_norm": 1.2552688121795654,
79
+ "learning_rate": 0.001,
80
+ "loss": 1.0503,
81
+ "step": 2395
82
+ },
83
+ {
84
+ "epoch": 5.0,
85
+ "eval_loss": 1.0595026016235352,
86
+ "eval_runtime": 34.5633,
87
+ "eval_samples_per_second": 7.667,
88
+ "eval_steps_per_second": 0.984,
89
+ "eval_wer": 0.5131159278786696,
90
+ "step": 2395
91
+ },
92
+ {
93
+ "epoch": 6.0,
94
+ "grad_norm": 1.0369716882705688,
95
+ "learning_rate": 0.001,
96
+ "loss": 1.0367,
97
+ "step": 2874
98
+ },
99
+ {
100
+ "epoch": 6.0,
101
+ "eval_loss": 0.9826406836509705,
102
+ "eval_runtime": 35.1772,
103
+ "eval_samples_per_second": 7.533,
104
+ "eval_steps_per_second": 0.967,
105
+ "eval_wer": 0.5074529714248519,
106
+ "step": 2874
107
+ },
108
+ {
109
+ "epoch": 7.0,
110
+ "grad_norm": 1.1451303958892822,
111
+ "learning_rate": 0.001,
112
+ "loss": 1.0248,
113
+ "step": 3353
114
+ },
115
+ {
116
+ "epoch": 7.0,
117
+ "eval_loss": 0.9717031717300415,
118
+ "eval_runtime": 34.6404,
119
+ "eval_samples_per_second": 7.65,
120
+ "eval_steps_per_second": 0.982,
121
+ "eval_wer": 0.5002929115407148,
122
+ "step": 3353
123
+ },
124
+ {
125
+ "epoch": 8.0,
126
+ "grad_norm": 3.037198543548584,
127
+ "learning_rate": 0.001,
128
+ "loss": 0.9848,
129
+ "step": 3832
130
+ },
131
+ {
132
+ "epoch": 8.0,
133
+ "eval_loss": 0.993988037109375,
134
+ "eval_runtime": 34.6847,
135
+ "eval_samples_per_second": 7.64,
136
+ "eval_steps_per_second": 0.98,
137
+ "eval_wer": 0.4923517542146716,
138
+ "step": 3832
139
+ },
140
+ {
141
+ "epoch": 9.0,
142
+ "grad_norm": 2.273267984390259,
143
+ "learning_rate": 0.001,
144
+ "loss": 0.9756,
145
+ "step": 4311
146
+ },
147
+ {
148
+ "epoch": 9.0,
149
+ "eval_loss": 1.0613828897476196,
150
+ "eval_runtime": 34.5523,
151
+ "eval_samples_per_second": 7.67,
152
+ "eval_steps_per_second": 0.984,
153
+ "eval_wer": 0.4865586148538697,
154
+ "step": 4311
155
+ },
156
+ {
157
+ "epoch": 10.0,
158
+ "grad_norm": 1.378129005432129,
159
+ "learning_rate": 0.001,
160
+ "loss": 0.9429,
161
+ "step": 4790
162
+ },
163
+ {
164
+ "epoch": 10.0,
165
+ "eval_loss": 0.9572445154190063,
166
+ "eval_runtime": 34.5026,
167
+ "eval_samples_per_second": 7.681,
168
+ "eval_steps_per_second": 0.985,
169
+ "eval_wer": 0.49098483369133633,
170
+ "step": 4790
171
+ },
172
+ {
173
+ "epoch": 11.0,
174
+ "grad_norm": 1.3722251653671265,
175
+ "learning_rate": 0.001,
176
+ "loss": 0.9256,
177
+ "step": 5269
178
+ },
179
+ {
180
+ "epoch": 11.0,
181
+ "eval_loss": 0.9852390289306641,
182
+ "eval_runtime": 34.5318,
183
+ "eval_samples_per_second": 7.674,
184
+ "eval_steps_per_second": 0.985,
185
+ "eval_wer": 0.4836945909002148,
186
+ "step": 5269
187
+ },
188
+ {
189
+ "epoch": 12.0,
190
+ "grad_norm": 7.501033782958984,
191
+ "learning_rate": 0.001,
192
+ "loss": 0.905,
193
+ "step": 5748
194
+ },
195
+ {
196
+ "epoch": 12.0,
197
+ "eval_loss": 0.985062301158905,
198
+ "eval_runtime": 34.5622,
199
+ "eval_samples_per_second": 7.667,
200
+ "eval_steps_per_second": 0.984,
201
+ "eval_wer": 0.48284840200481677,
202
+ "step": 5748
203
+ },
204
+ {
205
+ "epoch": 13.0,
206
+ "grad_norm": 0.7728366851806641,
207
+ "learning_rate": 0.001,
208
+ "loss": 0.9058,
209
+ "step": 6227
210
+ },
211
+ {
212
+ "epoch": 13.0,
213
+ "eval_loss": 1.0208592414855957,
214
+ "eval_runtime": 34.5405,
215
+ "eval_samples_per_second": 7.672,
216
+ "eval_steps_per_second": 0.984,
217
+ "eval_wer": 0.4603918505500228,
218
+ "step": 6227
219
+ },
220
+ {
221
+ "epoch": 14.0,
222
+ "grad_norm": 1.149517297744751,
223
+ "learning_rate": 0.001,
224
+ "loss": 0.879,
225
+ "step": 6706
226
+ },
227
+ {
228
+ "epoch": 14.0,
229
+ "eval_loss": 0.9706206917762756,
230
+ "eval_runtime": 34.5909,
231
+ "eval_samples_per_second": 7.661,
232
+ "eval_steps_per_second": 0.983,
233
+ "eval_wer": 0.47015556857384627,
234
+ "step": 6706
235
+ },
236
+ {
237
+ "epoch": 15.0,
238
+ "grad_norm": 1.2965223789215088,
239
+ "learning_rate": 0.001,
240
+ "loss": 0.8683,
241
+ "step": 7185
242
+ },
243
+ {
244
+ "epoch": 15.0,
245
+ "eval_loss": 0.9290042519569397,
246
+ "eval_runtime": 34.5757,
247
+ "eval_samples_per_second": 7.664,
248
+ "eval_steps_per_second": 0.983,
249
+ "eval_wer": 0.46338605741066197,
250
+ "step": 7185
251
+ },
252
+ {
253
+ "epoch": 16.0,
254
+ "grad_norm": 4.367678165435791,
255
+ "learning_rate": 0.001,
256
+ "loss": 0.8522,
257
+ "step": 7664
258
+ },
259
+ {
260
+ "epoch": 16.0,
261
+ "eval_loss": 0.992803156375885,
262
+ "eval_runtime": 34.6222,
263
+ "eval_samples_per_second": 7.654,
264
+ "eval_steps_per_second": 0.982,
265
+ "eval_wer": 0.46481806938748943,
266
+ "step": 7664
267
+ },
268
+ {
269
+ "epoch": 17.0,
270
+ "grad_norm": 1.7040348052978516,
271
+ "learning_rate": 0.0005,
272
+ "loss": 0.7977,
273
+ "step": 8143
274
+ },
275
+ {
276
+ "epoch": 17.0,
277
+ "eval_loss": 1.0117977857589722,
278
+ "eval_runtime": 34.6417,
279
+ "eval_samples_per_second": 7.65,
280
+ "eval_steps_per_second": 0.981,
281
+ "eval_wer": 0.45023758380524637,
282
+ "step": 8143
283
+ },
284
+ {
285
+ "epoch": 18.0,
286
+ "grad_norm": 1.7818500995635986,
287
+ "learning_rate": 0.0005,
288
+ "loss": 0.7734,
289
+ "step": 8622
290
+ },
291
+ {
292
+ "epoch": 18.0,
293
+ "eval_loss": 0.9333422183990479,
294
+ "eval_runtime": 34.6012,
295
+ "eval_samples_per_second": 7.659,
296
+ "eval_steps_per_second": 0.983,
297
+ "eval_wer": 0.44861029746794245,
298
+ "step": 8622
299
+ },
300
+ {
301
+ "epoch": 19.0,
302
+ "grad_norm": 4.498454570770264,
303
+ "learning_rate": 0.0005,
304
+ "loss": 0.7657,
305
+ "step": 9101
306
+ },
307
+ {
308
+ "epoch": 19.0,
309
+ "eval_loss": 0.9897260665893555,
310
+ "eval_runtime": 34.5634,
311
+ "eval_samples_per_second": 7.667,
312
+ "eval_steps_per_second": 0.984,
313
+ "eval_wer": 0.4529063333984248,
314
+ "step": 9101
315
+ },
316
+ {
317
+ "epoch": 20.0,
318
+ "grad_norm": 0.7240224480628967,
319
+ "learning_rate": 0.0005,
320
+ "loss": 0.7397,
321
+ "step": 9580
322
+ },
323
+ {
324
+ "epoch": 20.0,
325
+ "eval_loss": 0.9879773259162903,
326
+ "eval_runtime": 34.5486,
327
+ "eval_samples_per_second": 7.67,
328
+ "eval_steps_per_second": 0.984,
329
+ "eval_wer": 0.44411898717698367,
330
+ "step": 9580
331
+ },
332
+ {
333
+ "epoch": 21.0,
334
+ "grad_norm": 1.0059142112731934,
335
+ "learning_rate": 0.0005,
336
+ "loss": 0.7279,
337
+ "step": 10059
338
+ },
339
+ {
340
+ "epoch": 21.0,
341
+ "eval_loss": 0.9446625113487244,
342
+ "eval_runtime": 34.6095,
343
+ "eval_samples_per_second": 7.657,
344
+ "eval_steps_per_second": 0.982,
345
+ "eval_wer": 0.4526459675844562,
346
+ "step": 10059
347
+ },
348
+ {
349
+ "epoch": 22.0,
350
+ "grad_norm": 1.9090479612350464,
351
+ "learning_rate": 0.0005,
352
+ "loss": 0.7236,
353
+ "step": 10538
354
+ },
355
+ {
356
+ "epoch": 22.0,
357
+ "eval_loss": 0.9647026062011719,
358
+ "eval_runtime": 35.1604,
359
+ "eval_samples_per_second": 7.537,
360
+ "eval_steps_per_second": 0.967,
361
+ "eval_wer": 0.44861029746794245,
362
+ "step": 10538
363
+ },
364
+ {
365
+ "epoch": 23.0,
366
+ "grad_norm": 1.9559828042984009,
367
+ "learning_rate": 0.0005,
368
+ "loss": 0.7109,
369
+ "step": 11017
370
+ },
371
+ {
372
+ "epoch": 23.0,
373
+ "eval_loss": 0.9153918027877808,
374
+ "eval_runtime": 35.1599,
375
+ "eval_samples_per_second": 7.537,
376
+ "eval_steps_per_second": 0.967,
377
+ "eval_wer": 0.45596563171255616,
378
+ "step": 11017
379
+ },
380
+ {
381
+ "epoch": 24.0,
382
+ "grad_norm": 1.2015676498413086,
383
+ "learning_rate": 0.00025,
384
+ "loss": 0.6784,
385
+ "step": 11496
386
+ },
387
+ {
388
+ "epoch": 24.0,
389
+ "eval_loss": 1.0243852138519287,
390
+ "eval_runtime": 34.5696,
391
+ "eval_samples_per_second": 7.666,
392
+ "eval_steps_per_second": 0.984,
393
+ "eval_wer": 0.44145023758380525,
394
+ "step": 11496
395
+ },
396
+ {
397
+ "epoch": 25.0,
398
+ "grad_norm": 1.7689223289489746,
399
+ "learning_rate": 0.00025,
400
+ "loss": 0.6729,
401
+ "step": 11975
402
+ },
403
+ {
404
+ "epoch": 25.0,
405
+ "eval_loss": 0.99959397315979,
406
+ "eval_runtime": 34.7174,
407
+ "eval_samples_per_second": 7.633,
408
+ "eval_steps_per_second": 0.979,
409
+ "eval_wer": 0.44086441450237585,
410
+ "step": 11975
411
+ },
412
+ {
413
+ "epoch": 26.0,
414
+ "grad_norm": 1.1669533252716064,
415
+ "learning_rate": 0.00025,
416
+ "loss": 0.6601,
417
+ "step": 12454
418
+ },
419
+ {
420
+ "epoch": 26.0,
421
+ "eval_loss": 0.9846060276031494,
422
+ "eval_runtime": 34.5494,
423
+ "eval_samples_per_second": 7.67,
424
+ "eval_steps_per_second": 0.984,
425
+ "eval_wer": 0.43995313415348564,
426
+ "step": 12454
427
+ },
428
+ {
429
+ "epoch": 27.0,
430
+ "grad_norm": 0.5843313336372375,
431
+ "learning_rate": 0.00025,
432
+ "loss": 0.6505,
433
+ "step": 12933
434
+ },
435
+ {
436
+ "epoch": 27.0,
437
+ "eval_loss": 0.9982585310935974,
438
+ "eval_runtime": 34.5478,
439
+ "eval_samples_per_second": 7.671,
440
+ "eval_steps_per_second": 0.984,
441
+ "eval_wer": 0.43721929310681507,
442
+ "step": 12933
443
+ },
444
+ {
445
+ "epoch": 28.0,
446
+ "grad_norm": 1.0468271970748901,
447
+ "learning_rate": 0.00025,
448
+ "loss": 0.651,
449
+ "step": 13412
450
+ },
451
+ {
452
+ "epoch": 28.0,
453
+ "eval_loss": 1.0405844449996948,
454
+ "eval_runtime": 35.1006,
455
+ "eval_samples_per_second": 7.55,
456
+ "eval_steps_per_second": 0.969,
457
+ "eval_wer": 0.4353967324090347,
458
+ "step": 13412
459
+ }
460
+ ],
461
+ "logging_steps": 500,
462
+ "max_steps": 14370,
463
+ "num_input_tokens_seen": 0,
464
+ "num_train_epochs": 30,
465
+ "save_steps": 500,
466
+ "stateful_callbacks": {
467
+ "TrainerControl": {
468
+ "args": {
469
+ "should_epoch_stop": false,
470
+ "should_evaluate": false,
471
+ "should_log": false,
472
+ "should_save": true,
473
+ "should_training_stop": false
474
+ },
475
+ "attributes": {}
476
+ }
477
+ },
478
+ "total_flos": 6.767139886662079e+19,
479
+ "train_batch_size": 2,
480
+ "trial_name": null,
481
+ "trial_params": null
482
+ }
models-01-mms-1b-l1107-tuned-commonvoice-train-data/vocab.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"aln": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, ".": 9, "/": 10, "=": 11, "A": 12, "B": 13, "C": 14, "D": 15, "E": 16, "F": 17, "G": 18, "H": 19, "I": 20, "J": 21, "K": 22, "L": 23, "M": 24, "N": 25, "O": 26, "P": 27, "Q": 28, "R": 29, "S": 30, "T": 31, "U": 32, "V": 33, "W": 34, "X": 35, "Y": 36, "Z": 37, "[": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "{": 65, "}": 66, "\u0395": 67, "\u03a4": 68, "\u03ac": 69, "\u03ad": 70, "\u03ae": 71, "\u03af": 72, "\u03b1": 73, "\u03b5": 74, "\u03b6": 75, "\u03b8": 76, "\u03ba": 77, "\u03bb": 78, "\u03bd": 79, "\u03bf": 80, "\u03c0": 81, "\u03c1": 82, "\u03c2": 83, "\u03c3": 84, "\u03c4": 85, "\u03c5": 86, "\u03c6": 87, "\u03c9": 88}, "bew": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "%": 5, "'": 6, "(": 7, ")": 8, "*": 9, "-": 10, ".": 11, "/": 12, "0": 13, "1": 14, "2": 15, "3": 16, "4": 17, "5": 18, "6": 19, "7": 20, "8": 21, "9": 22, "A": 23, "B": 24, "C": 25, "D": 26, "E": 27, "F": 28, "G": 29, "H": 30, "I": 31, "J": 32, "K": 33, "L": 34, "M": 35, "N": 36, "O": 37, "P": 38, "Q": 39, "R": 40, "S": 41, "T": 42, "U": 43, "V": 44, "W": 45, "Y": 46, "Z": 47, "a": 48, "b": 49, "c": 50, "d": 51, "e": 52, "f": 53, "g": 54, "h": 55, "i": 56, "j": 57, "k": 58, "l": 59, "m": 60, "n": 61, "o": 62, "p": 63, "q": 64, "r": 65, "s": 66, "t": 67, "u": 68, "v": 69, "w": 70, "x": 71, "y": 72, "z": 73, "\u00e8": 74, "\u00e9": 75, "\u00ea": 76}, "bxk": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "#": 5, "&": 6, "'": 7, "(": 8, ")": 9, "-": 10, "0": 11, "1": 12, "2": 13, "5": 14, "6": 15, "9": 16, "@": 17, "A": 18, "B": 19, "C": 20, "D": 21, "E": 22, "F": 23, "G": 24, "H": 25, "I": 26, "K": 27, "L": 28, "M": 29, "N": 30, "O": 31, "P": 32, "S": 33, "T": 34, "U": 35, "V": 36, "W": 37, "Y": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "~": 65}, "cgg": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "&": 5, "'": 6, "-": 7, ".": 8, "0": 9, "1": 10, "2": 11, "8": 12, "9": 13, "A": 14, "B": 15, "C": 16, "D": 17, "E": 18, "F": 19, "G": 20, "H": 21, "I": 22, "K": 23, "L": 24, "M": 25, "N": 26, "O": 27, "P": 28, "R": 29, "S": 30, "T": 31, "U": 32, "V": 33, "W": 34, "Y": 35, "Z": 36, "a": 37, "b": 38, "c": 39, "d": 40, "e": 41, "f": 42, "g": 43, "h": 44, "i": 45, "j": 46, "k": 47, "l": 48, "m": 49, "n": 50, "o": 51, "p": 52, "r": 53, "s": 54, "t": 55, "u": 56, "v": 57, "w": 58, "x": 59, "y": 60, "z": 61}, "el-CY": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "&": 5, "'": 6, "(": 7, ")": 8, "-": 9, ".": 10, "0": 11, "1": 12, "2": 13, "3": 14, "4": 15, "5": 16, "7": 17, "9": 18, "A": 19, "C": 20, "D": 21, "E": 22, "H": 23, "I": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "R": 30, "S": 31, "T": 32, "V": 33, "W": 34, "a": 35, "b": 36, "c": 37, "d": 38, "e": 39, "f": 40, "g": 41, "h": 42, "i": 43, "k": 44, "l": 45, "m": 46, "n": 47, "o": 48, "p": 49, "r": 50, "s": 51, "t": 52, "u": 53, "v": 54, "w": 55, "x": 56, "y": 57, "\u00ab": 58, "\u00bb": 59, "\u017e": 60, "\u0301": 61, "\u0306": 62, "\u030c": 63, "\u0340": 64, "\u0358": 65, "\u0384": 66, "\u0385": 67, "\u0386": 68, "\u0388": 69, "\u0389": 70, "\u038c": 71, "\u038e": 72, "\u038f": 73, "\u0390": 74, "\u0391": 75, "\u0392": 76, "\u0393": 77, "\u0394": 78, "\u0395": 79, "\u0396": 80, "\u0397": 81, "\u0398": 82, "\u0399": 83, "\u039a": 84, "\u039b": 85, "\u039c": 86, "\u039d": 87, "\u039e": 88, "\u039f": 89, "\u03a0": 90, "\u03a1": 91, "\u03a3": 92, "\u03a4": 93, "\u03a5": 94, "\u03a6": 95, "\u03a7": 96, "\u03a9": 97, "\u03ac": 98, "\u03ad": 99, "\u03ae": 100, "\u03af": 101, "\u03b0": 102, "\u03b1": 103, "\u03b2": 104, "\u03b3": 105, "\u03b4": 106, "\u03b5": 107, "\u03b6": 108, "\u03b7": 109, "\u03b8": 110, "\u03b9": 111, "\u03ba": 112, "\u03bb": 113, "\u03bc": 114, "\u03bd": 115, "\u03be": 116, "\u03bf": 117, "\u03c0": 118, "\u03c1": 119, "\u03c2": 120, "\u03c3": 121, "\u03c4": 122, "\u03c5": 123, "\u03c6": 124, "\u03c7": 125, "\u03c8": 126, "\u03c9": 127, "\u03ca": 128, "\u03cc": 129, "\u03cd": 130, "\u03ce": 131, "\u1f10": 132, "\u1f30": 133, "\u1f38": 134, "\u1f44": 135, "\u1f60": 136, "\u2013": 137, "\u2018": 138, "\u2019": 139, "\u2026": 140}, "hch": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, ".": 9, "0": 10, "1": 11, "2": 12, "5": 13, "7": 14, "A": 15, "B": 16, "C": 17, "D": 18, "E": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "R": 30, "S": 31, "T": 32, "U": 33, "V": 34, "W": 35, "X": 36, "Y": 37, "Z": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "\u00b4": 65, "\u00e1": 66, "\u00e9": 67, "\u00ed": 68, "\u00f1": 69, "\u00f3": 70, "\u00fa": 71, "\u0197": 72, "\u0268": 73, "\u02bc": 74, "\u02c0": 75, "\u0301": 76, "\u2013": 77, "\u2018": 78, "\u2019": 79}, "kcn": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "%": 5, "'": 6, "(": 7, ")": 8, "-": 9, "0": 10, "1": 11, "A": 12, "B": 13, "C": 14, "D": 15, "E": 16, "F": 17, "G": 18, "H": 19, "I": 20, "J": 21, "K": 22, "L": 23, "M": 24, "N": 25, "O": 26, "P": 27, "Q": 28, "R": 29, "S": 30, "T": 31, "U": 32, "V": 33, "W": 34, "Y": 35, "Z": 36, "a": 37, "b": 38, "c": 39, "d": 40, "e": 41, "f": 42, "g": 43, "h": 44, "i": 45, "j": 46, "k": 47, "l": 48, "m": 49, "n": 50, "o": 51, "p": 52, "q": 53, "r": 54, "s": 55, "t": 56, "u": 57, "v": 58, "w": 59, "x": 60, "y": 61, "z": 62, "\u060c": 63}, "koo": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "1": 8, "A": 9, "B": 10, "C": 11, "E": 12, "G": 13, "H": 14, "I": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "R": 22, "S": 23, "T": 24, "U": 25, "V": 26, "W": 27, "Y": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "w": 51, "x": 52, "y": 53, "z": 54, "\u00e0": 55, "\u00ec": 56, "\u00ed": 57, "\u00f9": 58, "\u0137": 59}, "led": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "A": 8, "B": 9, "C": 10, "D": 11, "E": 12, "F": 13, "G": 14, "H": 15, "I": 16, "J": 17, "K": 18, "L": 19, "M": 20, "N": 21, "P": 22, "R": 23, "S": 24, "T": 25, "U": 26, "V": 27, "W": 28, "Y": 29, "Z": 30, "`": 31, "a": 32, "b": 33, "c": 34, "d": 35, "e": 36, "f": 37, "g": 38, "h": 39, "i": 40, "j": 41, "k": 42, "l": 43, "m": 44, "n": 45, "o": 46, "p": 47, "r": 48, "s": 49, "t": 50, "u": 51, "v": 52, "w": 53, "x": 54, "y": 55, "z": 56, "\u00c0": 57, "\u00cc": 58, "\u00cd": 59, "\u00e0": 60, "\u00e1": 61, "\u00e2": 62, "\u00e8": 63, "\u00e9": 64, "\u00ea": 65, "\u00ec": 66, "\u00ed": 67, "\u00ee": 68, "\u00f2": 69, "\u00f3": 70, "\u00f4": 71, "\u00f9": 72, "\u00fa": 73, "\u00fb": 74, "\u0111": 75, "\u011b": 76, "\u014a": 77, "\u014b": 78, "\u01ce": 79, "\u01d0": 80, "\u01d2": 81, "\u01d4": 82, "\u0266": 83, "\u0268": 84, "\u0289": 85, "\u0300": 86, "\u0301": 87, "\u0302": 88, "\u030c": 89}, "lke": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, ".": 8, "1": 9, "A": 10, "B": 11, "C": 12, "E": 13, "G": 14, "H": 15, "I": 16, "J": 17, "K": 18, "L": 19, "M": 20, "N": 21, "O": 22, "P": 23, "S": 24, "T": 25, "U": 26, "V": 27, "W": 28, "Y": 29, "Z": 30, "a": 31, "b": 32, "c": 33, "d": 34, "e": 35, "f": 36, "g": 37, "h": 38, "i": 39, "j": 40, "k": 41, "l": 42, "m": 43, "n": 44, "o": 45, "p": 46, "q": 47, "r": 48, "s": 49, "t": 50, "u": 51, "v": 52, "w": 53, "x": 54, "y": 55, "z": 56, "\u00e0": 57, "\u00e9": 58, "\u0137": 59}, "lth": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, "0": 7, "1": 8, "2": 9, "A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "I": 17, "J": 18, "K": 19, "L": 20, "M": 21, "N": 22, "O": 23, "P": 24, "R": 25, "S": 26, "T": 27, "U": 28, "V": 29, "W": 30, "Y": 31, "a": 32, "b": 33, "c": 34, "d": 35, "e": 36, "f": 37, "g": 38, "h": 39, "i": 40, "j": 41, "k": 42, "l": 43, "m": 44, "n": 45, "o": 46, "p": 47, "r": 48, "s": 49, "t": 50, "u": 51, "v": 52, "w": 53, "x": 54, "y": 55, "z": 56, "\u00cb": 57, "\u00cf": 58, "\u00d6": 59, "\u00e4": 60, "\u00eb": 61, "\u00ef": 62, "\u00f6": 63, "\u00fc": 64, "\u0254": 65, "\u0268": 66, "\u02b7": 67, "\u0308": 68, "\u0327": 69}, "meh": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, ".": 6, "A": 7, "D": 8, "E": 9, "F": 10, "H": 11, "I": 12, "J": 13, "K": 14, "L": 15, "M": 16, "N": 17, "O": 18, "P": 19, "R": 20, "S": 21, "T": 22, "U": 23, "V": 24, "W": 25, "X": 26, "Y": 27, "]": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "x": 51, "y": 52, "z": 53, "\u00d1": 54, "\u00e1": 55, "\u00e9": 56, "\u00ed": 57, "\u00f1": 58, "\u00fa": 59, "\u0197": 60, "\u0268": 61, "\u02c8": 62, "\u2019": 63, "\u2026": 64}, "mmc": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, ".": 6, "A": 7, "B": 8, "C": 9, "D": 10, "E": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "Q": 22, "R": 23, "S": 24, "T": 25, "V": 26, "X": 27, "Y": 28, "Z": 29, "a": 30, "b": 31, "c": 32, "d": 33, "e": 34, "f": 35, "g": 36, "h": 37, "i": 38, "j": 39, "k": 40, "l": 41, "m": 42, "n": 43, "o": 44, "p": 45, "q": 46, "r": 47, "s": 48, "t": 49, "u": 50, "v": 51, "w": 52, "x": 53, "y": 54, "z": 55, "}": 56, "\u00b4": 57, "\u00c0": 58, "\u00cc": 59, "\u00cd": 60, "\u00d1": 61, "\u00d3": 62, "\u00e0": 63, "\u00e1": 64, "\u00e2": 65, "\u00e4": 66, "\u00e8": 67, "\u00e9": 68, "\u00ea": 69, "\u00eb": 70, "\u00ec": 71, "\u00ed": 72, "\u00ee": 73, "\u00ef": 74, "\u00f1": 75, "\u00f2": 76, "\u00f3": 77, "\u00f4": 78, "\u00f6": 79, "\u00f9": 80, "\u00fa": 81, "\u00fb": 82, "\u00fc": 83, "\u014d": 84, "\u0300": 85, "\u0301": 86, "\u0302": 87, "\u0303": 88, "\u0304": 89, "\u0308": 90, "\u030c": 91}, "pne": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, ".": 9, "0": 10, "1": 11, "2": 12, "3": 13, "9": 14, "A": 15, "B": 16, "C": 17, "D": 18, "E": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "R": 30, "S": 31, "T": 32, "U": 33, "V": 34, "Y": 35, "a": 36, "b": 37, "c": 38, "d": 39, "e": 40, "f": 41, "g": 42, "h": 43, "i": 44, "j": 45, "k": 46, "l": 47, "m": 48, "n": 49, "o": 50, "p": 51, "q": 52, "r": 53, "s": 54, "t": 55, "u": 56, "v": 57, "w": 58, "x": 59, "y": 60, "z": 61, "~": 62}, "ruc": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "2": 8, "3": 9, "4": 10, "A": 11, "B": 12, "C": 13, "E": 14, "F": 15, "G": 16, "H": 17, "I": 18, "J": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "R": 26, "S": 27, "T": 28, "U": 29, "V": 30, "W": 31, "Y": 32, "Z": 33, "a": 34, "b": 35, "c": 36, "d": 37, "e": 38, "f": 39, "g": 40, "h": 41, "i": 42, "j": 43, "k": 44, "l": 45, "m": 46, "n": 47, "o": 48, "p": 49, "r": 50, "s": 51, "t": 52, "u": 53, "v": 54, "w": 55, "x": 56, "y": 57, "z": 58}, "rwm": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "-": 5, "A": 6, "B": 7, "C": 8, "D": 9, "E": 10, "F": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "S": 22, "T": 23, "U": 24, "V": 25, "W": 26, "Y": 27, "Z": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "w": 51, "x": 52, "y": 53, "z": 54, "\u00ed": 55, "\u00f1": 56, "\u0125": 57, "\u0137": 58}, "sco": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, "/": 9, "2": 10, "5": 11, "7": 12, "9": 13, "A": 14, "B": 15, "C": 16, "D": 17, "E": 18, "F": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "Q": 30, "R": 31, "S": 32, "T": 33, "U": 34, "V": 35, "W": 36, "X": 37, "Y": 38, "Z": 39, "a": 40, "b": 41, "c": 42, "d": 43, "e": 44, "f": 45, "g": 46, "h": 47, "i": 48, "j": 49, "k": 50, "l": 51, "m": 52, "n": 53, "o": 54, "p": 55, "q": 56, "r": 57, "s": 58, "t": 59, "u": 60, "v": 61, "w": 62, "x": 63, "y": 64, "z": 65, "\u00df": 66, "\u00e9": 67, "\u00ed": 68, "\u2013": 69, "\u2018": 70, "\u2019": 71, "\u201c": 72, "\u201d": 73, "\u2026": 74}, "tob": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "/": 8, "1": 9, "2": 10, "5": 11, "7": 12, "9": 13, "A": 14, "B": 15, "C": 16, "D": 17, "E": 18, "F": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "Q": 30, "R": 31, "S": 32, "T": 33, "U": 34, "V": 35, "W": 36, "X": 37, "Y": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "\u00b4": 65, "\u00d1": 66, "\u00e1": 67, "\u00e8": 68, "\u00e9": 69, "\u00ed": 70, "\u00f1": 71, "\u00f3": 72, "\u00fa": 73, "\u00fd": 74, "\u00ff": 75, "\u1ef9": 76, "\u2019": 77}, "top": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "+": 8, "-": 9, ".": 10, "0": 11, "1": 12, "2": 13, "5": 14, "6": 15, "7": 16, "9": 17, "A": 18, "B": 19, "C": 20, "D": 21, "E": 22, "F": 23, "G": 24, "H": 25, "I": 26, "J": 27, "K": 28, "L": 29, "M": 30, "N": 31, "O": 32, "P": 33, "R": 34, "S": 35, "T": 36, "U": 37, "V": 38, "W": 39, "X": 40, "Z": 41, "a": 42, "b": 43, "c": 44, "d": 45, "e": 46, "f": 47, "g": 48, "h": 49, "i": 50, "j": 51, "k": 52, "l": 53, "m": 54, "n": 55, "o": 56, "p": 57, "q": 58, "r": 59, "s": 60, "t": 61, "u": 62, "v": 63, "w": 64, "x": 65, "y": 66, "z": 67, "\u00b4": 68, "\u00e1": 69, "\u00e9": 70, "\u00ed": 71, "\u00f1": 72, "\u00f3": 73, "\u00fa": 74, "\u00fd": 75, "\u2019": 76}, "ttj": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "&": 5, "'": 6, "-": 7, "1": 8, "4": 9, "7": 10, "A": 11, "B": 12, "C": 13, "D": 14, "E": 15, "F": 16, "G": 17, "H": 18, "I": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "W": 31, "Y": 32, "a": 33, "b": 34, "c": 35, "d": 36, "e": 37, "f": 38, "g": 39, "h": 40, "i": 41, "j": 42, "k": 43, "l": 44, "m": 45, "n": 46, "o": 47, "p": 48, "r": 49, "s": 50, "t": 51, "u": 52, "v": 53, "w": 54, "y": 55, "z": 56, "\u00f6": 57, "\u00fc": 58, "\u0119": 59}, "ukv": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "*": 6, "A": 7, "B": 8, "D": 9, "E": 10, "G": 11, "I": 12, "K": 13, "L": 14, "M": 15, "N": 16, "P": 17, "R": 18, "S": 19, "T": 20, "U": 21, "W": 22, "Y": 23, "a": 24, "b": 25, "c": 26, "d": 27, "e": 28, "f": 29, "g": 30, "h": 31, "i": 32, "j": 33, "k": 34, "l": 35, "m": 36, "n": 37, "o": 38, "p": 39, "r": 40, "s": 41, "t": 42, "u": 43, "v": 44, "w": 45, "y": 46, "z": 47, "\u00e4": 48, "\u00f3": 49, "\u00f5": 50, "\u00f6": 51, "\u014b": 52, "\u0169": 53, "\u0199": 54, "\u0257": 55, "\u0272": 56, "\u0301": 57, "\u0304": 58, "\u0307": 59, "\u0308": 60, "\u0327": 61, "\u0335": 62}, "ady": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, "A": 7, "B": 8, "C": 9, "D": 10, "E": 11, "F": 12, "G": 13, "H": 14, "I": 15, "J": 16, "K": 17, "L": 18, "M": 19, "N": 20, "P": 21, "R": 22, "S": 23, "T": 24, "U": 25, "V": 26, "X": 27, "Y": 28, "Z": 29, "a": 30, "b": 31, "c": 32, "d": 33, "e": 34, "f": 35, "g": 36, "h": 37, "i": 38, "j": 39, "k": 40, "l": 41, "m": 42, "n": 43, "o": 44, "p": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "x": 51, "y": 52, "z": 53, "\u00ab": 54, "\u00bb": 55, "\u00c7": 56, "\u00e7": 57, "\u00ea": 58, "\u00f6": 59, "\u00fc": 60, "\u011e": 61, "\u011f": 62, "\u0131": 63, "\u015e": 64, "\u015f": 65, "\u0410": 66, "\u0411": 67, "\u0412": 68, "\u0413": 69, "\u0414": 70, "\u0415": 71, "\u0416": 72, "\u0417": 73, "\u0418": 74, "\u041a": 75, "\u041b": 76, "\u041c": 77, "\u041d": 78, "\u041e": 79, "\u041f": 80, "\u0420": 81, "\u0421": 82, "\u0422": 83, "\u0423": 84, "\u0424": 85, "\u0425": 86, "\u0426": 87, "\u0427": 88, "\u0428": 89, "\u0429": 90, "\u042b": 91, "\u042d": 92, "\u042e": 93, "\u042f": 94, "\u0430": 95, "\u0431": 96, "\u0432": 97, "\u0433": 98, "\u0434": 99, "\u0435": 100, "\u0436": 101, "\u0437": 102, "\u0438": 103, "\u0439": 104, "\u043a": 105, "\u043b": 106, "\u043c": 107, "\u043d": 108, "\u043e": 109, "\u043f": 110, "\u0440": 111, "\u0441": 112, "\u0442": 113, "\u0443": 114, "\u0444": 115, "\u0445": 116, "\u0446": 117, "\u0447": 118, "\u0448": 119, "\u0449": 120, "\u044a": 121, "\u044b": 122, "\u044c": 123, "\u044d": 124, "\u044e": 125, "\u044f": 126, "\u0451": 127, "\u04c0": 128, "\u04cf": 129, "\u2013": 130, "\u2014": 131, "\u2026": 132}, "bas": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "-": 5, ".": 6, "A": 7, "B": 8, "D": 9, "E": 10, "F": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "S": 22, "T": 23, "U": 24, "W": 25, "Y": 26, "a": 27, "b": 28, "d": 29, "e": 30, "f": 31, "g": 32, "h": 33, "i": 34, "j": 35, "k": 36, "l": 37, "m": 38, "n": 39, "o": 40, "p": 41, "r": 42, "s": 43, "t": 44, "u": 45, "v": 46, "w": 47, "y": 48, "z": 49, "\u00c9": 50, "\u00d1": 51, "\u00d4": 52, "\u00e9": 53, "\u00f1": 54, "\u00f4": 55, "\u0301": 56, "\u0302": 57, "\u0303": 58, "\u0308": 59}, "kbd": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "A": 8, "B": 9, "C": 10, "D": 11, "E": 12, "F": 13, "G": 14, "H": 15, "I": 16, "J": 17, "K": 18, "L": 19, "M": 20, "N": 21, "P": 22, "R": 23, "S": 24, "T": 25, "U": 26, "V": 27, "X": 28, "Y": 29, "Z": 30, "a": 31, "b": 32, "c": 33, "d": 34, "e": 35, "f": 36, "g": 37, "h": 38, "i": 39, "j": 40, "k": 41, "l": 42, "m": 43, "n": 44, "o": 45, "p": 46, "r": 47, "s": 48, "t": 49, "u": 50, "v": 51, "x": 52, "y": 53, "z": 54, "\u00ab": 55, "\u00bb": 56, "\u00c7": 57, "\u00e7": 58, "\u00ea": 59, "\u00fc": 60, "\u011e": 61, "\u011f": 62, "\u0131": 63, "\u015e": 64, "\u015f": 65, "\u0406": 66, "\u0410": 67, "\u0411": 68, "\u0412": 69, "\u0413": 70, "\u0414": 71, "\u0415": 72, "\u0416": 73, "\u0417": 74, "\u0418": 75, "\u0419": 76, "\u041a": 77, "\u041b": 78, "\u041c": 79, "\u041d": 80, "\u041e": 81, "\u041f": 82, "\u0420": 83, "\u0421": 84, "\u0422": 85, "\u0423": 86, "\u0424": 87, "\u0425": 88, "\u0426": 89, "\u0427": 90, "\u0428": 91, "\u0429": 92, "\u042b": 93, "\u042d": 94, "\u042e": 95, "\u042f": 96, "\u0430": 97, "\u0431": 98, "\u0432": 99, "\u0433": 100, "\u0434": 101, "\u0435": 102, "\u0436": 103, "\u0437": 104, "\u0438": 105, "\u0439": 106, "\u043a": 107, "\u043b": 108, "\u043c": 109, "\u043d": 110, "\u043e": 111, "\u043f": 112, "\u0440": 113, "\u0441": 114, "\u0442": 115, "\u0443": 116, "\u0444": 117, "\u0445": 118, "\u0446": 119, "\u0447": 120, "\u0448": 121, "\u0449": 122, "\u044a": 123, "\u044b": 124, "\u044c": 125, "\u044d": 126, "\u044e": 127, "\u044f": 128, "\u0451": 129, "\u04c0": 130, "\u04cf": 131, "\u2013": 132, "\u2014": 133, "\u2026": 134}, "qxp": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, "A": 7, "B": 8, "C": 9, "D": 10, "E": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "P": 20, "Q": 21, "R": 22, "S": 23, "T": 24, "U": 25, "V": 26, "W": 27, "Y": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "w": 51, "y": 52, "z": 53, "\u00d1": 54, "\u00e1": 55, "\u00ed": 56, "\u00f1": 57, "\u00fa": 58, "\u2019": 59}, "ush": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "#": 5, "(": 6, ")": 7, "-": 8, "/": 9, "=": 10, "@": 11, "D": 12, "E": 13, "T": 14, "[": 15, "]": 16, "a": 17, "d": 18, "e": 19, "h": 20, "n": 21, "o": 22, "p": 23, "r": 24, "s": 25, "t": 26, "w": 27, "}": 28, "\u0436": 29, "\u060c": 30, "\u061b": 31, "\u061f": 32, "\u0622": 33, "\u0623": 34, "\u0624": 35, "\u0626": 36, "\u0627": 37, "\u0628": 38, "\u062a": 39, "\u062b": 40, "\u062c": 41, "\u062d": 42, "\u062e": 43, "\u062f": 44, "\u0630": 45, "\u0631": 46, "\u0632": 47, "\u0633": 48, "\u0634": 49, "\u0635": 50, "\u0636": 51, "\u0637": 52, "\u0638": 53, "\u0639": 54, "\u063a": 55, "\u0641": 56, "\u0642": 57, "\u0644": 58, "\u0645": 59, "\u0646": 60, "\u0647": 61, "\u0648": 62, "\u064b": 63, "\u064f": 64, "\u0650": 65, "\u0679": 66, "\u067e": 67, "\u0685": 68, "\u0686": 69, "\u0687": 70, "\u0688": 71, "\u0691": 72, "\u0698": 73, "\u0699": 74, "\u06a9": 75, "\u06af": 76, "\u06ba": 77, "\u06be": 78, "\u06c1": 79, "\u06cc": 80, "\u06d2": 81, "\u06d4": 82, "\u075c": 83, "\u2014": 84, "\u2018": 85, "\u2019": 86, "\u201c": 87, "\u201d": 88}}
models-03-mms-1b-all-tuned-commonvoice-all-data/config.json ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "activation_dropout": 0.05,
3
+ "adapter_attn_dim": 16,
4
+ "adapter_kernel_size": 3,
5
+ "adapter_stride": 2,
6
+ "add_adapter": false,
7
+ "apply_spec_augment": true,
8
+ "architectures": [
9
+ "Wav2Vec2ForCTC"
10
+ ],
11
+ "attention_dropout": 0.05,
12
+ "bos_token_id": 1,
13
+ "classifier_proj_size": 256,
14
+ "codevector_dim": 1024,
15
+ "contrastive_logits_temperature": 0.1,
16
+ "conv_bias": true,
17
+ "conv_dim": [
18
+ 512,
19
+ 512,
20
+ 512,
21
+ 512,
22
+ 512,
23
+ 512,
24
+ 512
25
+ ],
26
+ "conv_kernel": [
27
+ 10,
28
+ 3,
29
+ 3,
30
+ 3,
31
+ 3,
32
+ 2,
33
+ 2
34
+ ],
35
+ "conv_stride": [
36
+ 5,
37
+ 2,
38
+ 2,
39
+ 2,
40
+ 2,
41
+ 2,
42
+ 2
43
+ ],
44
+ "ctc_loss_reduction": "mean",
45
+ "ctc_zero_infinity": false,
46
+ "diversity_loss_weight": 0.1,
47
+ "do_stable_layer_norm": true,
48
+ "dtype": "float32",
49
+ "eos_token_id": 2,
50
+ "feat_extract_activation": "gelu",
51
+ "feat_extract_dropout": 0.0,
52
+ "feat_extract_norm": "layer",
53
+ "feat_proj_dropout": 0.05,
54
+ "feat_quantizer_dropout": 0.0,
55
+ "final_dropout": 0.05,
56
+ "hidden_act": "gelu",
57
+ "hidden_dropout": 0.05,
58
+ "hidden_size": 1280,
59
+ "initializer_range": 0.02,
60
+ "intermediate_size": 5120,
61
+ "layer_norm_eps": 1e-05,
62
+ "layerdrop": 0.05,
63
+ "mask_feature_length": 10,
64
+ "mask_feature_min_masks": 0,
65
+ "mask_feature_prob": 0.0,
66
+ "mask_time_length": 10,
67
+ "mask_time_min_masks": 2,
68
+ "mask_time_prob": 0.05,
69
+ "model_type": "wav2vec2",
70
+ "num_adapter_layers": 3,
71
+ "num_attention_heads": 16,
72
+ "num_codevector_groups": 2,
73
+ "num_codevectors_per_group": 320,
74
+ "num_conv_pos_embedding_groups": 16,
75
+ "num_conv_pos_embeddings": 128,
76
+ "num_feat_extract_layers": 7,
77
+ "num_hidden_layers": 48,
78
+ "num_negatives": 100,
79
+ "output_hidden_size": 1280,
80
+ "pad_token_id": 0,
81
+ "proj_codevector_dim": 1024,
82
+ "tdnn_dilation": [
83
+ 1,
84
+ 2,
85
+ 3,
86
+ 1,
87
+ 1
88
+ ],
89
+ "tdnn_dim": [
90
+ 512,
91
+ 512,
92
+ 512,
93
+ 512,
94
+ 1500
95
+ ],
96
+ "tdnn_kernel": [
97
+ 5,
98
+ 3,
99
+ 3,
100
+ 1,
101
+ 1
102
+ ],
103
+ "transformers_version": "4.57.1",
104
+ "use_weighted_layer_sum": false,
105
+ "vocab_size": 89,
106
+ "xvector_output_dim": 512
107
+ }
models-03-mms-1b-all-tuned-commonvoice-all-data/preprocessor_config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_normalize": true,
3
+ "feature_extractor_type": "Wav2Vec2FeatureExtractor",
4
+ "feature_size": 1,
5
+ "padding_side": "right",
6
+ "padding_value": 0.0,
7
+ "return_attention_mask": true,
8
+ "sampling_rate": 16000
9
+ }
models-03-mms-1b-all-tuned-commonvoice-all-data/special_tokens_map.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "<s>",
3
+ "eos_token": "</s>",
4
+ "pad_token": "<pad>",
5
+ "unk_token": "<unk>"
6
+ }
models-03-mms-1b-all-tuned-commonvoice-all-data/tokenizer_config.json ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<pad>",
5
+ "lstrip": true,
6
+ "normalized": false,
7
+ "rstrip": true,
8
+ "single_word": false,
9
+ "special": false
10
+ },
11
+ "1": {
12
+ "content": "<s>",
13
+ "lstrip": true,
14
+ "normalized": false,
15
+ "rstrip": true,
16
+ "single_word": false,
17
+ "special": false
18
+ },
19
+ "2": {
20
+ "content": "</s>",
21
+ "lstrip": true,
22
+ "normalized": false,
23
+ "rstrip": true,
24
+ "single_word": false,
25
+ "special": false
26
+ },
27
+ "3": {
28
+ "content": "<unk>",
29
+ "lstrip": true,
30
+ "normalized": false,
31
+ "rstrip": true,
32
+ "single_word": false,
33
+ "special": false
34
+ }
35
+ },
36
+ "bos_token": "<s>",
37
+ "clean_up_tokenization_spaces": false,
38
+ "do_lower_case": false,
39
+ "eos_token": "</s>",
40
+ "extra_special_tokens": {},
41
+ "model_max_length": 1000000000000000019884624838656,
42
+ "pad_token": "<pad>",
43
+ "processor_class": "Wav2Vec2Processor",
44
+ "replace_word_delimiter_char": " ",
45
+ "target_lang": "aln",
46
+ "tokenizer_class": "Wav2Vec2CTCTokenizer",
47
+ "unk_token": "<unk>",
48
+ "word_delimiter_token": "|"
49
+ }
models-03-mms-1b-all-tuned-commonvoice-all-data/trainer_state.json ADDED
@@ -0,0 +1,514 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_global_step": null,
3
+ "best_metric": null,
4
+ "best_model_checkpoint": null,
5
+ "epoch": 30.0,
6
+ "eval_steps": 500,
7
+ "global_step": 18510,
8
+ "is_hyper_param_search": false,
9
+ "is_local_process_zero": true,
10
+ "is_world_process_zero": true,
11
+ "log_history": [
12
+ {
13
+ "epoch": 1.0,
14
+ "grad_norm": 6.142387390136719,
15
+ "learning_rate": 0.001,
16
+ "loss": 1.6404,
17
+ "step": 617
18
+ },
19
+ {
20
+ "epoch": 1.0,
21
+ "eval_loss": 1.1813490390777588,
22
+ "eval_runtime": 31.6398,
23
+ "eval_samples_per_second": 8.47,
24
+ "eval_steps_per_second": 4.235,
25
+ "eval_wer": 0.573535118354676,
26
+ "step": 617
27
+ },
28
+ {
29
+ "epoch": 2.0,
30
+ "grad_norm": 5.926711559295654,
31
+ "learning_rate": 0.001,
32
+ "loss": 1.2189,
33
+ "step": 1234
34
+ },
35
+ {
36
+ "epoch": 2.0,
37
+ "eval_loss": 1.2071176767349243,
38
+ "eval_runtime": 31.6128,
39
+ "eval_samples_per_second": 8.478,
40
+ "eval_steps_per_second": 4.239,
41
+ "eval_wer": 0.5642219635234769,
42
+ "step": 1234
43
+ },
44
+ {
45
+ "epoch": 3.0,
46
+ "grad_norm": 1.071460247039795,
47
+ "learning_rate": 0.001,
48
+ "loss": 1.1593,
49
+ "step": 1851
50
+ },
51
+ {
52
+ "epoch": 3.0,
53
+ "eval_loss": 1.0929021835327148,
54
+ "eval_runtime": 31.5777,
55
+ "eval_samples_per_second": 8.487,
56
+ "eval_steps_per_second": 4.244,
57
+ "eval_wer": 0.5278101151209417,
58
+ "step": 1851
59
+ },
60
+ {
61
+ "epoch": 4.0,
62
+ "grad_norm": 1.797624111175537,
63
+ "learning_rate": 0.001,
64
+ "loss": 1.1299,
65
+ "step": 2468
66
+ },
67
+ {
68
+ "epoch": 4.0,
69
+ "eval_loss": 1.034507155418396,
70
+ "eval_runtime": 31.5622,
71
+ "eval_samples_per_second": 8.491,
72
+ "eval_steps_per_second": 4.246,
73
+ "eval_wer": 0.5146164791100764,
74
+ "step": 2468
75
+ },
76
+ {
77
+ "epoch": 5.0,
78
+ "grad_norm": 3.277179002761841,
79
+ "learning_rate": 0.001,
80
+ "loss": 1.1073,
81
+ "step": 3085
82
+ },
83
+ {
84
+ "epoch": 5.0,
85
+ "eval_loss": 1.0591968297958374,
86
+ "eval_runtime": 31.5976,
87
+ "eval_samples_per_second": 8.482,
88
+ "eval_steps_per_second": 4.241,
89
+ "eval_wer": 0.5151985512870263,
90
+ "step": 3085
91
+ },
92
+ {
93
+ "epoch": 6.0,
94
+ "grad_norm": 1.4815887212753296,
95
+ "learning_rate": 0.001,
96
+ "loss": 1.0769,
97
+ "step": 3702
98
+ },
99
+ {
100
+ "epoch": 6.0,
101
+ "eval_loss": 1.0485769510269165,
102
+ "eval_runtime": 31.5956,
103
+ "eval_samples_per_second": 8.482,
104
+ "eval_steps_per_second": 4.241,
105
+ "eval_wer": 0.4926917604449618,
106
+ "step": 3702
107
+ },
108
+ {
109
+ "epoch": 7.0,
110
+ "grad_norm": 3.247382640838623,
111
+ "learning_rate": 0.001,
112
+ "loss": 1.0535,
113
+ "step": 4319
114
+ },
115
+ {
116
+ "epoch": 7.0,
117
+ "eval_loss": 0.9702441096305847,
118
+ "eval_runtime": 31.5674,
119
+ "eval_samples_per_second": 8.49,
120
+ "eval_steps_per_second": 4.245,
121
+ "eval_wer": 0.4858362436942181,
122
+ "step": 4319
123
+ },
124
+ {
125
+ "epoch": 8.0,
126
+ "grad_norm": 7.202455997467041,
127
+ "learning_rate": 0.001,
128
+ "loss": 1.0503,
129
+ "step": 4936
130
+ },
131
+ {
132
+ "epoch": 8.0,
133
+ "eval_loss": 1.0273774862289429,
134
+ "eval_runtime": 31.7331,
135
+ "eval_samples_per_second": 8.445,
136
+ "eval_steps_per_second": 4.223,
137
+ "eval_wer": 0.4794981244340965,
138
+ "step": 4936
139
+ },
140
+ {
141
+ "epoch": 9.0,
142
+ "grad_norm": 1.906989574432373,
143
+ "learning_rate": 0.001,
144
+ "loss": 1.0421,
145
+ "step": 5553
146
+ },
147
+ {
148
+ "epoch": 9.0,
149
+ "eval_loss": 0.9730055928230286,
150
+ "eval_runtime": 31.6308,
151
+ "eval_samples_per_second": 8.473,
152
+ "eval_steps_per_second": 4.236,
153
+ "eval_wer": 0.4729659811149916,
154
+ "step": 5553
155
+ },
156
+ {
157
+ "epoch": 10.0,
158
+ "grad_norm": 1.5502122640609741,
159
+ "learning_rate": 0.001,
160
+ "loss": 1.0233,
161
+ "step": 6170
162
+ },
163
+ {
164
+ "epoch": 10.0,
165
+ "eval_loss": 1.0030382871627808,
166
+ "eval_runtime": 31.6102,
167
+ "eval_samples_per_second": 8.478,
168
+ "eval_steps_per_second": 4.239,
169
+ "eval_wer": 0.5046565774155995,
170
+ "step": 6170
171
+ },
172
+ {
173
+ "epoch": 11.0,
174
+ "grad_norm": 1.6554566621780396,
175
+ "learning_rate": 0.001,
176
+ "loss": 1.0124,
177
+ "step": 6787
178
+ },
179
+ {
180
+ "epoch": 11.0,
181
+ "eval_loss": 1.0441631078720093,
182
+ "eval_runtime": 31.6166,
183
+ "eval_samples_per_second": 8.477,
184
+ "eval_steps_per_second": 4.238,
185
+ "eval_wer": 0.4636528262837925,
186
+ "step": 6787
187
+ },
188
+ {
189
+ "epoch": 12.0,
190
+ "grad_norm": 2.694192409515381,
191
+ "learning_rate": 0.001,
192
+ "loss": 0.9999,
193
+ "step": 7404
194
+ },
195
+ {
196
+ "epoch": 12.0,
197
+ "eval_loss": 1.0214890241622925,
198
+ "eval_runtime": 31.5327,
199
+ "eval_samples_per_second": 8.499,
200
+ "eval_steps_per_second": 4.25,
201
+ "eval_wer": 0.45388694864829904,
202
+ "step": 7404
203
+ },
204
+ {
205
+ "epoch": 13.0,
206
+ "grad_norm": 1.5703463554382324,
207
+ "learning_rate": 0.001,
208
+ "loss": 0.9897,
209
+ "step": 8021
210
+ },
211
+ {
212
+ "epoch": 13.0,
213
+ "eval_loss": 0.9969828724861145,
214
+ "eval_runtime": 31.5857,
215
+ "eval_samples_per_second": 8.485,
216
+ "eval_steps_per_second": 4.242,
217
+ "eval_wer": 0.46087181477169836,
218
+ "step": 8021
219
+ },
220
+ {
221
+ "epoch": 14.0,
222
+ "grad_norm": 1.4371331930160522,
223
+ "learning_rate": 0.001,
224
+ "loss": 0.9876,
225
+ "step": 8638
226
+ },
227
+ {
228
+ "epoch": 14.0,
229
+ "eval_loss": 0.9558866024017334,
230
+ "eval_runtime": 31.5775,
231
+ "eval_samples_per_second": 8.487,
232
+ "eval_steps_per_second": 4.244,
233
+ "eval_wer": 0.4465140344069331,
234
+ "step": 8638
235
+ },
236
+ {
237
+ "epoch": 15.0,
238
+ "grad_norm": 1.0465878248214722,
239
+ "learning_rate": 0.001,
240
+ "loss": 0.9485,
241
+ "step": 9255
242
+ },
243
+ {
244
+ "epoch": 15.0,
245
+ "eval_loss": 0.9643862247467041,
246
+ "eval_runtime": 31.5664,
247
+ "eval_samples_per_second": 8.49,
248
+ "eval_steps_per_second": 4.245,
249
+ "eval_wer": 0.4463200103479498,
250
+ "step": 9255
251
+ },
252
+ {
253
+ "epoch": 16.0,
254
+ "grad_norm": 0.7919704914093018,
255
+ "learning_rate": 0.001,
256
+ "loss": 0.9473,
257
+ "step": 9872
258
+ },
259
+ {
260
+ "epoch": 16.0,
261
+ "eval_loss": 0.9228473901748657,
262
+ "eval_runtime": 31.796,
263
+ "eval_samples_per_second": 8.429,
264
+ "eval_steps_per_second": 4.214,
265
+ "eval_wer": 0.43383779588668997,
266
+ "step": 9872
267
+ },
268
+ {
269
+ "epoch": 17.0,
270
+ "grad_norm": 2.4572646617889404,
271
+ "learning_rate": 0.0005,
272
+ "loss": 0.9062,
273
+ "step": 10489
274
+ },
275
+ {
276
+ "epoch": 17.0,
277
+ "eval_loss": 0.8750792741775513,
278
+ "eval_runtime": 31.6233,
279
+ "eval_samples_per_second": 8.475,
280
+ "eval_steps_per_second": 4.237,
281
+ "eval_wer": 0.42258440046565776,
282
+ "step": 10489
283
+ },
284
+ {
285
+ "epoch": 18.0,
286
+ "grad_norm": 2.0163021087646484,
287
+ "learning_rate": 0.0005,
288
+ "loss": 0.8839,
289
+ "step": 11106
290
+ },
291
+ {
292
+ "epoch": 18.0,
293
+ "eval_loss": 0.8883673548698425,
294
+ "eval_runtime": 31.6267,
295
+ "eval_samples_per_second": 8.474,
296
+ "eval_steps_per_second": 4.237,
297
+ "eval_wer": 0.41378864312508085,
298
+ "step": 11106
299
+ },
300
+ {
301
+ "epoch": 19.0,
302
+ "grad_norm": 1.1623060703277588,
303
+ "learning_rate": 0.0005,
304
+ "loss": 0.88,
305
+ "step": 11723
306
+ },
307
+ {
308
+ "epoch": 19.0,
309
+ "eval_loss": 0.867786169052124,
310
+ "eval_runtime": 31.5967,
311
+ "eval_samples_per_second": 8.482,
312
+ "eval_steps_per_second": 4.241,
313
+ "eval_wer": 0.4091320657094813,
314
+ "step": 11723
315
+ },
316
+ {
317
+ "epoch": 20.0,
318
+ "grad_norm": 1.3829597234725952,
319
+ "learning_rate": 0.0005,
320
+ "loss": 0.862,
321
+ "step": 12340
322
+ },
323
+ {
324
+ "epoch": 20.0,
325
+ "eval_loss": 0.7998231053352356,
326
+ "eval_runtime": 31.7219,
327
+ "eval_samples_per_second": 8.448,
328
+ "eval_steps_per_second": 4.224,
329
+ "eval_wer": 0.40654507825637043,
330
+ "step": 12340
331
+ },
332
+ {
333
+ "epoch": 21.0,
334
+ "grad_norm": 2.9008634090423584,
335
+ "learning_rate": 0.0005,
336
+ "loss": 0.8595,
337
+ "step": 12957
338
+ },
339
+ {
340
+ "epoch": 21.0,
341
+ "eval_loss": 0.8467879891395569,
342
+ "eval_runtime": 31.5921,
343
+ "eval_samples_per_second": 8.483,
344
+ "eval_steps_per_second": 4.242,
345
+ "eval_wer": 0.4033113439399819,
346
+ "step": 12957
347
+ },
348
+ {
349
+ "epoch": 22.0,
350
+ "grad_norm": 2.195237398147583,
351
+ "learning_rate": 0.0005,
352
+ "loss": 0.8507,
353
+ "step": 13574
354
+ },
355
+ {
356
+ "epoch": 22.0,
357
+ "eval_loss": 0.8179259300231934,
358
+ "eval_runtime": 31.7256,
359
+ "eval_samples_per_second": 8.447,
360
+ "eval_steps_per_second": 4.224,
361
+ "eval_wer": 0.4057689820204372,
362
+ "step": 13574
363
+ },
364
+ {
365
+ "epoch": 23.0,
366
+ "grad_norm": 2.596975088119507,
367
+ "learning_rate": 0.0005,
368
+ "loss": 0.8403,
369
+ "step": 14191
370
+ },
371
+ {
372
+ "epoch": 23.0,
373
+ "eval_loss": 0.8047757744789124,
374
+ "eval_runtime": 31.5678,
375
+ "eval_samples_per_second": 8.49,
376
+ "eval_steps_per_second": 4.245,
377
+ "eval_wer": 0.39419221316776615,
378
+ "step": 14191
379
+ },
380
+ {
381
+ "epoch": 24.0,
382
+ "grad_norm": 1.4368164539337158,
383
+ "learning_rate": 0.00025,
384
+ "loss": 0.8123,
385
+ "step": 14808
386
+ },
387
+ {
388
+ "epoch": 24.0,
389
+ "eval_loss": 0.7663103938102722,
390
+ "eval_runtime": 31.5876,
391
+ "eval_samples_per_second": 8.484,
392
+ "eval_steps_per_second": 4.242,
393
+ "eval_wer": 0.38778941922131677,
394
+ "step": 14808
395
+ },
396
+ {
397
+ "epoch": 25.0,
398
+ "grad_norm": 1.2003378868103027,
399
+ "learning_rate": 0.00025,
400
+ "loss": 0.8027,
401
+ "step": 15425
402
+ },
403
+ {
404
+ "epoch": 25.0,
405
+ "eval_loss": 0.7548543214797974,
406
+ "eval_runtime": 31.5931,
407
+ "eval_samples_per_second": 8.483,
408
+ "eval_steps_per_second": 4.241,
409
+ "eval_wer": 0.37860561376277324,
410
+ "step": 15425
411
+ },
412
+ {
413
+ "epoch": 26.0,
414
+ "grad_norm": 1.2984884977340698,
415
+ "learning_rate": 0.00025,
416
+ "loss": 0.7896,
417
+ "step": 16042
418
+ },
419
+ {
420
+ "epoch": 26.0,
421
+ "eval_loss": 0.8028557896614075,
422
+ "eval_runtime": 31.5298,
423
+ "eval_samples_per_second": 8.5,
424
+ "eval_steps_per_second": 4.25,
425
+ "eval_wer": 0.3768593972319234,
426
+ "step": 16042
427
+ },
428
+ {
429
+ "epoch": 27.0,
430
+ "grad_norm": 4.504669189453125,
431
+ "learning_rate": 0.00025,
432
+ "loss": 0.7944,
433
+ "step": 16659
434
+ },
435
+ {
436
+ "epoch": 27.0,
437
+ "eval_loss": 0.717046856880188,
438
+ "eval_runtime": 31.6038,
439
+ "eval_samples_per_second": 8.48,
440
+ "eval_steps_per_second": 4.24,
441
+ "eval_wer": 0.3773767947225456,
442
+ "step": 16659
443
+ },
444
+ {
445
+ "epoch": 28.0,
446
+ "grad_norm": 0.9817417860031128,
447
+ "learning_rate": 0.00025,
448
+ "loss": 0.78,
449
+ "step": 17276
450
+ },
451
+ {
452
+ "epoch": 28.0,
453
+ "eval_loss": 0.7577293515205383,
454
+ "eval_runtime": 31.6954,
455
+ "eval_samples_per_second": 8.455,
456
+ "eval_steps_per_second": 4.228,
457
+ "eval_wer": 0.37297891605225714,
458
+ "step": 17276
459
+ },
460
+ {
461
+ "epoch": 29.0,
462
+ "grad_norm": 2.1830127239227295,
463
+ "learning_rate": 0.00025,
464
+ "loss": 0.7832,
465
+ "step": 17893
466
+ },
467
+ {
468
+ "epoch": 29.0,
469
+ "eval_loss": 0.6816357374191284,
470
+ "eval_runtime": 31.5492,
471
+ "eval_samples_per_second": 8.495,
472
+ "eval_steps_per_second": 4.247,
473
+ "eval_wer": 0.37343163885655156,
474
+ "step": 17893
475
+ },
476
+ {
477
+ "epoch": 30.0,
478
+ "grad_norm": 1.1032058000564575,
479
+ "learning_rate": 0.00025,
480
+ "loss": 0.7795,
481
+ "step": 18510
482
+ },
483
+ {
484
+ "epoch": 30.0,
485
+ "eval_loss": 0.718184769153595,
486
+ "eval_runtime": 31.5519,
487
+ "eval_samples_per_second": 8.494,
488
+ "eval_steps_per_second": 4.247,
489
+ "eval_wer": 0.36735221834174103,
490
+ "step": 18510
491
+ }
492
+ ],
493
+ "logging_steps": 500,
494
+ "max_steps": 18510,
495
+ "num_input_tokens_seen": 0,
496
+ "num_train_epochs": 30,
497
+ "save_steps": 500,
498
+ "stateful_callbacks": {
499
+ "TrainerControl": {
500
+ "args": {
501
+ "should_epoch_stop": false,
502
+ "should_evaluate": false,
503
+ "should_log": false,
504
+ "should_save": true,
505
+ "should_training_stop": true
506
+ },
507
+ "attributes": {}
508
+ }
509
+ },
510
+ "total_flos": 9.881455601618431e+19,
511
+ "train_batch_size": 2,
512
+ "trial_name": null,
513
+ "trial_params": null
514
+ }
models-03-mms-1b-all-tuned-commonvoice-all-data/vocab.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"aln": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, ".": 9, "/": 10, "=": 11, "A": 12, "B": 13, "C": 14, "D": 15, "E": 16, "F": 17, "G": 18, "H": 19, "I": 20, "J": 21, "K": 22, "L": 23, "M": 24, "N": 25, "O": 26, "P": 27, "Q": 28, "R": 29, "S": 30, "T": 31, "U": 32, "V": 33, "W": 34, "X": 35, "Y": 36, "Z": 37, "[": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "{": 65, "}": 66, "\u0395": 67, "\u03a4": 68, "\u03ac": 69, "\u03ad": 70, "\u03ae": 71, "\u03af": 72, "\u03b1": 73, "\u03b5": 74, "\u03b6": 75, "\u03b8": 76, "\u03ba": 77, "\u03bb": 78, "\u03bd": 79, "\u03bf": 80, "\u03c0": 81, "\u03c1": 82, "\u03c2": 83, "\u03c3": 84, "\u03c4": 85, "\u03c5": 86, "\u03c6": 87, "\u03c9": 88}, "bew": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "%": 5, "'": 6, "(": 7, ")": 8, "*": 9, "-": 10, ".": 11, "/": 12, "0": 13, "1": 14, "2": 15, "3": 16, "4": 17, "5": 18, "6": 19, "7": 20, "8": 21, "9": 22, "A": 23, "B": 24, "C": 25, "D": 26, "E": 27, "F": 28, "G": 29, "H": 30, "I": 31, "J": 32, "K": 33, "L": 34, "M": 35, "N": 36, "O": 37, "P": 38, "Q": 39, "R": 40, "S": 41, "T": 42, "U": 43, "V": 44, "W": 45, "Y": 46, "Z": 47, "a": 48, "b": 49, "c": 50, "d": 51, "e": 52, "f": 53, "g": 54, "h": 55, "i": 56, "j": 57, "k": 58, "l": 59, "m": 60, "n": 61, "o": 62, "p": 63, "q": 64, "r": 65, "s": 66, "t": 67, "u": 68, "v": 69, "w": 70, "x": 71, "y": 72, "z": 73, "\u00e8": 74, "\u00e9": 75, "\u00ea": 76}, "bxk": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "#": 5, "&": 6, "'": 7, "(": 8, ")": 9, "-": 10, "0": 11, "1": 12, "2": 13, "5": 14, "6": 15, "9": 16, "@": 17, "A": 18, "B": 19, "C": 20, "D": 21, "E": 22, "F": 23, "G": 24, "H": 25, "I": 26, "K": 27, "L": 28, "M": 29, "N": 30, "O": 31, "P": 32, "S": 33, "T": 34, "U": 35, "V": 36, "W": 37, "Y": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "~": 65}, "cgg": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "&": 5, "'": 6, "-": 7, ".": 8, "0": 9, "1": 10, "2": 11, "8": 12, "9": 13, "A": 14, "B": 15, "C": 16, "D": 17, "E": 18, "F": 19, "G": 20, "H": 21, "I": 22, "K": 23, "L": 24, "M": 25, "N": 26, "O": 27, "P": 28, "R": 29, "S": 30, "T": 31, "U": 32, "V": 33, "W": 34, "Y": 35, "Z": 36, "a": 37, "b": 38, "c": 39, "d": 40, "e": 41, "f": 42, "g": 43, "h": 44, "i": 45, "j": 46, "k": 47, "l": 48, "m": 49, "n": 50, "o": 51, "p": 52, "r": 53, "s": 54, "t": 55, "u": 56, "v": 57, "w": 58, "x": 59, "y": 60, "z": 61}, "el-CY": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "&": 5, "'": 6, "(": 7, ")": 8, "-": 9, ".": 10, "0": 11, "1": 12, "2": 13, "3": 14, "4": 15, "5": 16, "7": 17, "9": 18, "A": 19, "C": 20, "D": 21, "E": 22, "G": 23, "H": 24, "I": 25, "K": 26, "L": 27, "M": 28, "N": 29, "O": 30, "P": 31, "R": 32, "S": 33, "T": 34, "V": 35, "W": 36, "a": 37, "b": 38, "c": 39, "d": 40, "e": 41, "f": 42, "g": 43, "h": 44, "i": 45, "k": 46, "l": 47, "m": 48, "n": 49, "o": 50, "p": 51, "r": 52, "s": 53, "t": 54, "u": 55, "v": 56, "w": 57, "x": 58, "y": 59, "\u00ab": 60, "\u00bb": 61, "\u017e": 62, "\u0301": 63, "\u0306": 64, "\u030c": 65, "\u0340": 66, "\u0358": 67, "\u0384": 68, "\u0385": 69, "\u0386": 70, "\u0388": 71, "\u0389": 72, "\u038a": 73, "\u038c": 74, "\u038e": 75, "\u038f": 76, "\u0390": 77, "\u0391": 78, "\u0392": 79, "\u0393": 80, "\u0394": 81, "\u0395": 82, "\u0396": 83, "\u0397": 84, "\u0398": 85, "\u0399": 86, "\u039a": 87, "\u039b": 88, "\u039c": 89, "\u039d": 90, "\u039e": 91, "\u039f": 92, "\u03a0": 93, "\u03a1": 94, "\u03a3": 95, "\u03a4": 96, "\u03a5": 97, "\u03a6": 98, "\u03a7": 99, "\u03a9": 100, "\u03ac": 101, "\u03ad": 102, "\u03ae": 103, "\u03af": 104, "\u03b0": 105, "\u03b1": 106, "\u03b2": 107, "\u03b3": 108, "\u03b4": 109, "\u03b5": 110, "\u03b6": 111, "\u03b7": 112, "\u03b8": 113, "\u03b9": 114, "\u03ba": 115, "\u03bb": 116, "\u03bc": 117, "\u03bd": 118, "\u03be": 119, "\u03bf": 120, "\u03c0": 121, "\u03c1": 122, "\u03c2": 123, "\u03c3": 124, "\u03c4": 125, "\u03c5": 126, "\u03c6": 127, "\u03c7": 128, "\u03c8": 129, "\u03c9": 130, "\u03ca": 131, "\u03cc": 132, "\u03cd": 133, "\u03ce": 134, "\u1f10": 135, "\u1f30": 136, "\u1f38": 137, "\u1f44": 138, "\u1f60": 139, "\u2013": 140, "\u2014": 141, "\u2018": 142, "\u2019": 143, "\u2026": 144}, "hch": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, ".": 9, "0": 10, "1": 11, "2": 12, "5": 13, "7": 14, "A": 15, "B": 16, "C": 17, "D": 18, "E": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "R": 30, "S": 31, "T": 32, "U": 33, "V": 34, "W": 35, "X": 36, "Y": 37, "Z": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "\u00b4": 65, "\u00e1": 66, "\u00e9": 67, "\u00ed": 68, "\u00f1": 69, "\u00f3": 70, "\u00fa": 71, "\u0197": 72, "\u0268": 73, "\u02bc": 74, "\u02c0": 75, "\u0301": 76, "\u2013": 77, "\u2018": 78, "\u2019": 79}, "kcn": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "%": 5, "'": 6, "(": 7, ")": 8, "-": 9, "0": 10, "1": 11, "A": 12, "B": 13, "C": 14, "D": 15, "E": 16, "F": 17, "G": 18, "H": 19, "I": 20, "J": 21, "K": 22, "L": 23, "M": 24, "N": 25, "O": 26, "P": 27, "Q": 28, "R": 29, "S": 30, "T": 31, "U": 32, "V": 33, "W": 34, "Y": 35, "Z": 36, "a": 37, "b": 38, "c": 39, "d": 40, "e": 41, "f": 42, "g": 43, "h": 44, "i": 45, "j": 46, "k": 47, "l": 48, "m": 49, "n": 50, "o": 51, "p": 52, "q": 53, "r": 54, "s": 55, "t": 56, "u": 57, "v": 58, "w": 59, "x": 60, "y": 61, "z": 62, "\u060c": 63}, "koo": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "1": 8, "A": 9, "B": 10, "C": 11, "E": 12, "G": 13, "H": 14, "I": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "R": 22, "S": 23, "T": 24, "U": 25, "V": 26, "W": 27, "Y": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "w": 51, "x": 52, "y": 53, "z": 54, "\u00e0": 55, "\u00ec": 56, "\u00ed": 57, "\u00f9": 58, "\u0137": 59}, "led": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "A": 8, "B": 9, "C": 10, "D": 11, "E": 12, "F": 13, "G": 14, "H": 15, "I": 16, "J": 17, "K": 18, "L": 19, "M": 20, "N": 21, "P": 22, "R": 23, "S": 24, "T": 25, "U": 26, "V": 27, "W": 28, "Y": 29, "Z": 30, "`": 31, "a": 32, "b": 33, "c": 34, "d": 35, "e": 36, "f": 37, "g": 38, "h": 39, "i": 40, "j": 41, "k": 42, "l": 43, "m": 44, "n": 45, "o": 46, "p": 47, "r": 48, "s": 49, "t": 50, "u": 51, "v": 52, "w": 53, "x": 54, "y": 55, "z": 56, "\u00c0": 57, "\u00cc": 58, "\u00cd": 59, "\u00e0": 60, "\u00e1": 61, "\u00e2": 62, "\u00e8": 63, "\u00e9": 64, "\u00ea": 65, "\u00ec": 66, "\u00ed": 67, "\u00ee": 68, "\u00f2": 69, "\u00f3": 70, "\u00f4": 71, "\u00f9": 72, "\u00fa": 73, "\u00fb": 74, "\u0111": 75, "\u011b": 76, "\u014a": 77, "\u014b": 78, "\u01ce": 79, "\u01d0": 80, "\u01d2": 81, "\u01d4": 82, "\u0266": 83, "\u0268": 84, "\u0289": 85, "\u0300": 86, "\u0301": 87, "\u0302": 88, "\u030c": 89}, "lke": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, ".": 8, "1": 9, "A": 10, "B": 11, "C": 12, "E": 13, "G": 14, "H": 15, "I": 16, "J": 17, "K": 18, "L": 19, "M": 20, "N": 21, "O": 22, "P": 23, "S": 24, "T": 25, "U": 26, "V": 27, "W": 28, "Y": 29, "Z": 30, "a": 31, "b": 32, "c": 33, "d": 34, "e": 35, "f": 36, "g": 37, "h": 38, "i": 39, "j": 40, "k": 41, "l": 42, "m": 43, "n": 44, "o": 45, "p": 46, "q": 47, "r": 48, "s": 49, "t": 50, "u": 51, "v": 52, "w": 53, "x": 54, "y": 55, "z": 56, "\u00e0": 57, "\u00e9": 58, "\u0137": 59}, "lth": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, "0": 7, "1": 8, "2": 9, "A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "I": 17, "J": 18, "K": 19, "L": 20, "M": 21, "N": 22, "O": 23, "P": 24, "R": 25, "S": 26, "T": 27, "U": 28, "V": 29, "W": 30, "Y": 31, "a": 32, "b": 33, "c": 34, "d": 35, "e": 36, "f": 37, "g": 38, "h": 39, "i": 40, "j": 41, "k": 42, "l": 43, "m": 44, "n": 45, "o": 46, "p": 47, "r": 48, "s": 49, "t": 50, "u": 51, "v": 52, "w": 53, "x": 54, "y": 55, "z": 56, "\u00cb": 57, "\u00cf": 58, "\u00d6": 59, "\u00e4": 60, "\u00eb": 61, "\u00ef": 62, "\u00f6": 63, "\u00fc": 64, "\u0254": 65, "\u0268": 66, "\u02b7": 67, "\u0308": 68, "\u0327": 69}, "meh": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "A": 8, "D": 9, "E": 10, "F": 11, "H": 12, "I": 13, "J": 14, "K": 15, "L": 16, "M": 17, "N": 18, "O": 19, "P": 20, "R": 21, "S": 22, "T": 23, "U": 24, "V": 25, "W": 26, "X": 27, "Y": 28, "]": 29, "a": 30, "b": 31, "c": 32, "d": 33, "e": 34, "f": 35, "g": 36, "h": 37, "i": 38, "j": 39, "k": 40, "l": 41, "m": 42, "n": 43, "o": 44, "p": 45, "q": 46, "r": 47, "s": 48, "t": 49, "u": 50, "v": 51, "x": 52, "y": 53, "z": 54, "\u00d1": 55, "\u00e1": 56, "\u00e9": 57, "\u00ed": 58, "\u00f1": 59, "\u00fa": 60, "\u0197": 61, "\u0268": 62, "\u02c8": 63, "\u2019": 64, "\u2026": 65}, "mmc": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, ".": 6, "A": 7, "B": 8, "C": 9, "D": 10, "E": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "Q": 22, "R": 23, "S": 24, "T": 25, "V": 26, "X": 27, "Y": 28, "Z": 29, "a": 30, "b": 31, "c": 32, "d": 33, "e": 34, "f": 35, "g": 36, "h": 37, "i": 38, "j": 39, "k": 40, "l": 41, "m": 42, "n": 43, "o": 44, "p": 45, "q": 46, "r": 47, "s": 48, "t": 49, "u": 50, "v": 51, "w": 52, "x": 53, "y": 54, "z": 55, "}": 56, "\u00b4": 57, "\u00c0": 58, "\u00cc": 59, "\u00cd": 60, "\u00d1": 61, "\u00d3": 62, "\u00e0": 63, "\u00e1": 64, "\u00e2": 65, "\u00e4": 66, "\u00e8": 67, "\u00e9": 68, "\u00ea": 69, "\u00eb": 70, "\u00ec": 71, "\u00ed": 72, "\u00ee": 73, "\u00ef": 74, "\u00f1": 75, "\u00f2": 76, "\u00f3": 77, "\u00f4": 78, "\u00f6": 79, "\u00f9": 80, "\u00fa": 81, "\u00fb": 82, "\u00fc": 83, "\u00fd": 84, "\u014d": 85, "\u0300": 86, "\u0301": 87, "\u0302": 88, "\u0303": 89, "\u0304": 90, "\u0308": 91, "\u030c": 92}, "pne": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, ".": 9, "0": 10, "1": 11, "2": 12, "3": 13, "9": 14, "A": 15, "B": 16, "C": 17, "D": 18, "E": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "R": 30, "S": 31, "T": 32, "U": 33, "V": 34, "Y": 35, "a": 36, "b": 37, "c": 38, "d": 39, "e": 40, "f": 41, "g": 42, "h": 43, "i": 44, "j": 45, "k": 46, "l": 47, "m": 48, "n": 49, "o": 50, "p": 51, "q": 52, "r": 53, "s": 54, "t": 55, "u": 56, "v": 57, "w": 58, "x": 59, "y": 60, "z": 61, "~": 62}, "ruc": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "2": 8, "3": 9, "4": 10, "A": 11, "B": 12, "C": 13, "E": 14, "F": 15, "G": 16, "H": 17, "I": 18, "J": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "R": 26, "S": 27, "T": 28, "U": 29, "V": 30, "W": 31, "Y": 32, "Z": 33, "a": 34, "b": 35, "c": 36, "d": 37, "e": 38, "f": 39, "g": 40, "h": 41, "i": 42, "j": 43, "k": 44, "l": 45, "m": 46, "n": 47, "o": 48, "p": 49, "r": 50, "s": 51, "t": 52, "u": 53, "v": 54, "w": 55, "x": 56, "y": 57, "z": 58}, "rwm": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "-": 5, "A": 6, "B": 7, "C": 8, "D": 9, "E": 10, "F": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "S": 22, "T": 23, "U": 24, "V": 25, "W": 26, "Y": 27, "Z": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "w": 51, "x": 52, "y": 53, "z": 54, "\u00ed": 55, "\u00f1": 56, "\u0125": 57, "\u0137": 58}, "sco": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "-": 8, "/": 9, "2": 10, "5": 11, "7": 12, "9": 13, "A": 14, "B": 15, "C": 16, "D": 17, "E": 18, "F": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "Q": 30, "R": 31, "S": 32, "T": 33, "U": 34, "V": 35, "W": 36, "X": 37, "Y": 38, "Z": 39, "a": 40, "b": 41, "c": 42, "d": 43, "e": 44, "f": 45, "g": 46, "h": 47, "i": 48, "j": 49, "k": 50, "l": 51, "m": 52, "n": 53, "o": 54, "p": 55, "q": 56, "r": 57, "s": 58, "t": 59, "u": 60, "v": 61, "w": 62, "x": 63, "y": 64, "z": 65, "\u00df": 66, "\u00e9": 67, "\u00ed": 68, "\u2013": 69, "\u2018": 70, "\u2019": 71, "\u201c": 72, "\u201d": 73, "\u2026": 74}, "tob": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "/": 8, "1": 9, "2": 10, "5": 11, "7": 12, "9": 13, "A": 14, "B": 15, "C": 16, "D": 17, "E": 18, "F": 19, "G": 20, "H": 21, "I": 22, "J": 23, "K": 24, "L": 25, "M": 26, "N": 27, "O": 28, "P": 29, "Q": 30, "R": 31, "S": 32, "T": 33, "U": 34, "V": 35, "W": 36, "X": 37, "Y": 38, "a": 39, "b": 40, "c": 41, "d": 42, "e": 43, "f": 44, "g": 45, "h": 46, "i": 47, "j": 48, "k": 49, "l": 50, "m": 51, "n": 52, "o": 53, "p": 54, "q": 55, "r": 56, "s": 57, "t": 58, "u": 59, "v": 60, "w": 61, "x": 62, "y": 63, "z": 64, "\u00b4": 65, "\u00d1": 66, "\u00e1": 67, "\u00e8": 68, "\u00e9": 69, "\u00ed": 70, "\u00f1": 71, "\u00f3": 72, "\u00fa": 73, "\u00fd": 74, "\u00ff": 75, "\u0177": 76, "\u1ef9": 77, "\u2019": 78}, "top": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "(": 6, ")": 7, "+": 8, "-": 9, ".": 10, "0": 11, "1": 12, "2": 13, "5": 14, "6": 15, "7": 16, "9": 17, "A": 18, "B": 19, "C": 20, "D": 21, "E": 22, "F": 23, "G": 24, "H": 25, "I": 26, "J": 27, "K": 28, "L": 29, "M": 30, "N": 31, "O": 32, "P": 33, "R": 34, "S": 35, "T": 36, "U": 37, "V": 38, "W": 39, "X": 40, "Z": 41, "a": 42, "b": 43, "c": 44, "d": 45, "e": 46, "f": 47, "g": 48, "h": 49, "i": 50, "j": 51, "k": 52, "l": 53, "m": 54, "n": 55, "o": 56, "p": 57, "q": 58, "r": 59, "s": 60, "t": 61, "u": 62, "v": 63, "w": 64, "x": 65, "y": 66, "z": 67, "\u00b4": 68, "\u00e1": 69, "\u00e9": 70, "\u00ed": 71, "\u00f1": 72, "\u00f3": 73, "\u00fa": 74, "\u00fc": 75, "\u00fd": 76, "\u2019": 77}, "ttj": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "&": 5, "'": 6, "-": 7, "1": 8, "4": 9, "7": 10, "A": 11, "B": 12, "C": 13, "D": 14, "E": 15, "F": 16, "G": 17, "H": 18, "I": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "W": 31, "Y": 32, "a": 33, "b": 34, "c": 35, "d": 36, "e": 37, "f": 38, "g": 39, "h": 40, "i": 41, "j": 42, "k": 43, "l": 44, "m": 45, "n": 46, "o": 47, "p": 48, "r": 49, "s": 50, "t": 51, "u": 52, "v": 53, "w": 54, "y": 55, "z": 56, "\u00f6": 57, "\u00fc": 58, "\u0119": 59}, "ukv": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "*": 6, "A": 7, "B": 8, "D": 9, "E": 10, "G": 11, "I": 12, "K": 13, "L": 14, "M": 15, "N": 16, "P": 17, "R": 18, "S": 19, "T": 20, "U": 21, "W": 22, "Y": 23, "a": 24, "b": 25, "c": 26, "d": 27, "e": 28, "f": 29, "g": 30, "h": 31, "i": 32, "j": 33, "k": 34, "l": 35, "m": 36, "n": 37, "o": 38, "p": 39, "r": 40, "s": 41, "t": 42, "u": 43, "v": 44, "w": 45, "y": 46, "z": 47, "\u00e4": 48, "\u00f3": 49, "\u00f5": 50, "\u00f6": 51, "\u014b": 52, "\u0169": 53, "\u0199": 54, "\u0257": 55, "\u0272": 56, "\u0301": 57, "\u0304": 58, "\u0307": 59, "\u0308": 60, "\u0327": 61, "\u0335": 62}, "ady": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, "A": 7, "B": 8, "C": 9, "D": 10, "E": 11, "F": 12, "G": 13, "H": 14, "I": 15, "J": 16, "K": 17, "L": 18, "M": 19, "N": 20, "P": 21, "R": 22, "S": 23, "T": 24, "U": 25, "V": 26, "X": 27, "Y": 28, "Z": 29, "a": 30, "b": 31, "c": 32, "d": 33, "e": 34, "f": 35, "g": 36, "h": 37, "i": 38, "j": 39, "k": 40, "l": 41, "m": 42, "n": 43, "o": 44, "p": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "x": 51, "y": 52, "z": 53, "\u00ab": 54, "\u00bb": 55, "\u00c7": 56, "\u00e7": 57, "\u00ea": 58, "\u00f6": 59, "\u00fc": 60, "\u011e": 61, "\u011f": 62, "\u0131": 63, "\u015e": 64, "\u015f": 65, "\u0410": 66, "\u0411": 67, "\u0412": 68, "\u0413": 69, "\u0414": 70, "\u0415": 71, "\u0416": 72, "\u0417": 73, "\u0418": 74, "\u041a": 75, "\u041b": 76, "\u041c": 77, "\u041d": 78, "\u041e": 79, "\u041f": 80, "\u0420": 81, "\u0421": 82, "\u0422": 83, "\u0423": 84, "\u0424": 85, "\u0425": 86, "\u0426": 87, "\u0427": 88, "\u0428": 89, "\u0429": 90, "\u042b": 91, "\u042d": 92, "\u042e": 93, "\u042f": 94, "\u0430": 95, "\u0431": 96, "\u0432": 97, "\u0433": 98, "\u0434": 99, "\u0435": 100, "\u0436": 101, "\u0437": 102, "\u0438": 103, "\u0439": 104, "\u043a": 105, "\u043b": 106, "\u043c": 107, "\u043d": 108, "\u043e": 109, "\u043f": 110, "\u0440": 111, "\u0441": 112, "\u0442": 113, "\u0443": 114, "\u0444": 115, "\u0445": 116, "\u0446": 117, "\u0447": 118, "\u0448": 119, "\u0449": 120, "\u044a": 121, "\u044b": 122, "\u044c": 123, "\u044d": 124, "\u044e": 125, "\u044f": 126, "\u0451": 127, "\u04c0": 128, "\u04cf": 129, "\u2013": 130, "\u2014": 131, "\u2026": 132}, "bas": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "-": 5, ".": 6, "A": 7, "B": 8, "D": 9, "E": 10, "F": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "O": 20, "P": 21, "S": 22, "T": 23, "U": 24, "W": 25, "Y": 26, "a": 27, "b": 28, "d": 29, "e": 30, "f": 31, "g": 32, "h": 33, "i": 34, "j": 35, "k": 36, "l": 37, "m": 38, "n": 39, "o": 40, "p": 41, "r": 42, "s": 43, "t": 44, "u": 45, "v": 46, "w": 47, "y": 48, "z": 49, "\u00c9": 50, "\u00d1": 51, "\u00d4": 52, "\u00e9": 53, "\u00f1": 54, "\u00f4": 55, "\u0301": 56, "\u0302": 57, "\u0303": 58, "\u0308": 59}, "kbd": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, ".": 7, "A": 8, "B": 9, "C": 10, "D": 11, "E": 12, "F": 13, "G": 14, "H": 15, "I": 16, "J": 17, "K": 18, "L": 19, "M": 20, "N": 21, "P": 22, "R": 23, "S": 24, "T": 25, "U": 26, "V": 27, "X": 28, "Y": 29, "Z": 30, "a": 31, "b": 32, "c": 33, "d": 34, "e": 35, "f": 36, "g": 37, "h": 38, "i": 39, "j": 40, "k": 41, "l": 42, "m": 43, "n": 44, "o": 45, "p": 46, "r": 47, "s": 48, "t": 49, "u": 50, "v": 51, "x": 52, "y": 53, "z": 54, "\u00ab": 55, "\u00bb": 56, "\u00c7": 57, "\u00e7": 58, "\u00ea": 59, "\u00fc": 60, "\u011e": 61, "\u011f": 62, "\u0131": 63, "\u015e": 64, "\u015f": 65, "\u0406": 66, "\u0410": 67, "\u0411": 68, "\u0412": 69, "\u0413": 70, "\u0414": 71, "\u0415": 72, "\u0416": 73, "\u0417": 74, "\u0418": 75, "\u0419": 76, "\u041a": 77, "\u041b": 78, "\u041c": 79, "\u041d": 80, "\u041e": 81, "\u041f": 82, "\u0420": 83, "\u0421": 84, "\u0422": 85, "\u0423": 86, "\u0424": 87, "\u0425": 88, "\u0426": 89, "\u0427": 90, "\u0428": 91, "\u0429": 92, "\u042b": 93, "\u042d": 94, "\u042e": 95, "\u042f": 96, "\u0430": 97, "\u0431": 98, "\u0432": 99, "\u0433": 100, "\u0434": 101, "\u0435": 102, "\u0436": 103, "\u0437": 104, "\u0438": 105, "\u0439": 106, "\u043a": 107, "\u043b": 108, "\u043c": 109, "\u043d": 110, "\u043e": 111, "\u043f": 112, "\u0440": 113, "\u0441": 114, "\u0442": 115, "\u0443": 116, "\u0444": 117, "\u0445": 118, "\u0446": 119, "\u0447": 120, "\u0448": 121, "\u0449": 122, "\u044a": 123, "\u044b": 124, "\u044c": 125, "\u044d": 126, "\u044e": 127, "\u044f": 128, "\u0451": 129, "\u04c0": 130, "\u04cf": 131, "\u2013": 132, "\u2014": 133, "\u2026": 134}, "qxp": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "'": 5, "-": 6, "A": 7, "B": 8, "C": 9, "D": 10, "E": 11, "G": 12, "H": 13, "I": 14, "J": 15, "K": 16, "L": 17, "M": 18, "N": 19, "P": 20, "Q": 21, "R": 22, "S": 23, "T": 24, "U": 25, "V": 26, "W": 27, "Y": 28, "a": 29, "b": 30, "c": 31, "d": 32, "e": 33, "f": 34, "g": 35, "h": 36, "i": 37, "j": 38, "k": 39, "l": 40, "m": 41, "n": 42, "o": 43, "p": 44, "q": 45, "r": 46, "s": 47, "t": 48, "u": 49, "v": 50, "w": 51, "y": 52, "z": 53, "\u00d1": 54, "\u00e1": 55, "\u00ed": 56, "\u00f1": 57, "\u00fa": 58, "\u2019": 59}, "ush": {"<pad>": 0, "<s>": 1, "</s>": 2, "<unk>": 3, "|": 4, "#": 5, "(": 6, ")": 7, "-": 8, "/": 9, "=": 10, "@": 11, "D": 12, "E": 13, "T": 14, "[": 15, "]": 16, "a": 17, "d": 18, "e": 19, "h": 20, "n": 21, "o": 22, "p": 23, "r": 24, "s": 25, "t": 26, "w": 27, "}": 28, "\u0436": 29, "\u060c": 30, "\u061b": 31, "\u061f": 32, "\u0622": 33, "\u0623": 34, "\u0624": 35, "\u0626": 36, "\u0627": 37, "\u0628": 38, "\u062a": 39, "\u062b": 40, "\u062c": 41, "\u062d": 42, "\u062e": 43, "\u062f": 44, "\u0630": 45, "\u0631": 46, "\u0632": 47, "\u0633": 48, "\u0634": 49, "\u0635": 50, "\u0636": 51, "\u0637": 52, "\u0638": 53, "\u0639": 54, "\u063a": 55, "\u0641": 56, "\u0642": 57, "\u0644": 58, "\u0645": 59, "\u0646": 60, "\u0647": 61, "\u0648": 62, "\u064b": 63, "\u064f": 64, "\u0650": 65, "\u0679": 66, "\u067e": 67, "\u0685": 68, "\u0686": 69, "\u0687": 70, "\u0688": 71, "\u0691": 72, "\u0698": 73, "\u0699": 74, "\u06a9": 75, "\u06af": 76, "\u06ba": 77, "\u06be": 78, "\u06c1": 79, "\u06cc": 80, "\u06d2": 81, "\u06d4": 82, "\u075c": 83, "\u2014": 84, "\u2018": 85, "\u2019": 86, "\u201c": 87, "\u201d": 88}}
requirements.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ --extra-index-url https://download.pytorch.org/whl/cu128
2
+
3
+ numpy==1.26.4
4
+ scipy==1.16.3
5
+ pandas==2.3.3
6
+ pyarrow==22.0.0
7
+ torch==2.9.0
8
+ torchaudio==2.9.0
9
+ torchcodec==0.8.1
10
+ torchao==0.14.1
11
+ transformers==4.57.1
12
+ tokenizers==0.22.1
13
+ datasets[audio]==4.3.0
14
+ evaluate==0.4.6
15
+ bitsandbytes==0.48.2
16
+ trl==0.23.0
17
+ sentencepiece==0.2.1
18
+ jiwer==4.0.0
19
+ protobuf==6.33.1
20
+ pyctcdecode==0.5.0
21
+ kenlm==0.3.0
solution.ipynb ADDED
@@ -0,0 +1,297 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "7fa2feb8",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Shared Task: Mozilla Common Voice Spontaneous Speech ASR\n",
9
+ "*https://www.codabench.org/competitions/10820/* \n",
10
+ "*1st place solution* \n",
11
+ "*Copyright (c) 2025 Igor Ivanov* \n",
12
+ "*Email: vecxoz@gmail.com* \n",
13
+ "*License: MIT* \n",
14
+ "*I will be happy to answer any questions.*"
15
+ ]
16
+ },
17
+ {
18
+ "cell_type": "markdown",
19
+ "id": "6dfa145d",
20
+ "metadata": {},
21
+ "source": [
22
+ "# Contents\n",
23
+ "\n",
24
+ "1. Solution summary \n",
25
+ "2. Installation \n",
26
+ "3. Inference"
27
+ ]
28
+ },
29
+ {
30
+ "cell_type": "markdown",
31
+ "id": "43ff13da-4175-4345-a880-d59e26bbb8d7",
32
+ "metadata": {},
33
+ "source": [
34
+ "# 1. Summary\n",
35
+ "\n",
36
+ "In this notebook we present an inference code and models for all 4 tasks of the Shared Task: Mozilla Common Voice Spontaneous Speech ASR. We did not use external data. Only Common Voice datasets were used: spontaneous speech for 21 languages, and scripted speech for 5 unseen languages. We fine-tuned the MMS model with adapter layers per language. \n",
37
+ "\n",
38
+ "Our best single model features the following improvements over the baseline. (1) More data. We used both training and validation subsets for fine-tuning. (2) Different pretrained checkpoint `facebook/mms-1b-l1107`. (3) Longer training for 30 epochs. (4) Learning rate schedules tailored for each language. (5) Beam search decoding with KenLM language model. For the small model subtask we used the same MMS models with pruning and 4-bit quantization. \n",
39
+ "\n",
40
+ "Our overall best submission is an ensemble of 4 models. (1) `facebook/mms-1b-l1107` fine-tuned using training data only. (2) `facebook/mms-1b-l1107` fine-tuned using all data (training and validation subsets). (3) `facebook/mms-1b-all` fine-tuned using all data. (4) `facebook/mms-1b-fl102` fine-tuned using all data. We applied the [ROVER](https://github.com/usnistgov/SCTK) ensembling method, which outperformed each single model. \n",
41
+ "\n",
42
+ "Please find all details in the paper."
43
+ ]
44
+ },
45
+ {
46
+ "cell_type": "markdown",
47
+ "id": "0ddd35e1-bbd4-4f56-a143-e8430cd7238c",
48
+ "metadata": {},
49
+ "source": [
50
+ "# 2. Installation\n",
51
+ "\n",
52
+ "## Directory structure\n",
53
+ "```\n",
54
+ "solution\n",
55
+ "|-- kenlm_models_order_3 # KenLM models per language\n",
56
+ "|-- mdc_asr_shared_task_test_data # Official test dataset\n",
57
+ "|-- models-01-mms-1b-l1107-tuned-commonvoice-train-data # `mms-1b-l1107` fine-tuned using training subsets only\n",
58
+ "|-- models-02-mms-1b-l1107-tuned-commonvoice-all-data # `mms-1b-l1107` fine-tuned using all data (best single model)\n",
59
+ "|-- models-03-mms-1b-all-tuned-commonvoice-all-data # `mms-1b-all` fine-tuned using all data\n",
60
+ "|-- models-04-mms-1b-fl102-tuned-commonvoice-all-data # `mms-1b-fl102` fine-tuned using all data\n",
61
+ "|-- models-05-mms-1b-l1107-tuned-commonvoice-all-data-pruned-quant # Pruned and quantized version of `models-02`\n",
62
+ "|-- SCTK # ROVER ensemble (source and binaries)\n",
63
+ "|-- ensemble.py\n",
64
+ "|-- infer.py\n",
65
+ "|-- LICENSE.txt\n",
66
+ "|-- README.md\n",
67
+ "|-- requirements.txt\n",
68
+ "|-- solution.ipynb\n",
69
+ "```"
70
+ ]
71
+ },
72
+ {
73
+ "cell_type": "markdown",
74
+ "id": "f734ecae-d352-439a-aa18-96fd2546702e",
75
+ "metadata": {},
76
+ "source": [
77
+ "## ROVER check\n",
78
+ "\n",
79
+ "We built a binary from source on Ubuntu 22.04. If you are using a similar system it should work out of the box. \n",
80
+ "Please run the command below. If a help message is displayed, then everything works. \n",
81
+ "If not, you have to build it from source, as shown below or in official documentation: https://github.com/usnistgov/SCTK"
82
+ ]
83
+ },
84
+ {
85
+ "cell_type": "code",
86
+ "execution_count": 13,
87
+ "id": "b3cf2628-be6c-48cb-9ebf-7d2955be1e5c",
88
+ "metadata": {},
89
+ "outputs": [
90
+ {
91
+ "name": "stdout",
92
+ "output_type": "stream",
93
+ "text": [
94
+ "rover: <OPTIONS>\n",
95
+ "rover Version: 0.1, SCTK Version: 1.3\n",
96
+ "Description: rover takes N input files and does an N-way DP alignment\n",
97
+ " on those files. The output is either a set of minimal cost\n",
98
+ " alignments, or a Voted output depending the -m option.\n",
99
+ "Input Options:\n",
100
+ " -h hypfile ctm\n",
101
+ " Define the hypothesis file and it's format. This option\n",
102
+ " must be used more than once.\n",
103
+ "Output Options:\n",
104
+ " -o outfile Define the output file. (Will be same format as hyps)\n",
105
+ " -f level Defines feedback mode, default is 1\n",
106
+ " -l width Defines the line width.\n",
107
+ "Alignment Options:\n",
108
+ " -m meth Execute method:\n",
109
+ " oracle -> output the fully alternated transcript\n",
110
+ " meth1 -> alpha = -a , conf = -c, choose highest avg\n",
111
+ " maxconf -> Same as meth1, but use the maximum conf\n",
112
+ " score for a CS set as the metric\n",
113
+ " avgconf -> alpha*Sum(WO) + (1-alpha)Sum(Conf(W))\n",
114
+ " maxconfa -> Same as maxconf, but conf=N(@)/S\n",
115
+ " putat -> Output the putative hit format\n",
116
+ " -s Do Case-sensitive alignments.\n",
117
+ " -T Use time information, (if available), to calculated word-to-\n",
118
+ " word distances based on times.\n",
119
+ "Processing Options:\n",
120
+ " -a alpha Default: 1.0\n",
121
+ " -c Null_conf\n",
122
+ " Default: 0.0\n",
123
+ "rover: Req'd Hyp File names, 2 or more\n",
124
+ "\n"
125
+ ]
126
+ }
127
+ ],
128
+ "source": [
129
+ "!./SCTK/bin/rover"
130
+ ]
131
+ },
132
+ {
133
+ "cell_type": "markdown",
134
+ "id": "35b537f7-36a3-40cd-9d79-892b150cd925",
135
+ "metadata": {},
136
+ "source": [
137
+ "## ROVER installation (if needed)\n",
138
+ "\n",
139
+ "Compilation takes about 2 minutes."
140
+ ]
141
+ },
142
+ {
143
+ "cell_type": "markdown",
144
+ "id": "cdaba278-3472-4289-8dfb-b1017310064e",
145
+ "metadata": {},
146
+ "source": [
147
+ "```\n",
148
+ "!mv SCTK SCTK_prebuilt\n",
149
+ "!git clone https://github.com/usnistgov/SCTK\n",
150
+ "%cd SCTK\n",
151
+ "\n",
152
+ "!make config\n",
153
+ "!make all\n",
154
+ "!make check\n",
155
+ "!make install\n",
156
+ "!make doc\n",
157
+ " \n",
158
+ "%cd ..\n",
159
+ "```"
160
+ ]
161
+ },
162
+ {
163
+ "cell_type": "markdown",
164
+ "id": "8108da48-12aa-4663-9c20-3028b9b8117e",
165
+ "metadata": {},
166
+ "source": [
167
+ "## Package installation\n",
168
+ "\n",
169
+ "**Hardware:**\n",
170
+ "* Core-i5 CPU\n",
171
+ "* 32 GB RAM\n",
172
+ "* 500 GB SSD\n",
173
+ "* RTX-3090-24GB GPU\n",
174
+ "\n",
175
+ "**System:**\n",
176
+ "* Ubuntu 22.04\n",
177
+ "* Python 3.12\n",
178
+ "* CUDA 12.8\n",
179
+ "* PyTorch 2.9.0\n",
180
+ "\n",
181
+ "**Note.** During the training phase we used Flash Attention 2 (`flash_attn==2.7.4.post1`), but for inference we did not use it. So we did not include it in the `requirements.txt`, given that the installation (compilation) of this version takes about 2 hours on Core-i5, 12th Gen."
182
+ ]
183
+ },
184
+ {
185
+ "cell_type": "code",
186
+ "execution_count": null,
187
+ "id": "b5444ca5-e719-4e40-a851-1a2fc4900542",
188
+ "metadata": {},
189
+ "outputs": [],
190
+ "source": [
191
+ "!pip install -r requirements.txt"
192
+ ]
193
+ },
194
+ {
195
+ "cell_type": "markdown",
196
+ "id": "eda488d4-8e09-4c22-9ff4-3675ed3bc9dc",
197
+ "metadata": {},
198
+ "source": [
199
+ "# 3. Inference\n",
200
+ "\n",
201
+ "The distribution archive already has an official test dataset `mdc_asr_shared_task_test_data`, so inference should run out of the box. \n",
202
+ "If you want to infer a different dataset, just set the `input_dir` argument of both scripts `infer.py` and `ensemble.py`. \n",
203
+ "\n",
204
+ "Total inference time is about 3 hours on `RTX-3090-24GB` GPU.\n",
205
+ "\n",
206
+ "Script `infer.py` will create the following directories. \n",
207
+ "Directories with `_ctm` suffix contain intermediate `.ctm` files which will be used for the ensemble. \n",
208
+ "Directories with `_submission` suffix contain `.tsv` files ready for scoring. Specifically, `output_2_submission` is the results from the best single model, and `output_5_submission` is the results from the small model. \n",
209
+ "Please note, that all directories with `_submission` suffix contain standard subdirectories `multilingual-general` and `unseen-langs`. \n",
210
+ "```\n",
211
+ "|-- output_1_ctm\n",
212
+ "|-- output_1_submission\n",
213
+ "|-- output_2_ctm\n",
214
+ "|-- output_2_submission\n",
215
+ "|-- output_3_ctm\n",
216
+ "|-- output_3_submission\n",
217
+ "|-- output_4_ctm\n",
218
+ "|-- output_4_submission\n",
219
+ "|-- output_5_ctm\n",
220
+ "|-- output_5_submission\n",
221
+ "```\n",
222
+ "\n",
223
+ "Script `ensemble.py` will create the following. \n",
224
+ "`submission_single_model` is the final submission from the best single model corresponding to Codabench submission `ID 452610`. \n",
225
+ "`submission_ensemble` is final submission from the ensemble corresponding to Codabench submission `ID 456691`. \n",
226
+ "\n",
227
+ "```\n",
228
+ "|-- submission_ensemble\n",
229
+ "|-- submission_single_model\n",
230
+ "|-- submission_ensemble.zip\n",
231
+ "|-- submission_single_model.zip\n",
232
+ "```"
233
+ ]
234
+ },
235
+ {
236
+ "cell_type": "code",
237
+ "execution_count": null,
238
+ "id": "79e8f7bc-d529-411f-a09f-08e8ca210a0f",
239
+ "metadata": {},
240
+ "outputs": [],
241
+ "source": [
242
+ "!python infer.py \\\n",
243
+ "--input_dir=mdc_asr_shared_task_test_data \\\n",
244
+ "--kenlm_model=kenlm_models_order_3 \\\n",
245
+ "--beam_width=100 \\\n",
246
+ "--attn_implementation=sdpa \\\n",
247
+ "--use_amp=0 \\\n",
248
+ "--device=cuda"
249
+ ]
250
+ },
251
+ {
252
+ "cell_type": "code",
253
+ "execution_count": null,
254
+ "id": "65044956-7435-4bbf-b419-7ac437de9e00",
255
+ "metadata": {},
256
+ "outputs": [],
257
+ "source": [
258
+ "!python ensemble.py \\\n",
259
+ "--input_dir=mdc_asr_shared_task_test_data \\\n",
260
+ "--output_dir_single=submission_single_model \\\n",
261
+ "--output_dir_ensemble=submission_ensemble \\\n",
262
+ "--rover_path=./SCTK/bin/rover"
263
+ ]
264
+ },
265
+ {
266
+ "cell_type": "code",
267
+ "execution_count": 5,
268
+ "id": "f3efa9c1",
269
+ "metadata": {},
270
+ "outputs": [],
271
+ "source": [
272
+ "# END"
273
+ ]
274
+ }
275
+ ],
276
+ "metadata": {
277
+ "kernelspec": {
278
+ "display_name": "Python 3 (ipykernel)",
279
+ "language": "python",
280
+ "name": "python3"
281
+ },
282
+ "language_info": {
283
+ "codemirror_mode": {
284
+ "name": "ipython",
285
+ "version": 3
286
+ },
287
+ "file_extension": ".py",
288
+ "mimetype": "text/x-python",
289
+ "name": "python",
290
+ "nbconvert_exporter": "python",
291
+ "pygments_lexer": "ipython3",
292
+ "version": "3.12.11"
293
+ }
294
+ },
295
+ "nbformat": 4,
296
+ "nbformat_minor": 5
297
+ }