phoonnx 0.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- phoonnx/__init__.py +0 -0
- phoonnx/config.py +490 -0
- phoonnx/locale/ca/phonetic_spellings.txt +2 -0
- phoonnx/locale/en/phonetic_spellings.txt +1 -0
- phoonnx/locale/gl/phonetic_spellings.txt +2 -0
- phoonnx/locale/pt/phonetic_spellings.txt +2 -0
- phoonnx/phoneme_ids.py +453 -0
- phoonnx/phonemizers/__init__.py +45 -0
- phoonnx/phonemizers/ar.py +42 -0
- phoonnx/phonemizers/base.py +216 -0
- phoonnx/phonemizers/en.py +250 -0
- phoonnx/phonemizers/fa.py +46 -0
- phoonnx/phonemizers/gl.py +142 -0
- phoonnx/phonemizers/he.py +67 -0
- phoonnx/phonemizers/ja.py +119 -0
- phoonnx/phonemizers/ko.py +97 -0
- phoonnx/phonemizers/mul.py +606 -0
- phoonnx/phonemizers/vi.py +44 -0
- phoonnx/phonemizers/zh.py +308 -0
- phoonnx/thirdparty/__init__.py +0 -0
- phoonnx/thirdparty/arpa2ipa.py +249 -0
- phoonnx/thirdparty/cotovia/cotovia_aarch64 +0 -0
- phoonnx/thirdparty/cotovia/cotovia_x86_64 +0 -0
- phoonnx/thirdparty/hangul2ipa.py +783 -0
- phoonnx/thirdparty/ko_tables/aspiration.csv +20 -0
- phoonnx/thirdparty/ko_tables/assimilation.csv +31 -0
- phoonnx/thirdparty/ko_tables/double_coda.csv +17 -0
- phoonnx/thirdparty/ko_tables/hanja.tsv +8525 -0
- phoonnx/thirdparty/ko_tables/ipa.csv +22 -0
- phoonnx/thirdparty/ko_tables/neutralization.csv +11 -0
- phoonnx/thirdparty/ko_tables/tensification.csv +56 -0
- phoonnx/thirdparty/ko_tables/yale.csv +22 -0
- phoonnx/thirdparty/kog2p/__init__.py +385 -0
- phoonnx/thirdparty/kog2p/rulebook.txt +212 -0
- phoonnx/thirdparty/mantoq/__init__.py +67 -0
- phoonnx/thirdparty/mantoq/buck/__init__.py +0 -0
- phoonnx/thirdparty/mantoq/buck/phonetise_buckwalter.py +569 -0
- phoonnx/thirdparty/mantoq/buck/symbols.py +64 -0
- phoonnx/thirdparty/mantoq/buck/tokenization.py +105 -0
- phoonnx/thirdparty/mantoq/num2words.py +37 -0
- phoonnx/thirdparty/mantoq/pyarabic/__init__.py +12 -0
- phoonnx/thirdparty/mantoq/pyarabic/arabrepr.py +64 -0
- phoonnx/thirdparty/mantoq/pyarabic/araby.py +1647 -0
- phoonnx/thirdparty/mantoq/pyarabic/named_const.py +227 -0
- phoonnx/thirdparty/mantoq/pyarabic/normalize.py +161 -0
- phoonnx/thirdparty/mantoq/pyarabic/number.py +826 -0
- phoonnx/thirdparty/mantoq/pyarabic/number_const.py +1704 -0
- phoonnx/thirdparty/mantoq/pyarabic/stack.py +52 -0
- phoonnx/thirdparty/mantoq/pyarabic/trans.py +517 -0
- phoonnx/thirdparty/mantoq/unicode_symbol2label.py +4173 -0
- phoonnx/thirdparty/tashkeel/LICENSE +22 -0
- phoonnx/thirdparty/tashkeel/SOURCE +1 -0
- phoonnx/thirdparty/tashkeel/__init__.py +212 -0
- phoonnx/thirdparty/tashkeel/hint_id_map.json +18 -0
- phoonnx/thirdparty/tashkeel/input_id_map.json +56 -0
- phoonnx/thirdparty/tashkeel/model.onnx +0 -0
- phoonnx/thirdparty/tashkeel/target_id_map.json +17 -0
- phoonnx/thirdparty/zh_num.py +238 -0
- phoonnx/util.py +705 -0
- phoonnx/version.py +6 -0
- phoonnx/voice.py +521 -0
- phoonnx-0.0.0.dist-info/METADATA +255 -0
- phoonnx-0.0.0.dist-info/RECORD +86 -0
- phoonnx-0.0.0.dist-info/WHEEL +5 -0
- phoonnx-0.0.0.dist-info/top_level.txt +2 -0
- phoonnx_train/__main__.py +151 -0
- phoonnx_train/export_onnx.py +109 -0
- phoonnx_train/norm_audio/__init__.py +92 -0
- phoonnx_train/norm_audio/trim.py +54 -0
- phoonnx_train/norm_audio/vad.py +54 -0
- phoonnx_train/preprocess.py +420 -0
- phoonnx_train/vits/__init__.py +0 -0
- phoonnx_train/vits/attentions.py +427 -0
- phoonnx_train/vits/commons.py +147 -0
- phoonnx_train/vits/config.py +330 -0
- phoonnx_train/vits/dataset.py +214 -0
- phoonnx_train/vits/lightning.py +352 -0
- phoonnx_train/vits/losses.py +58 -0
- phoonnx_train/vits/mel_processing.py +139 -0
- phoonnx_train/vits/models.py +732 -0
- phoonnx_train/vits/modules.py +527 -0
- phoonnx_train/vits/monotonic_align/__init__.py +20 -0
- phoonnx_train/vits/monotonic_align/setup.py +13 -0
- phoonnx_train/vits/transforms.py +212 -0
- phoonnx_train/vits/utils.py +16 -0
- phoonnx_train/vits/wavfile.py +860 -0
@@ -0,0 +1,255 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: phoonnx
|
3
|
+
Version: 0.0.0
|
4
|
+
Home-page: https://github.com/TigreGotico/phoonnx
|
5
|
+
Author: JarbasAi
|
6
|
+
Author-email: jarbasai@mailfence.com
|
7
|
+
Requires-Dist: numpy
|
8
|
+
Requires-Dist: onnxruntime
|
9
|
+
Requires-Dist: quebra-frases
|
10
|
+
Requires-Dist: langcodes
|
11
|
+
Requires-Dist: ovos-number-parser>=0.3.3a1
|
12
|
+
Requires-Dist: ovos-date-parser>=0.6.4a1
|
13
|
+
Provides-Extra: aa
|
14
|
+
Requires-Dist: epitran; extra == "aa"
|
15
|
+
Provides-Extra: aii
|
16
|
+
Requires-Dist: epitran; extra == "aii"
|
17
|
+
Provides-Extra: am
|
18
|
+
Requires-Dist: epitran; extra == "am"
|
19
|
+
Provides-Extra: ar
|
20
|
+
Requires-Dist: gruut[ar]<3.0,>=2.3.0; extra == "ar"
|
21
|
+
Requires-Dist: epitran; extra == "ar"
|
22
|
+
Provides-Extra: av
|
23
|
+
Requires-Dist: epitran; extra == "av"
|
24
|
+
Provides-Extra: az
|
25
|
+
Requires-Dist: epitran; extra == "az"
|
26
|
+
Provides-Extra: bn
|
27
|
+
Requires-Dist: epitran; extra == "bn"
|
28
|
+
Provides-Extra: ca
|
29
|
+
Requires-Dist: gruut[ca]<3.0,>=2.3.0; extra == "ca"
|
30
|
+
Requires-Dist: epitran; extra == "ca"
|
31
|
+
Provides-Extra: ceb
|
32
|
+
Requires-Dist: epitran; extra == "ceb"
|
33
|
+
Provides-Extra: cjy
|
34
|
+
Requires-Dist: epitran; extra == "cjy"
|
35
|
+
Provides-Extra: ckb
|
36
|
+
Requires-Dist: epitran; extra == "ckb"
|
37
|
+
Provides-Extra: cs
|
38
|
+
Requires-Dist: gruut[cs]<3.0,>=2.3.0; extra == "cs"
|
39
|
+
Requires-Dist: epitran; extra == "cs"
|
40
|
+
Provides-Extra: csb
|
41
|
+
Requires-Dist: epitran; extra == "csb"
|
42
|
+
Provides-Extra: de
|
43
|
+
Requires-Dist: gruut[de]<3.0,>=2.3.0; extra == "de"
|
44
|
+
Requires-Dist: epitran; extra == "de"
|
45
|
+
Provides-Extra: en
|
46
|
+
Requires-Dist: epitran; extra == "en"
|
47
|
+
Requires-Dist: gruut[en]<3.0,>=2.3.0; extra == "en"
|
48
|
+
Requires-Dist: misaki[en]; extra == "en"
|
49
|
+
Provides-Extra: eo
|
50
|
+
Requires-Dist: epitran; extra == "eo"
|
51
|
+
Provides-Extra: es
|
52
|
+
Requires-Dist: gruut[es]<3.0,>=2.3.0; extra == "es"
|
53
|
+
Requires-Dist: epitran; extra == "es"
|
54
|
+
Provides-Extra: et
|
55
|
+
Requires-Dist: epitran; extra == "et"
|
56
|
+
Provides-Extra: eu
|
57
|
+
Requires-Dist: epitran; extra == "eu"
|
58
|
+
Provides-Extra: fa
|
59
|
+
Requires-Dist: persian-phonemizer; extra == "fa"
|
60
|
+
Requires-Dist: gruut[fa]<3.0,>=2.3.0; extra == "fa"
|
61
|
+
Requires-Dist: epitran; extra == "fa"
|
62
|
+
Provides-Extra: ff
|
63
|
+
Requires-Dist: epitran; extra == "ff"
|
64
|
+
Provides-Extra: fi
|
65
|
+
Requires-Dist: epitran; extra == "fi"
|
66
|
+
Provides-Extra: fil
|
67
|
+
Requires-Dist: epitran; extra == "fil"
|
68
|
+
Provides-Extra: fr
|
69
|
+
Requires-Dist: gruut[fr]<3.0,>=2.3.0; extra == "fr"
|
70
|
+
Requires-Dist: epitran; extra == "fr"
|
71
|
+
Provides-Extra: gan
|
72
|
+
Requires-Dist: epitran; extra == "gan"
|
73
|
+
Provides-Extra: gl
|
74
|
+
Requires-Dist: epitran; extra == "gl"
|
75
|
+
Provides-Extra: got
|
76
|
+
Requires-Dist: epitran; extra == "got"
|
77
|
+
Provides-Extra: ha
|
78
|
+
Requires-Dist: epitran; extra == "ha"
|
79
|
+
Provides-Extra: hak
|
80
|
+
Requires-Dist: epitran; extra == "hak"
|
81
|
+
Provides-Extra: he
|
82
|
+
Requires-Dist: phonikud-onnx; extra == "he"
|
83
|
+
Requires-Dist: phonikud; extra == "he"
|
84
|
+
Provides-Extra: hi
|
85
|
+
Requires-Dist: epitran; extra == "hi"
|
86
|
+
Provides-Extra: hmn
|
87
|
+
Requires-Dist: epitran; extra == "hmn"
|
88
|
+
Provides-Extra: hr
|
89
|
+
Requires-Dist: epitran; extra == "hr"
|
90
|
+
Provides-Extra: hsn
|
91
|
+
Requires-Dist: epitran; extra == "hsn"
|
92
|
+
Provides-Extra: hu
|
93
|
+
Requires-Dist: epitran; extra == "hu"
|
94
|
+
Provides-Extra: id
|
95
|
+
Requires-Dist: epitran; extra == "id"
|
96
|
+
Provides-Extra: ilo
|
97
|
+
Requires-Dist: epitran; extra == "ilo"
|
98
|
+
Provides-Extra: it
|
99
|
+
Requires-Dist: gruut[it]<3.0,>=2.3.0; extra == "it"
|
100
|
+
Requires-Dist: epitran; extra == "it"
|
101
|
+
Provides-Extra: ja
|
102
|
+
Requires-Dist: pyopenjtalk; extra == "ja"
|
103
|
+
Requires-Dist: pykakasi; extra == "ja"
|
104
|
+
Requires-Dist: cutlet; extra == "ja"
|
105
|
+
Requires-Dist: unidic-lite; extra == "ja"
|
106
|
+
Requires-Dist: misaki[ja]; extra == "ja"
|
107
|
+
Provides-Extra: jam
|
108
|
+
Requires-Dist: epitran; extra == "jam"
|
109
|
+
Provides-Extra: jv
|
110
|
+
Requires-Dist: epitran; extra == "jv"
|
111
|
+
Provides-Extra: ka
|
112
|
+
Requires-Dist: epitran; extra == "ka"
|
113
|
+
Provides-Extra: kbd
|
114
|
+
Requires-Dist: epitran; extra == "kbd"
|
115
|
+
Provides-Extra: kk
|
116
|
+
Requires-Dist: epitran; extra == "kk"
|
117
|
+
Provides-Extra: km
|
118
|
+
Requires-Dist: epitran; extra == "km"
|
119
|
+
Provides-Extra: ko
|
120
|
+
Requires-Dist: g2pk; extra == "ko"
|
121
|
+
Requires-Dist: epitran; extra == "ko"
|
122
|
+
Requires-Dist: misaki[ko]; extra == "ko"
|
123
|
+
Provides-Extra: ku
|
124
|
+
Requires-Dist: epitran; extra == "ku"
|
125
|
+
Provides-Extra: ky
|
126
|
+
Requires-Dist: epitran; extra == "ky"
|
127
|
+
Provides-Extra: lb
|
128
|
+
Requires-Dist: gruut[lb]<3.0,>=2.3.0; extra == "lb"
|
129
|
+
Provides-Extra: lez
|
130
|
+
Requires-Dist: epitran; extra == "lez"
|
131
|
+
Provides-Extra: lij
|
132
|
+
Requires-Dist: epitran; extra == "lij"
|
133
|
+
Provides-Extra: lo
|
134
|
+
Requires-Dist: epitran; extra == "lo"
|
135
|
+
Provides-Extra: lsm
|
136
|
+
Requires-Dist: epitran; extra == "lsm"
|
137
|
+
Provides-Extra: lt
|
138
|
+
Requires-Dist: epitran; extra == "lt"
|
139
|
+
Provides-Extra: luy
|
140
|
+
Requires-Dist: epitran; extra == "luy"
|
141
|
+
Provides-Extra: lv
|
142
|
+
Requires-Dist: epitran; extra == "lv"
|
143
|
+
Provides-Extra: mi
|
144
|
+
Requires-Dist: epitran; extra == "mi"
|
145
|
+
Provides-Extra: ml
|
146
|
+
Requires-Dist: epitran; extra == "ml"
|
147
|
+
Provides-Extra: mr
|
148
|
+
Requires-Dist: epitran; extra == "mr"
|
149
|
+
Provides-Extra: ms
|
150
|
+
Requires-Dist: epitran; extra == "ms"
|
151
|
+
Provides-Extra: mt
|
152
|
+
Requires-Dist: epitran; extra == "mt"
|
153
|
+
Provides-Extra: my
|
154
|
+
Requires-Dist: epitran; extra == "my"
|
155
|
+
Provides-Extra: nan
|
156
|
+
Requires-Dist: epitran; extra == "nan"
|
157
|
+
Provides-Extra: nl
|
158
|
+
Requires-Dist: gruut[nl]<3.0,>=2.3.0; extra == "nl"
|
159
|
+
Provides-Extra: ny
|
160
|
+
Requires-Dist: epitran; extra == "ny"
|
161
|
+
Provides-Extra: om
|
162
|
+
Requires-Dist: epitran; extra == "om"
|
163
|
+
Provides-Extra: or
|
164
|
+
Requires-Dist: epitran; extra == "or"
|
165
|
+
Provides-Extra: pa
|
166
|
+
Requires-Dist: epitran; extra == "pa"
|
167
|
+
Provides-Extra: pl
|
168
|
+
Requires-Dist: epitran; extra == "pl"
|
169
|
+
Provides-Extra: pt
|
170
|
+
Requires-Dist: gruut[pt]<3.0,>=2.3.0; extra == "pt"
|
171
|
+
Requires-Dist: epitran; extra == "pt"
|
172
|
+
Provides-Extra: quy
|
173
|
+
Requires-Dist: epitran; extra == "quy"
|
174
|
+
Provides-Extra: rn
|
175
|
+
Requires-Dist: epitran; extra == "rn"
|
176
|
+
Provides-Extra: ro
|
177
|
+
Requires-Dist: epitran; extra == "ro"
|
178
|
+
Provides-Extra: ru
|
179
|
+
Requires-Dist: gruut[ru]<3.0,>=2.3.0; extra == "ru"
|
180
|
+
Requires-Dist: epitran; extra == "ru"
|
181
|
+
Provides-Extra: rw
|
182
|
+
Requires-Dist: epitran; extra == "rw"
|
183
|
+
Provides-Extra: sg
|
184
|
+
Requires-Dist: epitran; extra == "sg"
|
185
|
+
Provides-Extra: si
|
186
|
+
Requires-Dist: epitran; extra == "si"
|
187
|
+
Provides-Extra: sn
|
188
|
+
Requires-Dist: epitran; extra == "sn"
|
189
|
+
Provides-Extra: so
|
190
|
+
Requires-Dist: epitran; extra == "so"
|
191
|
+
Provides-Extra: sq
|
192
|
+
Requires-Dist: epitran; extra == "sq"
|
193
|
+
Provides-Extra: sr
|
194
|
+
Requires-Dist: epitran; extra == "sr"
|
195
|
+
Provides-Extra: sv
|
196
|
+
Requires-Dist: gruut[sv]<3.0,>=2.3.0; extra == "sv"
|
197
|
+
Requires-Dist: epitran; extra == "sv"
|
198
|
+
Provides-Extra: sw
|
199
|
+
Requires-Dist: gruut[sw]<3.0,>=2.3.0; extra == "sw"
|
200
|
+
Requires-Dist: epitran; extra == "sw"
|
201
|
+
Provides-Extra: ta
|
202
|
+
Requires-Dist: epitran; extra == "ta"
|
203
|
+
Provides-Extra: te
|
204
|
+
Requires-Dist: epitran; extra == "te"
|
205
|
+
Provides-Extra: tg
|
206
|
+
Requires-Dist: epitran; extra == "tg"
|
207
|
+
Provides-Extra: th
|
208
|
+
Requires-Dist: epitran; extra == "th"
|
209
|
+
Provides-Extra: ti
|
210
|
+
Requires-Dist: epitran; extra == "ti"
|
211
|
+
Provides-Extra: tk
|
212
|
+
Requires-Dist: epitran; extra == "tk"
|
213
|
+
Provides-Extra: tpi
|
214
|
+
Requires-Dist: epitran; extra == "tpi"
|
215
|
+
Provides-Extra: tr
|
216
|
+
Requires-Dist: epitran; extra == "tr"
|
217
|
+
Provides-Extra: uew
|
218
|
+
Requires-Dist: epitran; extra == "uew"
|
219
|
+
Provides-Extra: ug
|
220
|
+
Requires-Dist: epitran; extra == "ug"
|
221
|
+
Provides-Extra: uk
|
222
|
+
Requires-Dist: epitran; extra == "uk"
|
223
|
+
Provides-Extra: ur
|
224
|
+
Requires-Dist: epitran; extra == "ur"
|
225
|
+
Provides-Extra: uz
|
226
|
+
Requires-Dist: epitran; extra == "uz"
|
227
|
+
Provides-Extra: vi
|
228
|
+
Requires-Dist: misaki[vi]; extra == "vi"
|
229
|
+
Requires-Dist: epitran; extra == "vi"
|
230
|
+
Requires-Dist: viphoneme; extra == "vi"
|
231
|
+
Requires-Dist: underthesea; extra == "vi"
|
232
|
+
Requires-Dist: eng-to-ipa; extra == "vi"
|
233
|
+
Requires-Dist: vinorm; extra == "vi"
|
234
|
+
Provides-Extra: wuu
|
235
|
+
Requires-Dist: epitran; extra == "wuu"
|
236
|
+
Provides-Extra: xh
|
237
|
+
Requires-Dist: epitran; extra == "xh"
|
238
|
+
Provides-Extra: yo
|
239
|
+
Requires-Dist: epitran; extra == "yo"
|
240
|
+
Provides-Extra: yue
|
241
|
+
Requires-Dist: epitran; extra == "yue"
|
242
|
+
Provides-Extra: za
|
243
|
+
Requires-Dist: epitran; extra == "za"
|
244
|
+
Provides-Extra: zh
|
245
|
+
Requires-Dist: g2pM; extra == "zh"
|
246
|
+
Requires-Dist: misaki[zh]; extra == "zh"
|
247
|
+
Requires-Dist: epitran; extra == "zh"
|
248
|
+
Requires-Dist: pypinyin; extra == "zh"
|
249
|
+
Requires-Dist: xpinyin; extra == "zh"
|
250
|
+
Requires-Dist: pinyin-to-ipa; extra == "zh"
|
251
|
+
Requires-Dist: jieba; extra == "zh"
|
252
|
+
Requires-Dist: cn2an; extra == "zh"
|
253
|
+
Provides-Extra: zu
|
254
|
+
Requires-Dist: epitran; extra == "zu"
|
255
|
+
|
@@ -0,0 +1,86 @@
|
|
1
|
+
phoonnx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
phoonnx/config.py,sha256=bO7dx2tfLotkohict3UKlCEVm-BRFB1feYYR1HarUkk,19382
|
3
|
+
phoonnx/phoneme_ids.py,sha256=FiNgZwV6naEsBh6XwFLh3_FyOgPiCsK9qo7S0v-CmI4,13667
|
4
|
+
phoonnx/util.py,sha256=3DqSRwsF498oP_uFVZnriP9PyjXhCfEy97Ey0ePTEqA,25042
|
5
|
+
phoonnx/version.py,sha256=peYHqopxd1W3l3PTIN2GzerAUX8Su-_tfbPZbZ4og3o,114
|
6
|
+
phoonnx/voice.py,sha256=FR_LafK1vSi_anPERJjZBuH3Bb9vUIof0MAW6TnALlA,20024
|
7
|
+
phoonnx/locale/ca/phonetic_spellings.txt,sha256=igv3t7jxLSRE5GHsdn57HOpxiWNcEmECPql6m02wbO0,47
|
8
|
+
phoonnx/locale/en/phonetic_spellings.txt,sha256=xGQlWOABLzbttpQvopl9CU-NnwEJRqKx8iuylsdUoQA,27
|
9
|
+
phoonnx/locale/gl/phonetic_spellings.txt,sha256=igv3t7jxLSRE5GHsdn57HOpxiWNcEmECPql6m02wbO0,47
|
10
|
+
phoonnx/locale/pt/phonetic_spellings.txt,sha256=KntS8QMynEJ5A3Clvcjq4qlmL-ThSbhfD6v0nKSrlqs,49
|
11
|
+
phoonnx/phonemizers/__init__.py,sha256=QGBZk0QUgJdg2MwUWY9Kpk6ucwrEJYtHb07YcNvXCV4,1647
|
12
|
+
phoonnx/phonemizers/ar.py,sha256=W3wJ_GI8gV3qb9fng5xeazX8ZlY-aNSywATTdxryiZg,1257
|
13
|
+
phoonnx/phonemizers/base.py,sha256=yPg6-dvscYpl3rR3JEULG1PRF-i8DWC_C3HAZGLbxOo,7648
|
14
|
+
phoonnx/phonemizers/en.py,sha256=N2SVoVhplQao7Ej5TXbxJU-YkAgkY0Fr9iYBFnsjFSE,9271
|
15
|
+
phoonnx/phonemizers/fa.py,sha256=d_DZM2wqomf4gcRH_rFcNA3VkQWKHru8vwBwaNG8Ll8,1452
|
16
|
+
phoonnx/phonemizers/gl.py,sha256=05DX_9lQa3Uws3RPcWPtw0nXX6Vo3bybrZkpMErguTo,5529
|
17
|
+
phoonnx/phonemizers/he.py,sha256=KbRI3XRZa8UtJdNWmn_fd-t5lmFSIp4Mw8UgcO5l-Po,2211
|
18
|
+
phoonnx/phonemizers/ja.py,sha256=Xojsrt715ihnIiEk9K6giYqDo9Iykw-SHfIidrHtHSU,3834
|
19
|
+
phoonnx/phonemizers/ko.py,sha256=kwWoOFqanCB8kv2JRx17A0hP78P1wbXlX6e8VBn1ezQ,2989
|
20
|
+
phoonnx/phonemizers/mul.py,sha256=37G_G58aGnVpdEm9vZEAOdGEHJ9TLBE17bU1HFvQ2rU,27291
|
21
|
+
phoonnx/phonemizers/vi.py,sha256=_XJc-Xeawr1Lxr7o8mE_hJao1aGcj4g01XYAOxC_Scg,1311
|
22
|
+
phoonnx/phonemizers/zh.py,sha256=88Ywq8h9LDanlyz8RHjRSCY_PRK_Dq808tBADyrgaP8,9657
|
23
|
+
phoonnx/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
+
phoonnx/thirdparty/arpa2ipa.py,sha256=Uj1G5NgP5oBBfSm26LGB8QoumdT-NqCLQTZHT165-_o,5850
|
25
|
+
phoonnx/thirdparty/hangul2ipa.py,sha256=e2c0WOy5lFMcf6GS7pNqIbauMKBX07S84lCczZAZJGA,27518
|
26
|
+
phoonnx/thirdparty/zh_num.py,sha256=SESA6gvSJW3LZ0FLoybXn2SpbxqhQTi9Tg_U2IZ5JYY,7147
|
27
|
+
phoonnx/thirdparty/cotovia/cotovia_aarch64,sha256=BsAWZN452Lm9kDU4i6rQGHFSlmxP3GfHRKhbJMUQrfA,6764592
|
28
|
+
phoonnx/thirdparty/cotovia/cotovia_x86_64,sha256=-6BNx_cd49nnDreOAsGtVtePs_X76esrqcNAfmksN1o,1379832
|
29
|
+
phoonnx/thirdparty/ko_tables/aspiration.csv,sha256=Dg3W1rr3qe9DDEMSFx5tIIg-WbqOZw9vO1Skg7q2Pmo,219
|
30
|
+
phoonnx/thirdparty/ko_tables/assimilation.csv,sha256=WJYLvUitjzAptAw06X620t0Rd25-GU_GRVf8IeaQ_tM,430
|
31
|
+
phoonnx/thirdparty/ko_tables/double_coda.csv,sha256=BNr5coYgzNN_P3DmV1Dtj6-UUqlFoe1oC-IiATHBi48,253
|
32
|
+
phoonnx/thirdparty/ko_tables/hanja.tsv,sha256=Spwa87HqgCh_sD6xskJLq6A3Sw9AVBFtTloqk7udC6M,93835
|
33
|
+
phoonnx/thirdparty/ko_tables/ipa.csv,sha256=y_MFDCmCsJJ-Szu-3xjqXUvydBCVEr4muWsPzRN8aTU,316
|
34
|
+
phoonnx/thirdparty/ko_tables/neutralization.csv,sha256=XKgdPy5G7wHXflnThUimDYX-7RwGuJfMZesWl4w44sA,90
|
35
|
+
phoonnx/thirdparty/ko_tables/tensification.csv,sha256=V4Xf3A1G1iMBzwZevBKQuk_lPa-U7a7Ra__mz3d3VpQ,780
|
36
|
+
phoonnx/thirdparty/ko_tables/yale.csv,sha256=UhtDbPXRAAyAKoQMXmwhVBwJ5pfZQ_Duk28qBtRUdsU,297
|
37
|
+
phoonnx/thirdparty/kog2p/__init__.py,sha256=yLizadg7RXM-3dQyftD4XSk8r2jb0QOlHQ6as9uUa4U,10267
|
38
|
+
phoonnx/thirdparty/kog2p/rulebook.txt,sha256=FQE3nej8wojl6ilVUBYo7f8bIk0Hjci-B7HPXhM-xNc,9303
|
39
|
+
phoonnx/thirdparty/mantoq/__init__.py,sha256=4kZuZ3RA5ZhQwTOQGkHF9jQYSvetNTn9uWi5Dsx101k,2106
|
40
|
+
phoonnx/thirdparty/mantoq/num2words.py,sha256=9-ncMtxV1FusD9rNur1lu7l2DWhwUwI1mFiqiPSMH_Q,1264
|
41
|
+
phoonnx/thirdparty/mantoq/unicode_symbol2label.py,sha256=CeZNv7qWeQS4Ejvz-sKgK--5eNYdVVv04WHPaOeK4gk,259409
|
42
|
+
phoonnx/thirdparty/mantoq/buck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
|
+
phoonnx/thirdparty/mantoq/buck/phonetise_buckwalter.py,sha256=QE2ADBH0HdnGpS6LY5zMqMyobgrVtG3ZDGs1HvbZ9XA,20253
|
44
|
+
phoonnx/thirdparty/mantoq/buck/symbols.py,sha256=AoH1kbTVE-0t16CfAEKopIEU0FVAYV3ZRxRJ_i20CFA,1096
|
45
|
+
phoonnx/thirdparty/mantoq/buck/tokenization.py,sha256=RyMzu5TLAYy_GybL9GjltwEOPh5iEvoNPpE5fviYbQU,2276
|
46
|
+
phoonnx/thirdparty/mantoq/pyarabic/__init__.py,sha256=zTb5JNfQuVye-WlcEmBET25d-Ub4N3Ijk9mCHAD3CLE,226
|
47
|
+
phoonnx/thirdparty/mantoq/pyarabic/arabrepr.py,sha256=kKKZyElV9dtWKeYqwIWsUovbK5x8J7kbFKnv2QIwhtk,1757
|
48
|
+
phoonnx/thirdparty/mantoq/pyarabic/araby.py,sha256=8kDPpnMKDMOI63h83V7jyCHvn4K2TJjMAhfv4o3NZr4,44797
|
49
|
+
phoonnx/thirdparty/mantoq/pyarabic/named_const.py,sha256=CtT5PGSwBYUombw8MkdyW6tu8G3-ghuIK2sd-4y37X4,4455
|
50
|
+
phoonnx/thirdparty/mantoq/pyarabic/normalize.py,sha256=iaTyTOWHNc38Ov2hgOkD0zDJmWM-kUoEba21es6CpJ8,4845
|
51
|
+
phoonnx/thirdparty/mantoq/pyarabic/number.py,sha256=NjFZPWRu-9dZDLgxfv9oDjmh-kWYkaUGntPQC7iT5mQ,27041
|
52
|
+
phoonnx/thirdparty/mantoq/pyarabic/number_const.py,sha256=vAvRVENxTrl9gWPllSXF-yqK9fAW6htuA2d041btC_A,42361
|
53
|
+
phoonnx/thirdparty/mantoq/pyarabic/stack.py,sha256=aJeSzQxVNdomDTWXuxIXWXVOc2BW_3iRWnwmBLkB8jM,1022
|
54
|
+
phoonnx/thirdparty/mantoq/pyarabic/trans.py,sha256=cusyHk9Y01iuvMLJXxgCnIiGyAORzEdSosDKX4cAhPc,13713
|
55
|
+
phoonnx/thirdparty/tashkeel/LICENSE,sha256=mQjTJ6MGAXzmYkO7x4O2VuEeSwCMx7lncbc26TnrVjw,1067
|
56
|
+
phoonnx/thirdparty/tashkeel/SOURCE,sha256=SmnRz-Am5EXv-n2-RokJVEhnn8zeF1QZJVvMQDA_Qds,38
|
57
|
+
phoonnx/thirdparty/tashkeel/__init__.py,sha256=FRdGNCTQaai9X077vlNh4tFOvWgm1U2lIUgnQKO5q0s,7119
|
58
|
+
phoonnx/thirdparty/tashkeel/hint_id_map.json,sha256=gJMdtTsfEDFgmmbyO2Shw315rkqKTHhQI3KGNqf6k-U,193
|
59
|
+
phoonnx/thirdparty/tashkeel/input_id_map.json,sha256=cnpJqjx-k53AbzKyfC4GxMS771ltzkv1EnYmHKc2w8M,628
|
60
|
+
phoonnx/thirdparty/tashkeel/model.onnx,sha256=UsQNQsoJT_n_B6CR0KHq_XuqXPI4jmCpzIm6zY5elV8,4788213
|
61
|
+
phoonnx/thirdparty/tashkeel/target_id_map.json,sha256=baNAJL_UwP9U91mLt01aAEBRRNdGr-csFB_O6roh7TA,181
|
62
|
+
phoonnx_train/__main__.py,sha256=FUAIsbQ-w2i_hoNiBuriQFk4uoryhL4ydyVY-hVjw1U,5086
|
63
|
+
phoonnx_train/export_onnx.py,sha256=dcFJRZl4YvBk_Dj3j0aNAQVEqKfBHTzV22pzvQwSETQ,2909
|
64
|
+
phoonnx_train/preprocess.py,sha256=0kto9Holywby6lnoQucBXq2wYEKDItRvdkvYbQnLJeo,14447
|
65
|
+
phoonnx_train/norm_audio/__init__.py,sha256=Al_YwqMnENXRWp0c79cDZqbdd7pFYARXKxCfBaedr1c,3030
|
66
|
+
phoonnx_train/norm_audio/trim.py,sha256=_ZsE3SYhahQSdEdBLeSwyFJGcvEbt-5E_lnWwTT4tcY,1698
|
67
|
+
phoonnx_train/norm_audio/vad.py,sha256=DXHfRD0qqFJ52FjPvrL5LlN6keJWuc9Nf6TNhxpwC_4,1600
|
68
|
+
phoonnx_train/vits/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
+
phoonnx_train/vits/attentions.py,sha256=yc_ViF8zR8z68DzphmVVVn27f9xK_5wi8S4ITLXVQL0,15134
|
70
|
+
phoonnx_train/vits/commons.py,sha256=JsD8CdZ3ZcYYubYhw8So5hICBziFlCrKLrv1lMDRCDM,4645
|
71
|
+
phoonnx_train/vits/config.py,sha256=oSuUIhw9Am7BQ5JwDgtCO-P1zRyN7nPgR-U1XuncJls,10789
|
72
|
+
phoonnx_train/vits/dataset.py,sha256=DLLGSCkn3GF9uktoTprH1ERblZ18GO6-QsClQKWa98o,6804
|
73
|
+
phoonnx_train/vits/lightning.py,sha256=iJJNAT1-jm0wYvTfBy9T_eZapDN62Pny9YdHEpnApso,12298
|
74
|
+
phoonnx_train/vits/losses.py,sha256=j-uINhBcYxVXFvFutiewQpTuw-qF-J6M6hdJVeOKqNE,1401
|
75
|
+
phoonnx_train/vits/mel_processing.py,sha256=huIjbQgewSmM39hdzRZvZUCI7fTNSMmLcAv3f8zYb8k,3956
|
76
|
+
phoonnx_train/vits/models.py,sha256=9PziprRtkdBQ6AowFe1vG4QTCk02By-LDS9W8EtZGvE,24303
|
77
|
+
phoonnx_train/vits/modules.py,sha256=DMNev5g23gkSq1EP0GR-jDI30Dvoy335k4q4zYKO1Y0,16880
|
78
|
+
phoonnx_train/vits/transforms.py,sha256=On8hI8WPD6noP_X0RKrGv5FzJ7bnmFVGlC-SJ_UuAY0,7457
|
79
|
+
phoonnx_train/vits/utils.py,sha256=exiyrtPHbnnGvcHWSbaH9-gR6srH5ZPHlKiqV2IHUrQ,491
|
80
|
+
phoonnx_train/vits/wavfile.py,sha256=oQZiTIrdw0oLTbcVwKfGXye1WtKte6qK_52qVwiMvfc,26396
|
81
|
+
phoonnx_train/vits/monotonic_align/__init__.py,sha256=5IdAOD1Z7UloMb6d_9NRFsXoNIjEQ3h9mvOSh_AtO3k,636
|
82
|
+
phoonnx_train/vits/monotonic_align/setup.py,sha256=0K5iJJ2mKIklx6ncEfCQS34skm5hHPiz9vRlQEvevvY,266
|
83
|
+
phoonnx-0.0.0.dist-info/METADATA,sha256=403yc0XWgga5G22oBJb9xTb2kEfYVKRcI1O7rCnYOls,7866
|
84
|
+
phoonnx-0.0.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
85
|
+
phoonnx-0.0.0.dist-info/top_level.txt,sha256=ZrnHXe-4HqbOSX6fbdY-JiP7YEu2Bok9T0ji351MrmM,22
|
86
|
+
phoonnx-0.0.0.dist-info/RECORD,,
|
@@ -0,0 +1,151 @@
|
|
1
|
+
import argparse
|
2
|
+
import json
|
3
|
+
import logging
|
4
|
+
from pathlib import Path
|
5
|
+
|
6
|
+
import torch
|
7
|
+
from pytorch_lightning import Trainer
|
8
|
+
from pytorch_lightning.callbacks import ModelCheckpoint
|
9
|
+
|
10
|
+
from phoonnx_train.vits.lightning import VitsModel
|
11
|
+
|
12
|
+
_LOGGER = logging.getLogger(__package__)
|
13
|
+
|
14
|
+
|
15
|
+
def main():
|
16
|
+
logging.basicConfig(level=logging.DEBUG)
|
17
|
+
|
18
|
+
parser = argparse.ArgumentParser()
|
19
|
+
parser.add_argument(
|
20
|
+
"--dataset-dir", required=True, help="Path to pre-processed dataset directory"
|
21
|
+
)
|
22
|
+
parser.add_argument(
|
23
|
+
"--checkpoint-epochs",
|
24
|
+
type=int,
|
25
|
+
help="Save checkpoint every N epochs (default: 1)",
|
26
|
+
)
|
27
|
+
parser.add_argument(
|
28
|
+
"--quality",
|
29
|
+
default="medium",
|
30
|
+
choices=("x-low", "medium", "high"),
|
31
|
+
help="Quality/size of model (default: medium)",
|
32
|
+
)
|
33
|
+
parser.add_argument(
|
34
|
+
"--resume_from_single_speaker_checkpoint",
|
35
|
+
help="For multi-speaker models only. Converts a single-speaker checkpoint to multi-speaker and resumes training",
|
36
|
+
)
|
37
|
+
Trainer.add_argparse_args(parser)
|
38
|
+
VitsModel.add_model_specific_args(parser)
|
39
|
+
parser.add_argument("--seed", type=int, default=1234)
|
40
|
+
args = parser.parse_args()
|
41
|
+
_LOGGER.debug(args)
|
42
|
+
|
43
|
+
args.dataset_dir = Path(args.dataset_dir)
|
44
|
+
if not args.default_root_dir:
|
45
|
+
args.default_root_dir = args.dataset_dir
|
46
|
+
|
47
|
+
torch.backends.cudnn.benchmark = True
|
48
|
+
torch.manual_seed(args.seed)
|
49
|
+
|
50
|
+
config_path = args.dataset_dir / "config.json"
|
51
|
+
dataset_path = args.dataset_dir / "dataset.jsonl"
|
52
|
+
|
53
|
+
print(f"INFO - config_path: '{config_path}'")
|
54
|
+
print(f"INFO - dataset_path: '{dataset_path}'")
|
55
|
+
|
56
|
+
with open(config_path, "r", encoding="utf-8") as config_file:
|
57
|
+
# See preprocess.py for format
|
58
|
+
config = json.load(config_file)
|
59
|
+
num_symbols = int(config["num_symbols"])
|
60
|
+
num_speakers = int(config["num_speakers"])
|
61
|
+
sample_rate = int(config["audio"]["sample_rate"])
|
62
|
+
|
63
|
+
trainer = Trainer.from_argparse_args(args)
|
64
|
+
if args.checkpoint_epochs is not None:
|
65
|
+
trainer.callbacks = [ModelCheckpoint(every_n_epochs=args.checkpoint_epochs)]
|
66
|
+
_LOGGER.info(
|
67
|
+
"Checkpoints will be saved every %s epoch(s)", args.checkpoint_epochs
|
68
|
+
)
|
69
|
+
|
70
|
+
dict_args = vars(args)
|
71
|
+
if args.quality == "x-low":
|
72
|
+
dict_args["hidden_channels"] = 96
|
73
|
+
dict_args["inter_channels"] = 96
|
74
|
+
dict_args["filter_channels"] = 384
|
75
|
+
elif args.quality == "high":
|
76
|
+
dict_args["resblock"] = "1"
|
77
|
+
dict_args["resblock_kernel_sizes"] = (3, 7, 11)
|
78
|
+
dict_args["resblock_dilation_sizes"] = (
|
79
|
+
(1, 3, 5),
|
80
|
+
(1, 3, 5),
|
81
|
+
(1, 3, 5),
|
82
|
+
)
|
83
|
+
dict_args["upsample_rates"] = (8, 8, 2, 2)
|
84
|
+
dict_args["upsample_initial_channel"] = 512
|
85
|
+
dict_args["upsample_kernel_sizes"] = (16, 16, 4, 4)
|
86
|
+
|
87
|
+
print(f"VitsModel params: num_symbols={num_symbols} num_speakers={num_speakers} sample_rate={sample_rate}")
|
88
|
+
model = VitsModel(
|
89
|
+
num_symbols=num_symbols,
|
90
|
+
num_speakers=num_speakers,
|
91
|
+
sample_rate=sample_rate,
|
92
|
+
dataset=[dataset_path],
|
93
|
+
**dict_args,
|
94
|
+
)
|
95
|
+
|
96
|
+
if args.resume_from_single_speaker_checkpoint:
|
97
|
+
assert (
|
98
|
+
num_speakers > 1
|
99
|
+
), "--resume_from_single_speaker_checkpoint is only for multi-speaker models. Use --resume_from_checkpoint for single-speaker models."
|
100
|
+
|
101
|
+
# Load single-speaker checkpoint
|
102
|
+
_LOGGER.info(
|
103
|
+
"Resuming from single-speaker checkpoint: %s",
|
104
|
+
args.resume_from_single_speaker_checkpoint,
|
105
|
+
)
|
106
|
+
model_single = VitsModel.load_from_checkpoint(
|
107
|
+
args.resume_from_single_speaker_checkpoint,
|
108
|
+
dataset=None,
|
109
|
+
)
|
110
|
+
g_dict = model_single.model_g.state_dict()
|
111
|
+
for key in list(g_dict.keys()):
|
112
|
+
# Remove keys that can't be copied over due to missing speaker embedding
|
113
|
+
if (
|
114
|
+
key.startswith("dec.cond")
|
115
|
+
or key.startswith("dp.cond")
|
116
|
+
or ("enc.cond_layer" in key)
|
117
|
+
):
|
118
|
+
g_dict.pop(key, None)
|
119
|
+
|
120
|
+
# Copy over the multi-speaker model, excluding keys related to the
|
121
|
+
# speaker embedding (which is missing from the single-speaker model).
|
122
|
+
load_state_dict(model.model_g, g_dict)
|
123
|
+
load_state_dict(model.model_d, model_single.model_d.state_dict())
|
124
|
+
_LOGGER.info(
|
125
|
+
"Successfully converted single-speaker checkpoint to multi-speaker"
|
126
|
+
)
|
127
|
+
print("training started!!")
|
128
|
+
trainer.fit(model)
|
129
|
+
|
130
|
+
|
131
|
+
def load_state_dict(model, saved_state_dict):
|
132
|
+
state_dict = model.state_dict()
|
133
|
+
new_state_dict = {}
|
134
|
+
|
135
|
+
for k, v in state_dict.items():
|
136
|
+
if k in saved_state_dict:
|
137
|
+
# Use saved value
|
138
|
+
new_state_dict[k] = saved_state_dict[k]
|
139
|
+
else:
|
140
|
+
# Use initialized value
|
141
|
+
_LOGGER.debug("%s is not in the checkpoint", k)
|
142
|
+
new_state_dict[k] = v
|
143
|
+
|
144
|
+
model.load_state_dict(new_state_dict)
|
145
|
+
|
146
|
+
|
147
|
+
# -----------------------------------------------------------------------------
|
148
|
+
|
149
|
+
|
150
|
+
if __name__ == "__main__":
|
151
|
+
main()
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
import argparse
|
3
|
+
import logging
|
4
|
+
from pathlib import Path
|
5
|
+
from typing import Optional
|
6
|
+
|
7
|
+
import torch
|
8
|
+
|
9
|
+
from phoonnx_train.vits.lightning import VitsModel
|
10
|
+
|
11
|
+
_LOGGER = logging.getLogger("piper_train.export_onnx")
|
12
|
+
|
13
|
+
OPSET_VERSION = 15
|
14
|
+
|
15
|
+
|
16
|
+
def main() -> None:
|
17
|
+
"""Main entry point"""
|
18
|
+
torch.manual_seed(1234)
|
19
|
+
|
20
|
+
parser = argparse.ArgumentParser()
|
21
|
+
parser.add_argument("checkpoint", help="Path to model checkpoint (.ckpt)")
|
22
|
+
parser.add_argument("output", help="Path to output model (.onnx)")
|
23
|
+
|
24
|
+
parser.add_argument(
|
25
|
+
"--debug", action="store_true", help="Print DEBUG messages to the console"
|
26
|
+
)
|
27
|
+
args = parser.parse_args()
|
28
|
+
|
29
|
+
if args.debug:
|
30
|
+
logging.basicConfig(level=logging.DEBUG)
|
31
|
+
else:
|
32
|
+
logging.basicConfig(level=logging.INFO)
|
33
|
+
|
34
|
+
_LOGGER.debug(args)
|
35
|
+
|
36
|
+
# -------------------------------------------------------------------------
|
37
|
+
|
38
|
+
args.checkpoint = Path(args.checkpoint)
|
39
|
+
args.output = Path(args.output)
|
40
|
+
args.output.parent.mkdir(parents=True, exist_ok=True)
|
41
|
+
|
42
|
+
model = VitsModel.load_from_checkpoint(args.checkpoint, dataset=None)
|
43
|
+
model_g = model.model_g
|
44
|
+
|
45
|
+
num_symbols = model_g.n_vocab
|
46
|
+
num_speakers = model_g.n_speakers
|
47
|
+
|
48
|
+
# Inference only
|
49
|
+
model_g.eval()
|
50
|
+
|
51
|
+
with torch.no_grad():
|
52
|
+
model_g.dec.remove_weight_norm()
|
53
|
+
|
54
|
+
# old_forward = model_g.infer
|
55
|
+
|
56
|
+
def infer_forward(text, text_lengths, scales, sid=None):
|
57
|
+
noise_scale = scales[0]
|
58
|
+
length_scale = scales[1]
|
59
|
+
noise_scale_w = scales[2]
|
60
|
+
audio = model_g.infer(
|
61
|
+
text,
|
62
|
+
text_lengths,
|
63
|
+
noise_scale=noise_scale,
|
64
|
+
length_scale=length_scale,
|
65
|
+
noise_scale_w=noise_scale_w,
|
66
|
+
sid=sid,
|
67
|
+
)[0].unsqueeze(1)
|
68
|
+
|
69
|
+
return audio
|
70
|
+
|
71
|
+
model_g.forward = infer_forward
|
72
|
+
|
73
|
+
dummy_input_length = 50
|
74
|
+
sequences = torch.randint(
|
75
|
+
low=0, high=num_symbols, size=(1, dummy_input_length), dtype=torch.long
|
76
|
+
)
|
77
|
+
sequence_lengths = torch.LongTensor([sequences.size(1)])
|
78
|
+
|
79
|
+
sid: Optional[torch.LongTensor] = None
|
80
|
+
if num_speakers > 1:
|
81
|
+
sid = torch.LongTensor([0])
|
82
|
+
|
83
|
+
# noise, noise_w, length
|
84
|
+
scales = torch.FloatTensor([0.667, 1.0, 0.8])
|
85
|
+
dummy_input = (sequences, sequence_lengths, scales, sid)
|
86
|
+
|
87
|
+
# Export
|
88
|
+
torch.onnx.export(
|
89
|
+
model=model_g,
|
90
|
+
args=dummy_input,
|
91
|
+
f=str(args.output),
|
92
|
+
verbose=False,
|
93
|
+
opset_version=OPSET_VERSION,
|
94
|
+
input_names=["input", "input_lengths", "scales", "sid"],
|
95
|
+
output_names=["output"],
|
96
|
+
dynamic_axes={
|
97
|
+
"input": {0: "batch_size", 1: "phonemes"},
|
98
|
+
"input_lengths": {0: "batch_size"},
|
99
|
+
"output": {0: "batch_size", 1: "time"},
|
100
|
+
},
|
101
|
+
)
|
102
|
+
|
103
|
+
_LOGGER.info("Exported model to %s", args.output)
|
104
|
+
|
105
|
+
|
106
|
+
# -----------------------------------------------------------------------------
|
107
|
+
|
108
|
+
if __name__ == "__main__":
|
109
|
+
main()
|