scriptconv 0.0.4a10__tar.gz → 0.0.4a11__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 (99) hide show
  1. {scriptconv-0.0.4a10/scriptconv.egg-info → scriptconv-0.0.4a11}/PKG-INFO +1 -1
  2. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/ru.py +12 -9
  3. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/version.py +1 -1
  4. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11/scriptconv.egg-info}/PKG-INFO +1 -1
  5. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_phonemizers_ru.py +15 -0
  6. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/LICENSE +0 -0
  7. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/README.md +0 -0
  8. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/pyproject.toml +0 -0
  9. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/requirements.txt +0 -0
  10. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/__init__.py +0 -0
  11. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/__main__.py +0 -0
  12. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/cangjie.py +0 -0
  13. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/conventions.py +0 -0
  14. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/data/__init__.py +0 -0
  15. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/data/cangjie5_tc.tsv.gz +0 -0
  16. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/diacritics.py +0 -0
  17. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/graph.py +0 -0
  18. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/notation.py +0 -0
  19. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/__init__.py +0 -0
  20. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/__init__.py +0 -0
  21. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/bw2ipa.py +0 -0
  22. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py +0 -0
  23. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/aspiration.csv +0 -0
  24. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/assimilation.csv +0 -0
  25. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/double_coda.csv +0 -0
  26. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv +0 -0
  27. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv +0 -0
  28. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/neutralization.csv +0 -0
  29. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/tensification.csv +0 -0
  30. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv +0 -0
  31. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/__init__.py +0 -0
  32. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py +0 -0
  33. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py +0 -0
  34. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py +0 -0
  35. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py +0 -0
  36. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/espeak.py +0 -0
  37. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/frontend.py +0 -0
  38. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/levantine_g2p.py +0 -0
  39. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/normalize.py +0 -0
  40. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/shami/phoneme_inventory.py +0 -0
  41. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/vosk_g2p.py +0 -0
  42. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_thirdparty/zh_num.py +0 -0
  43. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/__init__.py +0 -0
  44. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/kog2p/LICENSE.md +0 -0
  45. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/kog2p/__init__.py +0 -0
  46. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/kog2p/rulebook.txt +0 -0
  47. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/LICENSE.md +0 -0
  48. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/__init__.py +0 -0
  49. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py +0 -0
  50. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/buck/phonetise_buckwalter.py +0 -0
  51. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py +0 -0
  52. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/buck/tokenization.py +0 -0
  53. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/num2words.py +0 -0
  54. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/_vendored/mantoq/unicode_symbol2label.py +0 -0
  55. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/ar.py +0 -0
  56. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/base.py +0 -0
  57. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/en.py +0 -0
  58. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/enums.py +0 -0
  59. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/eu.py +0 -0
  60. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/fa.py +0 -0
  61. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/gl.py +0 -0
  62. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/he.py +0 -0
  63. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/ja.py +0 -0
  64. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/ko.py +0 -0
  65. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/mul.py +0 -0
  66. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/mwl.py +0 -0
  67. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/o2ipa.py +0 -0
  68. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/pt.py +0 -0
  69. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/registry.py +0 -0
  70. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/shami.py +0 -0
  71. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/vi.py +0 -0
  72. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/phonemizers/zh.py +0 -0
  73. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/py.typed +0 -0
  74. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/readings.py +0 -0
  75. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/scripts.py +0 -0
  76. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv/translit.py +0 -0
  77. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv.egg-info/SOURCES.txt +0 -0
  78. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv.egg-info/dependency_links.txt +0 -0
  79. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv.egg-info/requires.txt +0 -0
  80. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/scriptconv.egg-info/top_level.txt +0 -0
  81. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/setup.cfg +0 -0
  82. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_arpa_stress.py +0 -0
  83. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_cangjie.py +0 -0
  84. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_cli.py +0 -0
  85. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_conventions.py +0 -0
  86. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_diacritics.py +0 -0
  87. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_diacritics_graph.py +0 -0
  88. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_errors_policy.py +0 -0
  89. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_examples.py +0 -0
  90. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_graph.py +0 -0
  91. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_notation.py +0 -0
  92. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_phonemizers_base.py +0 -0
  93. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_phonemizers_cjk_ar.py +0 -0
  94. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_phonemizers_friendly_import_errors.py +0 -0
  95. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_readings.py +0 -0
  96. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_readings_zh.py +0 -0
  97. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_scripts.py +0 -0
  98. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_scripts_stressonnx_compat.py +0 -0
  99. {scriptconv-0.0.4a10 → scriptconv-0.0.4a11}/tests/test_translit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scriptconv
3
- Version: 0.0.4a10
3
+ Version: 0.0.4a11
4
4
  Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
@@ -5,7 +5,7 @@ Currently one backend: the Vosk-TTS front-end, wrapping the vendored
5
5
  Russian voices can be driven from text without the ``vosk-tts`` package.
6
6
  """
7
7
  import re
8
- from typing import List, Optional
8
+ from typing import Iterator, List, Optional
9
9
 
10
10
  from quebra_frases import sentence_tokenize
11
11
 
@@ -86,25 +86,28 @@ class VoskPhonemizer(BasePhonemizer):
86
86
  tokens.extend(convert(word).split())
87
87
  return tokens
88
88
 
89
- def phonemize(self, text: str, lang: str) -> PhonemizedChunks:
90
- """Sentence-level lists of Vosk phoneme tokens.
89
+ def phonemize_lazy(self, text: str, lang: str) -> Iterator[List[str]]:
90
+ """Sentence-level lists of Vosk phoneme tokens, one sentence at a time.
91
91
 
92
92
  Punctuation is preserved (it drives pausing); each sentence becomes one
93
93
  synthesis chunk. Multi-character tokens (``sch``, ``bj``, ``a1``) stay
94
- whole, so :meth:`BasePhonemizer.phonemize`'s per-character split is
95
- deliberately bypassed.
94
+ whole, so :meth:`BasePhonemizer.phonemize_lazy`'s per-character split of
95
+ the phoneme *string* is deliberately bypassed — splitting ``s h`` into
96
+ characters would later fold back into ``sh`` (ш), a different phoneme.
96
97
  """
97
98
  self.get_lang(lang)
98
99
  if not text:
99
- return []
100
+ return
100
101
  if self.normalizer is not None:
101
102
  text = self.normalizer(text, lang)
102
- results: PhonemizedChunks = []
103
103
  for sentence in sentence_tokenize(text):
104
104
  tokens = self._g2p_tokens(sentence)
105
105
  if tokens:
106
- results.append(tokens)
107
- return results
106
+ yield tokens
107
+
108
+ def phonemize(self, text: str, lang: str) -> PhonemizedChunks:
109
+ """Sentence-level lists of Vosk phoneme tokens."""
110
+ return list(self.phonemize_lazy(text, lang))
108
111
 
109
112
  def phonemize_to_list(self, text: str, lang: str) -> List[str]:
110
113
  self.get_lang(lang)
@@ -2,7 +2,7 @@
2
2
  VERSION_MAJOR = 0
3
3
  VERSION_MINOR = 0
4
4
  VERSION_BUILD = 4
5
- VERSION_ALPHA = 10
5
+ VERSION_ALPHA = 11
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.4
2
2
  Name: scriptconv
3
- Version: 0.0.4a10
3
+ Version: 0.0.4a11
4
4
  Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
@@ -209,6 +209,21 @@ class TestVoskRegistration(unittest.TestCase):
209
209
  p = phonemizer_for_lang("ru", alphabet=Alphabet.IPA)
210
210
  self.assertNotIsInstance(p, VoskPhonemizer)
211
211
 
212
+ def test_phonemize_lazy_keeps_tokens_whole(self):
213
+ # the lazy path is what consumers stream through: it must yield the same
214
+ # whole phoneme tokens as phonemize(), never a per-character split
215
+ # ("s", "h" would otherwise fold back into "sh" — a different phoneme)
216
+ p = VoskPhonemizer()
217
+ text = "Сходить в кино. Счастье рядом!"
218
+ self.assertEqual(list(p.phonemize_lazy(text, "ru")), p.phonemize(text, "ru"))
219
+ flat = [t for chunk in p.phonemize_lazy(text, "ru") for t in chunk]
220
+ self.assertIn("s", flat)
221
+ self.assertIn("h", flat)
222
+ self.assertTrue(all(len(t) <= 3 for t in flat))
223
+ # every emitted token is a real phoneme/pause, not a bare character of one
224
+ self.assertNotIn("0", flat)
225
+ self.assertNotIn("1", flat)
226
+
212
227
  def test_module_level_phonemize_facade(self):
213
228
  self.assertEqual(phonemize("Привет", "ru", alphabet=Alphabet.VOSK),
214
229
  "p rj i0 vj e0 t")
File without changes
File without changes
File without changes