phoonnx 0.2.6a2__tar.gz → 0.3.0__tar.gz

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.
Files changed (95) hide show
  1. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/PKG-INFO +1 -1
  2. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/config.py +4 -1
  3. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/__init__.py +2 -0
  4. phoonnx-0.3.0/phoonnx/phonemizers/pt.py +57 -0
  5. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/version.py +3 -3
  6. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx.egg-info/PKG-INFO +1 -1
  7. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx.egg-info/SOURCES.txt +2 -0
  8. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx.egg-info/requires.txt +1 -0
  9. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/preprocess.py +23 -0
  10. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/README.md +0 -0
  11. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/__init__.py +0 -0
  12. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/locale/ca/phonetic_spellings.txt +0 -0
  13. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/locale/en/phonetic_spellings.txt +0 -0
  14. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/locale/gl/phonetic_spellings.txt +0 -0
  15. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/locale/pt/phonetic_spellings.txt +0 -0
  16. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phoneme_ids.py +0 -0
  17. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/ar.py +0 -0
  18. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/base.py +0 -0
  19. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/en.py +0 -0
  20. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/fa.py +0 -0
  21. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/gl.py +0 -0
  22. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/he.py +0 -0
  23. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/ja.py +0 -0
  24. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/ko.py +0 -0
  25. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/mul.py +0 -0
  26. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/mwl.py +0 -0
  27. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/vi.py +0 -0
  28. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/phonemizers/zh.py +0 -0
  29. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/__init__.py +0 -0
  30. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/arpa2ipa.py +0 -0
  31. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/bw2ipa.py +0 -0
  32. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/cotovia/cotovia_aarch64 +0 -0
  33. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/cotovia/cotovia_x86_64 +0 -0
  34. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/hangul2ipa.py +0 -0
  35. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/aspiration.csv +0 -0
  36. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/assimilation.csv +0 -0
  37. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/double_coda.csv +0 -0
  38. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/hanja.tsv +0 -0
  39. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/ipa.csv +0 -0
  40. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/neutralization.csv +0 -0
  41. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/tensification.csv +0 -0
  42. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/ko_tables/yale.csv +0 -0
  43. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/kog2p/__init__.py +0 -0
  44. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/kog2p/rulebook.txt +0 -0
  45. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/__init__.py +0 -0
  46. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/buck/__init__.py +0 -0
  47. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/buck/phonetise_buckwalter.py +0 -0
  48. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/buck/symbols.py +0 -0
  49. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/buck/tokenization.py +0 -0
  50. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/num2words.py +0 -0
  51. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/__init__.py +0 -0
  52. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/arabrepr.py +0 -0
  53. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/araby.py +0 -0
  54. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/named_const.py +0 -0
  55. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/normalize.py +0 -0
  56. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/number.py +0 -0
  57. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/number_const.py +0 -0
  58. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/stack.py +0 -0
  59. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/pyarabic/trans.py +0 -0
  60. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/mantoq/unicode_symbol2label.py +0 -0
  61. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/phonikud/__init__.py +0 -0
  62. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/LICENSE +0 -0
  63. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/SOURCE +0 -0
  64. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/__init__.py +0 -0
  65. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/hint_id_map.json +0 -0
  66. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/input_id_map.json +0 -0
  67. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/model.onnx +0 -0
  68. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/tashkeel/target_id_map.json +0 -0
  69. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/thirdparty/zh_num.py +0 -0
  70. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/util.py +0 -0
  71. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx/voice.py +0 -0
  72. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx.egg-info/dependency_links.txt +0 -0
  73. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx.egg-info/top_level.txt +0 -0
  74. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/export_onnx.py +0 -0
  75. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/norm_audio/__init__.py +0 -0
  76. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/norm_audio/trim.py +0 -0
  77. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/norm_audio/vad.py +0 -0
  78. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/train.py +0 -0
  79. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/__init__.py +0 -0
  80. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/attentions.py +0 -0
  81. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/commons.py +0 -0
  82. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/config.py +0 -0
  83. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/dataset.py +0 -0
  84. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/lightning.py +0 -0
  85. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/losses.py +0 -0
  86. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/mel_processing.py +0 -0
  87. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/models.py +0 -0
  88. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/modules.py +0 -0
  89. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/monotonic_align/__init__.py +0 -0
  90. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/monotonic_align/setup.py +0 -0
  91. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/transforms.py +0 -0
  92. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/utils.py +0 -0
  93. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/phoonnx_train/vits/wavfile.py +0 -0
  94. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/setup.cfg +0 -0
  95. {phoonnx-0.2.6a2 → phoonnx-0.3.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phoonnx
3
- Version: 0.2.6a2
3
+ Version: 0.3.0
4
4
  Home-page: https://github.com/TigreGotico/phoonnx
5
5
  Author: JarbasAi
6
6
  Author-email: jarbasai@mailfence.com
@@ -56,6 +56,7 @@ class PhonemeType(str, Enum):
56
56
  OPENPHONEMIZER = "openphonemizer" # en
57
57
  G2PEN = "g2pen" # en
58
58
 
59
+ TUGAPHONE = "tugaphone" # pt
59
60
  G2PFA = "g2pfa"
60
61
  OPENJTALK = "openjtalk" # ja
61
62
  CUTLET = "cutlet" # ja
@@ -395,7 +396,7 @@ def get_phonemizer(phoneme_type: PhonemeType,
395
396
  from phoonnx.phonemizers import (EpitranPhonemizer, EspeakPhonemizer, OpenPhonemizer, OpenJTaklPhonemizer,
396
397
  ByT5Phonemizer, CharsiuPhonemizer, DeepPhonemizer, PersianPhonemizer,
397
398
  G2pCPhonemizer, G2pMPhonemizer, G2PKPhonemizer, G2PEnPhonemizer,
398
- TransphonePhonemizer, MirandesePhonemizer, GoruutPhonemizer,
399
+ TransphonePhonemizer, MirandesePhonemizer, GoruutPhonemizer, TugaphonePhonemizer,
399
400
  GruutPhonemizer, GraphemePhonemizer, MantoqPhonemizer, MisakiPhonemizer,
400
401
  KoG2PPhonemizer, PypinyinPhonemizer, PyKakasiPhonemizer, CotoviaPhonemizer,
401
402
  CutletPhonemizer, PhonikudPhonemizer, VIPhonemePhonemizer, XpinyinPhonemizer,
@@ -404,6 +405,8 @@ def get_phonemizer(phoneme_type: PhonemeType,
404
405
  phonemizer = EspeakPhonemizer()
405
406
  elif phoneme_type == PhonemeType.BYT5:
406
407
  phonemizer = ByT5Phonemizer(model)
408
+ elif phoneme_type == PhonemeType.TUGAPHONE:
409
+ phonemizer = TugaphonePhonemizer()
407
410
  elif phoneme_type == PhonemeType.CHARSIU:
408
411
  phonemizer = CharsiuPhonemizer(model)
409
412
  elif phoneme_type == PhonemeType.GRUUT:
@@ -7,6 +7,7 @@ from phoonnx.phonemizers.vi import VIPhonemePhonemizer
7
7
  from phoonnx.phonemizers.he import PhonikudPhonemizer
8
8
  from phoonnx.phonemizers.ar import MantoqPhonemizer
9
9
  from phoonnx.phonemizers.fa import PersianPhonemizer
10
+ from phoonnx.phonemizers.pt import TugaphonePhonemizer
10
11
  from phoonnx.phonemizers.ja import PyKakasiPhonemizer, CutletPhonemizer, OpenJTaklPhonemizer
11
12
  from phoonnx.phonemizers.ko import KoG2PPhonemizer, G2PKPhonemizer
12
13
  from phoonnx.phonemizers.zh import (G2pCPhonemizer, G2pMPhonemizer, PypinyinPhonemizer,
@@ -18,6 +19,7 @@ from phoonnx.phonemizers.mwl import MirandesePhonemizer
18
19
  Phonemizer = Union[
19
20
  MisakiPhonemizer,
20
21
  ByT5Phonemizer,
22
+ TugaphonePhonemizer,
21
23
  UnicodeCodepointPhonemizer,
22
24
  CharsiuPhonemizer,
23
25
  EspeakPhonemizer,
@@ -0,0 +1,57 @@
1
+ from phoonnx.phonemizers.base import BasePhonemizer
2
+ from phoonnx.config import Alphabet
3
+
4
+
5
+ class TugaphonePhonemizer(BasePhonemizer):
6
+
7
+ def __init__(self):
8
+ from tugaphone import TugaPhonemizer
9
+ self.tuga = TugaPhonemizer()
10
+ super().__init__(Alphabet.IPA)
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
+ # this check is here only to throw an exception if invalid language is provided
27
+ return cls.match_lang(target_lang, ["pt-PT", "pt-BR", "pt-AO", "pt-MZ", "pt-TL"])
28
+
29
+ def phonemize_string(self, text: str, lang: str) -> str:
30
+ lang = self.get_lang(lang)
31
+ # TODO - support regional dialects
32
+ return self.tuga.phonemize_sentence(text, lang)
33
+
34
+
35
+
36
+ if __name__ == "__main__":
37
+
38
+ pho = TugaphonePhonemizer()
39
+
40
+ sentences = [
41
+ "O gato dorme.",
42
+ "Tu falas português muito bem.",
43
+ "O comboio chegou à estação.",
44
+ "A menina comeu o pão todo.",
45
+ "Vou pôr a manteiga no frigorífico.",
46
+ "Ele está a trabalhar no escritório.",
47
+ "Choveu muito ontem à noite.",
48
+ "A rapariga comprou um telemóvel novo.",
49
+ "Vamos tomar um pequeno-almoço.",
50
+ "O carro ficou sem gasolina."
51
+ ]
52
+
53
+ for s in sentences:
54
+ print(s)
55
+ for code in ["pt-PT", "pt-BR", "pt-AO", "pt-MZ", "pt-TL"]:
56
+ print(f"{code} → {pho.phonemize_string(s, code)}")
57
+ print("######")
@@ -1,8 +1,8 @@
1
1
  # START_VERSION_BLOCK
2
2
  VERSION_MAJOR = 0
3
- VERSION_MINOR = 2
4
- VERSION_BUILD = 6
5
- VERSION_ALPHA = 2
3
+ VERSION_MINOR = 3
4
+ VERSION_BUILD = 0
5
+ VERSION_ALPHA = 0
6
6
  # END_VERSION_BLOCK
7
7
 
8
8
  VERSION_STR = f"{VERSION_MAJOR}.{VERSION_MINOR}.{VERSION_BUILD}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phoonnx
3
- Version: 0.2.6a2
3
+ Version: 0.3.0
4
4
  Home-page: https://github.com/TigreGotico/phoonnx
5
5
  Author: JarbasAi
6
6
  Author-email: jarbasai@mailfence.com
@@ -26,6 +26,7 @@ phoonnx/phonemizers/ja.py
26
26
  phoonnx/phonemizers/ko.py
27
27
  phoonnx/phonemizers/mul.py
28
28
  phoonnx/phonemizers/mwl.py
29
+ phoonnx/phonemizers/pt.py
29
30
  phoonnx/phonemizers/vi.py
30
31
  phoonnx/phonemizers/zh.py
31
32
  phoonnx/thirdparty/__init__.py
@@ -93,6 +94,7 @@ phoonnx_train/../phoonnx/phonemizers/ja.py
93
94
  phoonnx_train/../phoonnx/phonemizers/ko.py
94
95
  phoonnx_train/../phoonnx/phonemizers/mul.py
95
96
  phoonnx_train/../phoonnx/phonemizers/mwl.py
97
+ phoonnx_train/../phoonnx/phonemizers/pt.py
96
98
  phoonnx_train/../phoonnx/phonemizers/vi.py
97
99
  phoonnx_train/../phoonnx/phonemizers/zh.py
98
100
  phoonnx_train/../phoonnx/thirdparty/__init__.py
@@ -236,6 +236,7 @@ epitran
236
236
  [pt]
237
237
  gruut[pt]<3.0,>=2.3.0
238
238
  epitran
239
+ tugaphone
239
240
 
240
241
  [quy]
241
242
  epitran
@@ -377,6 +377,16 @@ def phonemize_worker(
377
377
  is_flag=True,
378
378
  help="Add diacritics to text (phonemizer specific, e.g., to denote stress).",
379
379
  )
380
+ @click.option(
381
+ "--jsonl-audio-path",
382
+ default=None,
383
+ help="override audio_path base directory (everything before '/wav') in generated dataset.jsonl"
384
+ )
385
+ @click.option(
386
+ "--jsonl-audio-spec-path",
387
+ default=None,
388
+ help="override audio_norm_path/audio_spec_path base directory (everything before '/cache') in generated dataset.jsonl"
389
+ )
380
390
  def cli(
381
391
  input_dir: Path,
382
392
  output_dir: Path,
@@ -397,6 +407,8 @@ def cli(
397
407
  skip_audio: bool,
398
408
  debug: bool,
399
409
  add_diacritics: bool,
410
+ jsonl_audio_path: Optional[str],
411
+ jsonl_audio_spec_path: Optional[str],
400
412
  ) -> None:
401
413
  """
402
414
  Preprocess a TTS dataset (e.g., LJSpeech format) for training a VITS-style model.
@@ -609,6 +621,17 @@ def cli(
609
621
  _LOGGER.warning("Skipping utterance with invalid phoneme_ids before writing: %s", utt.audio_path)
610
622
  continue
611
623
 
624
+ # apply path overrides if needed
625
+ # this allows pre-processing the dataset in one system and then train in other
626
+ if jsonl_audio_path:
627
+ base_path, fname = str(utt.audio_path).split("/wav/")
628
+ utt.audio_path = Path(f"{jsonl_audio_path}/wav/{fname}")
629
+ if jsonl_audio_spec_path:
630
+ base_path, fname = str(utt.audio_norm_path).split("/cache/")
631
+ utt.audio_norm_path = Path(f"{jsonl_audio_spec_path}/cache/{fname}")
632
+ base_path, fname = str(utt.audio_spec_path).split("/cache/")
633
+ utt.audio_spec_path = Path(f"{jsonl_audio_spec_path}/cache/{fname}")
634
+
612
635
  json.dump(
613
636
  utt.asdict(),
614
637
  dataset_file,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes