phoonnx 0.1.0a1__py3-none-any.whl → 0.1.1a1__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.
@@ -0,0 +1,36 @@
1
+ from phoonnx.phonemizers.base import BasePhonemizer, Alphabet
2
+ from mwl_phonemizer import CRFOrthoCorrector
3
+
4
+
5
+ class MirandesePhonemizer(BasePhonemizer):
6
+ _LANGS = ["mwl"]
7
+
8
+ def __init__(self):
9
+ super().__init__(Alphabet.IPA)
10
+ self.pho = CRFOrthoCorrector()
11
+
12
+ @classmethod
13
+ def get_lang(cls, target_lang: str) -> str:
14
+ """
15
+ Validates and returns the closest supported language code.
16
+
17
+ Args:
18
+ target_lang (str): The language code to validate.
19
+
20
+ Returns:
21
+ str: The validated language code.
22
+
23
+ Raises:
24
+ ValueError: If the language code is unsupported.
25
+ """
26
+ return cls.match_lang(target_lang, cls._LANGS)
27
+
28
+ def phonemize_string(self, text: str, lang: str) -> str:
29
+ # Validate language is supported
30
+ lang = self.get_lang(lang)
31
+ return self.pho.phonemize_sentence(text)
32
+
33
+
34
+ if __name__ == "__main__":
35
+ pho = MirandesePhonemizer()
36
+ print(pho.phonemize_string("ls", "mwl"))
@@ -1,3 +1,4 @@
1
+ # taken from https://github.com/stannam/hangul_to_ipa
1
2
  import csv
2
3
  import math
3
4
  import os.path
@@ -3,14 +3,6 @@ from phoonnx.thirdparty.mantoq.buck.tokenization import (arabic_to_phonemes, pho
3
3
  phonemes_to_tokens, simplify_phonemes)
4
4
  from phoonnx.thirdparty.mantoq.buck.tokenization import tokens_to_ids as _tokens_to_id
5
5
  from phoonnx.thirdparty.mantoq.num2words import num2words
6
- import warnings
7
- from phoonnx.thirdparty.tashkeel import TashkeelDiacritizer
8
- try:
9
- import onnxruntime
10
-
11
- _TASHKEEL_AVAILABLE = True
12
- except ImportError:
13
- _TASHKEEL_AVAILABLE = False
14
6
 
15
7
  _DIACRITIZER_INST = None
16
8
 
@@ -29,29 +21,12 @@ QUOTES_TABLE = str.maketrans(QUOTES, '"' * len(QUOTES))
29
21
  BRACKETS_TABLE = str.maketrans("[]{}", "()()")
30
22
 
31
23
 
32
-
33
-
34
- def tashkeel(text: str) -> str:
35
- global _DIACRITIZER_INST
36
- if not _TASHKEEL_AVAILABLE:
37
- warnings.warn(
38
- "Warning: The Tashkeel feature will not be available. Please re-install with the `libtashkeel` extra.",
39
- UserWarning,
40
- )
41
- return text
42
- if _DIACRITIZER_INST is None:
43
- _DIACRITIZER_INST = TashkeelDiacritizer()
44
- return _DIACRITIZER_INST.diacritize(text)
45
-
46
24
  def g2p(
47
25
  text: str,
48
- add_tashkeel: bool = True,
49
26
  process_numbers: bool = True,
50
27
  append_eos: bool = False,
51
- ) -> list[str]:
28
+ ) -> tuple[str, list[str]]:
52
29
  text = text.translate(AR_SPECIAL_PUNCS_TABLE).translate(QUOTES_TABLE).translate(BRACKETS_TABLE)
53
- if add_tashkeel:
54
- text = tashkeel(text)
55
30
  if process_numbers:
56
31
  text = num2words(text)
57
32
  normalized_text = text
@@ -0,0 +1,24 @@
1
+ import os
2
+ import requests
3
+
4
+
5
+ class PhonikudDiacritizer:
6
+ dl_url = "https://huggingface.co/thewh1teagle/phonikud-onnx/resolve/main/phonikud-1.0.int8.onnx"
7
+
8
+ def __init__(self):
9
+
10
+ base_path = os.path.expanduser("~/.local/share/phonikud")
11
+ fname = self.dl_url.split("/")[-1]
12
+ model = f"{base_path}/{fname}"
13
+ if not os.path.isfile(model):
14
+ os.makedirs(base_path, exist_ok=True)
15
+ # TODO - streaming download
16
+ data = requests.get(self.dl_url).content
17
+ with open(model, "wb") as f:
18
+ f.write(data)
19
+
20
+ from phonikud_onnx import Phonikud
21
+ self.phonikud = Phonikud(model)
22
+
23
+ def diacritize(self, text: str) -> str:
24
+ return self.phonikud.add_diacritics(text)
phoonnx/version.py CHANGED
@@ -1,6 +1,10 @@
1
1
  # START_VERSION_BLOCK
2
2
  VERSION_MAJOR = 0
3
3
  VERSION_MINOR = 1
4
- VERSION_BUILD = 0
4
+ VERSION_BUILD = 1
5
5
  VERSION_ALPHA = 1
6
6
  # END_VERSION_BLOCK
7
+
8
+ VERSION_STR = f"{VERSION_MAJOR}.{VERSION_MINOR}.{VERSION_BUILD}"
9
+ if VERSION_ALPHA:
10
+ VERSION_STR += f"a{VERSION_ALPHA}"
phoonnx/voice.py CHANGED
@@ -14,7 +14,6 @@ from phoonnx.config import PhonemeType, VoiceConfig, SynthesisConfig, get_phonem
14
14
  from phoonnx.phoneme_ids import phonemes_to_ids, BlankBetween
15
15
  from phoonnx.phonemizers import Phonemizer
16
16
  from phoonnx.phonemizers.base import PhonemizedChunks
17
- from phoonnx.thirdparty.tashkeel import TashkeelDiacritizer
18
17
 
19
18
  _PHONEME_BLOCK_PATTERN = re.compile(r"(\[\[.*?\]\])")
20
19
 
@@ -113,11 +112,6 @@ class TTSVoice:
113
112
 
114
113
  phonemizer: Optional[Phonemizer] = None
115
114
 
116
- # For Arabic text only
117
- use_tashkeel: bool = True
118
- tashkeel_diacritizier: Optional[TashkeelDiacritizer] = None # For Arabic text only
119
- taskeen_threshold: Optional[float] = 0.8
120
-
121
115
  def __post_init__(self):
122
116
  try:
123
117
  self.phonetic_spellings = PhoneticSpellings.from_lang(self.config.lang_code)
@@ -128,10 +122,6 @@ class TTSVoice:
128
122
  self.config.alphabet,
129
123
  self.config.phonemizer_model)
130
124
 
131
- # compat with piper arabic models - TODO move to espeak phonemizer
132
- if self.config.lang_code.split("-")[0] == "ar" and self.use_tashkeel and self.tashkeel_diacritizier is None:
133
- self.tashkeel_diacritizier = TashkeelDiacritizer()
134
-
135
125
  @staticmethod
136
126
  def load(
137
127
  model_path: Union[str, Path],
@@ -209,12 +199,6 @@ class TTSVoice:
209
199
 
210
200
  continue
211
201
 
212
- # Arabic diacritization
213
- if self.config.lang_code.split("-")[0] == "ar" and self.use_tashkeel:
214
- text_part = self.tashkeel_diacritizier(
215
- text_part, taskeen_threshold=self.taskeen_threshold
216
- )
217
-
218
202
  # Phonemization
219
203
  phonemes = self.phonemizer.phonemize(
220
204
  text_part, self.config.lang_code
@@ -267,6 +251,10 @@ class TTSVoice:
267
251
  if self.phonetic_spellings and syn_config.enable_phonetic_spellings:
268
252
  text = self.phonetic_spellings.apply(text)
269
253
 
254
+ if syn_config.add_diacritics:
255
+ text = self.phonemizer.add_diacritics(text, self.config.lang_code)
256
+ LOG.debug("text+diacritics=%s", text)
257
+
270
258
  # All phonemization goes through the unified self.phonemize method
271
259
  sentence_phonemes = self.phonemize(text)
272
260
  LOG.debug("phonemes=%s", sentence_phonemes)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phoonnx
3
- Version: 0.1.0a1
3
+ Version: 0.1.1a1
4
4
  Home-page: https://github.com/TigreGotico/phoonnx
5
5
  Author: JarbasAi
6
6
  Author-email: jarbasai@mailfence.com
@@ -150,6 +150,8 @@ Provides-Extra: ms
150
150
  Requires-Dist: epitran; extra == "ms"
151
151
  Provides-Extra: mt
152
152
  Requires-Dist: epitran; extra == "mt"
153
+ Provides-Extra: mwl
154
+ Requires-Dist: mwl-phonemizer; extra == "mwl"
153
155
  Provides-Extra: my
154
156
  Requires-Dist: epitran; extra == "my"
155
157
  Provides-Extra: nan
@@ -220,6 +222,7 @@ Requires-Dist: librosa<1,>=0.9.2; extra == "train"
220
222
  Requires-Dist: numpy<2,>=1.19.0; extra == "train"
221
223
  Requires-Dist: pytorch-lightning<2.0; extra == "train"
222
224
  Requires-Dist: torch<2,>=1.11.0; extra == "train"
225
+ Requires-Dist: click; extra == "train"
223
226
  Provides-Extra: uew
224
227
  Requires-Dist: epitran; extra == "uew"
225
228
  Provides-Extra: ug
@@ -1,29 +1,30 @@
1
1
  phoonnx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- phoonnx/config.py,sha256=81H34oPG2BaiOA6UM1KapoT341n068LqRprKb5ER6mY,19451
2
+ phoonnx/config.py,sha256=aGX7PWq3_nLdn3zCp0orMsdNQaiBfjZZmvGWd_VU2KQ,19858
3
3
  phoonnx/phoneme_ids.py,sha256=FiNgZwV6naEsBh6XwFLh3_FyOgPiCsK9qo7S0v-CmI4,13667
4
4
  phoonnx/util.py,sha256=XSjFEoqSFcujFTHxednacgC9GrSYyF-Il5L6Utmxmu4,25909
5
- phoonnx/version.py,sha256=95gLFCt-8xv9DgF7FIF6CljWmhm8SUhevumEBfo7Pl0,114
6
- phoonnx/voice.py,sha256=FR_LafK1vSi_anPERJjZBuH3Bb9vUIof0MAW6TnALlA,20024
5
+ phoonnx/version.py,sha256=Ll52GTfYXTiW5lVvWRVNSo3-ay5hISE7zYWp2aFzXvQ,237
6
+ phoonnx/voice.py,sha256=JXjmbrhJd4mmTiLgz4O_Pa5_rKGUC9xzuBfqxYDw3Mg,19420
7
7
  phoonnx/locale/ca/phonetic_spellings.txt,sha256=igv3t7jxLSRE5GHsdn57HOpxiWNcEmECPql6m02wbO0,47
8
8
  phoonnx/locale/en/phonetic_spellings.txt,sha256=xGQlWOABLzbttpQvopl9CU-NnwEJRqKx8iuylsdUoQA,27
9
9
  phoonnx/locale/gl/phonetic_spellings.txt,sha256=igv3t7jxLSRE5GHsdn57HOpxiWNcEmECPql6m02wbO0,47
10
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=29bCfYhlhx0QX3PQyx3EkUghzh8YfkxNAnMAICXX6I8,4148
13
- phoonnx/phonemizers/base.py,sha256=yPg6-dvscYpl3rR3JEULG1PRF-i8DWC_C3HAZGLbxOo,7648
11
+ phoonnx/phonemizers/__init__.py,sha256=NcI_iwtWBD2hIFTfEzLo-XOhVvmZpwAVFC3sqIFS1MY,1776
12
+ phoonnx/phonemizers/ar.py,sha256=xxILq5iyH0kcI-NqFfRK4abGtpdUbykBjt_dZmPuO2w,3216
13
+ phoonnx/phonemizers/base.py,sha256=FHvAsvSjAl_oSa1GoeEi96CQ_JO_xkKXWq0ukuMxiuo,8660
14
14
  phoonnx/phonemizers/en.py,sha256=N2SVoVhplQao7Ej5TXbxJU-YkAgkY0Fr9iYBFnsjFSE,9271
15
15
  phoonnx/phonemizers/fa.py,sha256=d_DZM2wqomf4gcRH_rFcNA3VkQWKHru8vwBwaNG8Ll8,1452
16
16
  phoonnx/phonemizers/gl.py,sha256=jEFKJJViHufZtB7lGNwWQCdWGiNKDCVZ_GRYXTaw_2c,6614
17
- phoonnx/phonemizers/he.py,sha256=KbRI3XRZa8UtJdNWmn_fd-t5lmFSIp4Mw8UgcO5l-Po,2211
17
+ phoonnx/phonemizers/he.py,sha256=49OFS34wSFvvR9B3z2bGSzSLmlIvnn2HtkHBOkHS9Ns,1383
18
18
  phoonnx/phonemizers/ja.py,sha256=Xojsrt715ihnIiEk9K6giYqDo9Iykw-SHfIidrHtHSU,3834
19
19
  phoonnx/phonemizers/ko.py,sha256=kwWoOFqanCB8kv2JRx17A0hP78P1wbXlX6e8VBn1ezQ,2989
20
- phoonnx/phonemizers/mul.py,sha256=37G_G58aGnVpdEm9vZEAOdGEHJ9TLBE17bU1HFvQ2rU,27291
20
+ phoonnx/phonemizers/mul.py,sha256=-h6uN_laUD-unNRGThzjyiOZpN6pSl4uinCndg5-0TA,94184
21
+ phoonnx/phonemizers/mwl.py,sha256=9bwKmKQ-fXQQKK04fmKbT9QiraD0r3rKdNFZkWZP-eI,999
21
22
  phoonnx/phonemizers/vi.py,sha256=_XJc-Xeawr1Lxr7o8mE_hJao1aGcj4g01XYAOxC_Scg,1311
22
23
  phoonnx/phonemizers/zh.py,sha256=88Ywq8h9LDanlyz8RHjRSCY_PRK_Dq808tBADyrgaP8,9657
23
24
  phoonnx/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
25
  phoonnx/thirdparty/arpa2ipa.py,sha256=Uj1G5NgP5oBBfSm26LGB8QoumdT-NqCLQTZHT165-_o,5850
25
26
  phoonnx/thirdparty/bw2ipa.py,sha256=5FiWC4AP4KXkqtbclbinoXEsUnSYEjk4VWAPasMMcbg,2328
26
- phoonnx/thirdparty/hangul2ipa.py,sha256=e2c0WOy5lFMcf6GS7pNqIbauMKBX07S84lCczZAZJGA,27518
27
+ phoonnx/thirdparty/hangul2ipa.py,sha256=Pj06lL-GkOH4ZkLuakwQAT045fEVsijGhwoY_EEEVKc,27572
27
28
  phoonnx/thirdparty/zh_num.py,sha256=SESA6gvSJW3LZ0FLoybXn2SpbxqhQTi9Tg_U2IZ5JYY,7147
28
29
  phoonnx/thirdparty/cotovia/cotovia_aarch64,sha256=BsAWZN452Lm9kDU4i6rQGHFSlmxP3GfHRKhbJMUQrfA,6764592
29
30
  phoonnx/thirdparty/cotovia/cotovia_x86_64,sha256=-6BNx_cd49nnDreOAsGtVtePs_X76esrqcNAfmksN1o,1379832
@@ -37,7 +38,7 @@ phoonnx/thirdparty/ko_tables/tensification.csv,sha256=V4Xf3A1G1iMBzwZevBKQuk_lPa
37
38
  phoonnx/thirdparty/ko_tables/yale.csv,sha256=UhtDbPXRAAyAKoQMXmwhVBwJ5pfZQ_Duk28qBtRUdsU,297
38
39
  phoonnx/thirdparty/kog2p/__init__.py,sha256=yLizadg7RXM-3dQyftD4XSk8r2jb0QOlHQ6as9uUa4U,10267
39
40
  phoonnx/thirdparty/kog2p/rulebook.txt,sha256=FQE3nej8wojl6ilVUBYo7f8bIk0Hjci-B7HPXhM-xNc,9303
40
- phoonnx/thirdparty/mantoq/__init__.py,sha256=4kZuZ3RA5ZhQwTOQGkHF9jQYSvetNTn9uWi5Dsx101k,2106
41
+ phoonnx/thirdparty/mantoq/__init__.py,sha256=02FftO4Onmp_S-XdukbBQ3aRVvqEQyo1frCLWgcF9cY,1428
41
42
  phoonnx/thirdparty/mantoq/num2words.py,sha256=9-ncMtxV1FusD9rNur1lu7l2DWhwUwI1mFiqiPSMH_Q,1264
42
43
  phoonnx/thirdparty/mantoq/unicode_symbol2label.py,sha256=CeZNv7qWeQS4Ejvz-sKgK--5eNYdVVv04WHPaOeK4gk,259409
43
44
  phoonnx/thirdparty/mantoq/buck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -53,6 +54,7 @@ phoonnx/thirdparty/mantoq/pyarabic/number.py,sha256=NjFZPWRu-9dZDLgxfv9oDjmh-kWY
53
54
  phoonnx/thirdparty/mantoq/pyarabic/number_const.py,sha256=vAvRVENxTrl9gWPllSXF-yqK9fAW6htuA2d041btC_A,42361
54
55
  phoonnx/thirdparty/mantoq/pyarabic/stack.py,sha256=aJeSzQxVNdomDTWXuxIXWXVOc2BW_3iRWnwmBLkB8jM,1022
55
56
  phoonnx/thirdparty/mantoq/pyarabic/trans.py,sha256=cusyHk9Y01iuvMLJXxgCnIiGyAORzEdSosDKX4cAhPc,13713
57
+ phoonnx/thirdparty/phonikud/__init__.py,sha256=g1dCelCZbwlKT0Ibaky6Ckp59wMw5g_1DDyDXauqFTg,760
56
58
  phoonnx/thirdparty/tashkeel/LICENSE,sha256=mQjTJ6MGAXzmYkO7x4O2VuEeSwCMx7lncbc26TnrVjw,1067
57
59
  phoonnx/thirdparty/tashkeel/SOURCE,sha256=SmnRz-Am5EXv-n2-RokJVEhnn8zeF1QZJVvMQDA_Qds,38
58
60
  phoonnx/thirdparty/tashkeel/__init__.py,sha256=FRdGNCTQaai9X077vlNh4tFOvWgm1U2lIUgnQKO5q0s,7119
@@ -61,8 +63,8 @@ phoonnx/thirdparty/tashkeel/input_id_map.json,sha256=cnpJqjx-k53AbzKyfC4GxMS771l
61
63
  phoonnx/thirdparty/tashkeel/model.onnx,sha256=UsQNQsoJT_n_B6CR0KHq_XuqXPI4jmCpzIm6zY5elV8,4788213
62
64
  phoonnx/thirdparty/tashkeel/target_id_map.json,sha256=baNAJL_UwP9U91mLt01aAEBRRNdGr-csFB_O6roh7TA,181
63
65
  phoonnx_train/__main__.py,sha256=FUAIsbQ-w2i_hoNiBuriQFk4uoryhL4ydyVY-hVjw1U,5086
64
- phoonnx_train/export_onnx.py,sha256=dcFJRZl4YvBk_Dj3j0aNAQVEqKfBHTzV22pzvQwSETQ,2909
65
- phoonnx_train/preprocess.py,sha256=0kto9Holywby6lnoQucBXq2wYEKDItRvdkvYbQnLJeo,14447
66
+ phoonnx_train/export_onnx.py,sha256=CPfgNEm0hnXPSlgme0R9jr-6jZ5fKFpG5DZJFMkC-h4,12820
67
+ phoonnx_train/preprocess.py,sha256=8_Opy5QVNjVmSVmh1_IF23bcNebVIEXuK2KcollIy28,15793
66
68
  phoonnx_train/norm_audio/__init__.py,sha256=Al_YwqMnENXRWp0c79cDZqbdd7pFYARXKxCfBaedr1c,3030
67
69
  phoonnx_train/norm_audio/trim.py,sha256=_ZsE3SYhahQSdEdBLeSwyFJGcvEbt-5E_lnWwTT4tcY,1698
68
70
  phoonnx_train/norm_audio/vad.py,sha256=DXHfRD0qqFJ52FjPvrL5LlN6keJWuc9Nf6TNhxpwC_4,1600
@@ -70,7 +72,7 @@ phoonnx_train/vits/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
70
72
  phoonnx_train/vits/attentions.py,sha256=yc_ViF8zR8z68DzphmVVVn27f9xK_5wi8S4ITLXVQL0,15134
71
73
  phoonnx_train/vits/commons.py,sha256=JsD8CdZ3ZcYYubYhw8So5hICBziFlCrKLrv1lMDRCDM,4645
72
74
  phoonnx_train/vits/config.py,sha256=oSuUIhw9Am7BQ5JwDgtCO-P1zRyN7nPgR-U1XuncJls,10789
73
- phoonnx_train/vits/dataset.py,sha256=DLLGSCkn3GF9uktoTprH1ERblZ18GO6-QsClQKWa98o,6804
75
+ phoonnx_train/vits/dataset.py,sha256=1V1tVh5dSLjFMBsuzrAsoGtYWSBT4iU64Jdqi8oG-y0,7016
74
76
  phoonnx_train/vits/lightning.py,sha256=ZBuSIiJ7EUU1Za2V8Uh6-_HGGRW_qwpXLLs1cEDirHA,12301
75
77
  phoonnx_train/vits/losses.py,sha256=j-uINhBcYxVXFvFutiewQpTuw-qF-J6M6hdJVeOKqNE,1401
76
78
  phoonnx_train/vits/mel_processing.py,sha256=huIjbQgewSmM39hdzRZvZUCI7fTNSMmLcAv3f8zYb8k,3956
@@ -81,7 +83,7 @@ phoonnx_train/vits/utils.py,sha256=exiyrtPHbnnGvcHWSbaH9-gR6srH5ZPHlKiqV2IHUrQ,4
81
83
  phoonnx_train/vits/wavfile.py,sha256=oQZiTIrdw0oLTbcVwKfGXye1WtKte6qK_52qVwiMvfc,26396
82
84
  phoonnx_train/vits/monotonic_align/__init__.py,sha256=5IdAOD1Z7UloMb6d_9NRFsXoNIjEQ3h9mvOSh_AtO3k,636
83
85
  phoonnx_train/vits/monotonic_align/setup.py,sha256=0K5iJJ2mKIklx6ncEfCQS34skm5hHPiz9vRlQEvevvY,266
84
- phoonnx-0.1.0a1.dist-info/METADATA,sha256=9FZiRhA48da6ZbX1qCrKKVqsWMWQwfedz-bUXATd6Sk,8145
85
- phoonnx-0.1.0a1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
86
- phoonnx-0.1.0a1.dist-info/top_level.txt,sha256=ZrnHXe-4HqbOSX6fbdY-JiP7YEu2Bok9T0ji351MrmM,22
87
- phoonnx-0.1.0a1.dist-info/RECORD,,
86
+ phoonnx-0.1.1a1.dist-info/METADATA,sha256=HkE1TTQPlxfTGOzlG55_lO4BH_4mjNlhL7vr_UrAwyI,8250
87
+ phoonnx-0.1.1a1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
88
+ phoonnx-0.1.1a1.dist-info/top_level.txt,sha256=ZrnHXe-4HqbOSX6fbdY-JiP7YEu2Bok9T0ji351MrmM,22
89
+ phoonnx-0.1.1a1.dist-info/RECORD,,