scriptconv 0.0.4a18__tar.gz → 0.0.4a19__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.
- {scriptconv-0.0.4a18/scriptconv.egg-info → scriptconv-0.0.4a19}/PKG-INFO +1 -1
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/pyproject.toml +1 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/notation.py +73 -1
- scriptconv-0.0.4a19/scriptconv/phonemizers/_vendored/iqra_phonetiser/LICENSE.md +28 -0
- scriptconv-0.0.4a19/scriptconv/phonemizers/_vendored/iqra_phonetiser/__init__.py +7 -0
- scriptconv-0.0.4a19/scriptconv/phonemizers/_vendored/iqra_phonetiser/phonetiser.py +456 -0
- scriptconv-0.0.4a19/scriptconv/phonemizers/ar.py +381 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/enums.py +2 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/registry.py +2 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/version.py +1 -1
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19/scriptconv.egg-info}/PKG-INFO +1 -1
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv.egg-info/SOURCES.txt +4 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_phonemizers_base.py +1 -1
- scriptconv-0.0.4a19/tests/test_phonemizers_halabi_iqra.py +210 -0
- scriptconv-0.0.4a18/scriptconv/phonemizers/ar.py +0 -140
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/LICENSE +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/README.md +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/requirements.txt +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/__main__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/cangjie.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/conventions.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/data/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/data/cangjie5_tc.tsv.gz +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/diacritics.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/graph.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/bw2ipa.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/aspiration.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/assimilation.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/double_coda.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/neutralization.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/tensification.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/espeak.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/frontend.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/levantine_g2p.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/normalize.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/shami/phoneme_inventory.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/vosk_g2p.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_thirdparty/zh_num.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/DATA_LICENSE.md +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/LICENSE.md +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/cli.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/data/registry.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/g2p.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aar.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/abi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/acd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ach.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/acz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ada.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ade.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/adj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aeb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ael.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/afr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ags.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aha.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aiw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ajg.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/akp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aks.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/aku.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/alz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/amb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/amf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/amh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/anc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ank.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ann.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/any.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/apd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ara.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/arb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ary.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/arz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ato.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/avi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/avn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/avu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ayb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/azo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bam.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bas.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bav.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bax.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bba.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bbq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bci.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bcq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bde.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bdj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bdu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bec.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/beh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bej.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bem.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bex.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bfa.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bfj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bfm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bhy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bib.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bim.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bin.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bjo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bjt.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bkc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bkm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bky.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ble.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/blm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bng.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bni.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bol.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bom.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bot.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/boy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/boz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bqj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bqp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bqx.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bsc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bsq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/buc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bud.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/buf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bum.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bva.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bvm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bwj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bxk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/byn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/byv.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/bza.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cgg.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cjk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cko.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cme.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/cop.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/daa.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/daf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dag.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dbq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dec.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dgd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/did.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/din.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dmf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dnj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dop-benin.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dop-benin2.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dow.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dsh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dua.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dug.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dyo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dyu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/dzd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ebo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ebr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/efi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ell.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ema.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/emk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/eng.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/enn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/etn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/eto.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ewe.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ewo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fak.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fat.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ffm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fia.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/flr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fmp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fng.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fod.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fon.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fuc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/fue.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gaa.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gej.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gez.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gfe.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gha.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gho.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gjn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gng.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/god.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gog.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gou.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/grb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/grr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gud.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/guk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gur.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gux.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/guz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gwa.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gwd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gwr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/gxx.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hag.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/har.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hau-niger.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hau-nigeria.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hay.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hdy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/hts.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ibo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/igb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ige.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/igl.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/igo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ikw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/irk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/iso.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/jib.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kab.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kbo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kbp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kbr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kcn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kde.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kdx.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kea.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kec.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ker.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/khq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/khy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kik.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kin.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kiz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kmb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/knc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/knf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/koo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kpe.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kqs.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/krb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kri.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ksb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ktz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kuj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/kus.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lad.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lai.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lch.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ldd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lgg.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lgq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lig.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lin.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lky.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lln.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lma.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lmd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lmp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lns.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/loi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lok.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lol.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lot.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lpx.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lub.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/luc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lue.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lug.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lul.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/lun.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/luw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mas.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/maw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mck.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mcp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mcu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mdj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mev.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfe.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mfq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mgc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mgd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mgh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mhi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mkf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mkw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mlg.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mlw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mmo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mmy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mnf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mnk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mos.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mpg.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mqu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mse.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mur.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mwe.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myf.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/myx.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/mzk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/naw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nba.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ncu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ndb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ndo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ney.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nfr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nga.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngb-zaire.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngb-zaire2.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ngi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nhb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nhu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nhw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nko.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nmn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nmq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nnb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nnh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nnw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nqo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nso.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nuj.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nup.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nus.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nwb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nya.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nym.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nzd.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/nzi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ogc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/oku.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/onw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pae.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pbi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pny.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pov.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/puu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/pze.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/rel.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/rmt.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/rng.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/run.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sad.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sag-central_african_republic.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sag-congo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sav.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sef-cote_d_ivoire.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sef-cote_d_ivoire2.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/seh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/she.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/shk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/shu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/shy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sig.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/siz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sld.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sna.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/snk-senegal.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/snk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sok.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sop.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/spa.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/spy.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ssl.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ssn.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ssw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/suk.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sur.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sus.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/swb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/swh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/sym.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/szg.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tan.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/taq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/taz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tbt.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tbz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ted.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tem.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/teo.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/thv.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/thz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tig.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tik.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tir.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tmc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tnr.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/toh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/toq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/trc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tsc.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tso.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tsp.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ttq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tui.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tum.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tuq.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tuz.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/twi.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/tzm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/uba.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/udu.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ukv.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/urh.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vag.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vai.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ven.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vmw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/vut.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wan.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wib.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wmw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wob.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wol.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/wwa.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xho.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xog.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xon.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xrb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/xsm.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yam.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yat.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ybb.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yid.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yko.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yor.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/yun.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zag.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zen.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/ziw.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zne.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/languages/zul.json +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/loader.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/normalizer.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/africa_g2p/pipeline.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/kog2p/LICENSE.md +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/kog2p/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/kog2p/rulebook.txt +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/LICENSE.md +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/buck/phonetise_buckwalter.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/buck/tokenization.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/num2words.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/_vendored/mantoq/unicode_symbol2label.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/africa.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/base.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/en.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/eu.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/fa.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/gl.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/he.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/ja.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/ko.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/mul.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/mwl.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/o2ipa.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/pt.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/ru.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/shami.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/vi.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/phonemizers/zh.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/py.typed +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/readings.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/scripts.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv/translit.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv.egg-info/dependency_links.txt +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv.egg-info/requires.txt +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/scriptconv.egg-info/top_level.txt +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/setup.cfg +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_arpa_stress.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_cangjie.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_cli.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_conventions.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_diacritics.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_diacritics_graph.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_errors_policy.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_examples.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_graph.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_notation.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_phonemizers_africa.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_phonemizers_cjk_ar.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_phonemizers_friendly_import_errors.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_phonemizers_ru.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_readings.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_readings_zh.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_scripts.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_scripts_stressonnx_compat.py +0 -0
- {scriptconv-0.0.4a18 → scriptconv-0.0.4a19}/tests/test_translit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4a19
|
|
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
|
|
@@ -76,6 +76,7 @@ scriptconv = ["py.typed"]
|
|
|
76
76
|
"scriptconv.phonemizers._thirdparty" = ["ko_tables/*.csv", "ko_tables/*.tsv"]
|
|
77
77
|
"scriptconv.phonemizers._vendored.kog2p" = ["rulebook.txt", "LICENSE.md"]
|
|
78
78
|
"scriptconv.phonemizers._vendored.mantoq" = ["LICENSE.md"]
|
|
79
|
+
"scriptconv.phonemizers._vendored.iqra_phonetiser" = ["LICENSE.md"]
|
|
79
80
|
"scriptconv.phonemizers._vendored.africa_g2p" = [
|
|
80
81
|
"LICENSE.md", "DATA_LICENSE.md",
|
|
81
82
|
"languages/*.json", "data/*.json",
|
|
@@ -42,6 +42,7 @@ __all__ = [
|
|
|
42
42
|
"rfe_to_ipa",
|
|
43
43
|
"ipa_to_rfe",
|
|
44
44
|
"halabi_to_ipa",
|
|
45
|
+
"iqra_halabi_to_ipa",
|
|
45
46
|
"looks_like_ipa",
|
|
46
47
|
]
|
|
47
48
|
|
|
@@ -1048,10 +1049,20 @@ _HALABI_VOWELS: dict[str, str] = {
|
|
|
1048
1049
|
"a": "a", "aa": "aː", "aaaa": "aːː",
|
|
1049
1050
|
"i": "i", "ii": "iː",
|
|
1050
1051
|
"u": "u", "uu": "uː",
|
|
1052
|
+
# emphatic-context allophones from the RAW (pre-mantoq-simplification)
|
|
1053
|
+
# Halabi phonetiser layer — mantoq's own g2p folds these to the plain
|
|
1054
|
+
# forms above via ``simplify_phonemes``, but scriptconv's raw
|
|
1055
|
+
# ``Phonemizer.HALABI``/``Phonemizer.IQRA`` edges call the phonetiser
|
|
1056
|
+
# directly and preserve the distinction (see arbtok's
|
|
1057
|
+
# scripts/benchmark_iqraeval.py, verified symbol-by-symbol against the
|
|
1058
|
+
# IqraEval/Iqra_train corpus).
|
|
1059
|
+
"A": "ɑ", "AA": "ɑː",
|
|
1060
|
+
"I": "ɪ", "II": "ɪː",
|
|
1061
|
+
"U": "ʊ", "UU": "ʊː",
|
|
1051
1062
|
}
|
|
1052
1063
|
|
|
1053
1064
|
_HALABI_MULTI = ("_dbl_", "_+_", "_sil_", "_eos_", "_pad_",
|
|
1054
|
-
"aaaa", "aa", "ii", "uu")
|
|
1065
|
+
"aaaa", "aa", "ii", "uu", "AA", "II", "UU")
|
|
1055
1066
|
|
|
1056
1067
|
|
|
1057
1068
|
def _tokenize_halabi(text: str) -> list[str]:
|
|
@@ -1136,6 +1147,67 @@ def halabi_to_ipa(halabi: str | list[str], errors: str = "pass") -> str:
|
|
|
1136
1147
|
return "".join(out)
|
|
1137
1148
|
|
|
1138
1149
|
|
|
1150
|
+
# ---------------------------------------------------------------------------
|
|
1151
|
+
# IqraEval phoneme_ref -> IPA
|
|
1152
|
+
#
|
|
1153
|
+
# The IqraEval shared task (Interspeech 2025, doi:10.21437/Interspeech.2025-2411
|
|
1154
|
+
# — "we employed the phonetizer introduced by Nawar Halabi") scores against a
|
|
1155
|
+
# space-separated ``phoneme_ref`` column that is the raw Halabi phonetiser
|
|
1156
|
+
# output with the stress/vowel-realization digits, the ``+`` word separator
|
|
1157
|
+
# and the ``sil`` pause token stripped — but, unlike mantoq's own
|
|
1158
|
+
# ``simplify_phonemes``, keeping the emphatic-allophone uppercase vowels
|
|
1159
|
+
# (``A``/``AA``/``I``/``II``/``U``/``UU``) and gemination as a literal doubled
|
|
1160
|
+
# consonant letter (``bb``, ``nn``, …) rather than a ``_dbl_`` marker. Table
|
|
1161
|
+
# verified symbol-by-symbol against a 5,050-row IqraEval/Iqra_train sample by
|
|
1162
|
+
# TigreGotico/arbtok's ``scripts/benchmark_iqraeval.py``; reproduced here
|
|
1163
|
+
# (same license posture as ``halabi_to_ipa`` above: a factual symbol table,
|
|
1164
|
+
# not the CC BY-NC phonetiser code).
|
|
1165
|
+
# ---------------------------------------------------------------------------
|
|
1166
|
+
|
|
1167
|
+
_IQRA_CONSONANTS: dict[str, str] = {
|
|
1168
|
+
"b": "b", "t": "t", "^": "θ", "j": "dʒ", "H": "ħ", "x": "x", "d": "d",
|
|
1169
|
+
"*": "ð", "r": "r", "z": "z", "s": "s", "$": "ʃ", "S": "sˤ", "D": "dˤ",
|
|
1170
|
+
"T": "tˤ", "Z": "ðˤ", "E": "ʕ", "g": "ɣ", "f": "f", "q": "q", "k": "k",
|
|
1171
|
+
"l": "l", "m": "m", "n": "n", "h": "h", "w": "w", "y": "j", "<": "ʔ",
|
|
1172
|
+
}
|
|
1173
|
+
_IQRA_VOWELS: dict[str, str] = {
|
|
1174
|
+
"a": "a", "aa": "aː", "A": "ɑ", "AA": "ɑː",
|
|
1175
|
+
"i": "i", "ii": "iː", "I": "ɪ", "II": "ɪː",
|
|
1176
|
+
"u": "u", "uu": "uː", "U": "ʊ", "UU": "ʊː",
|
|
1177
|
+
}
|
|
1178
|
+
_IQRA_NOTATION: dict[str, str] = dict(_IQRA_VOWELS)
|
|
1179
|
+
for _sym, _ipa in _IQRA_CONSONANTS.items():
|
|
1180
|
+
_IQRA_NOTATION[_sym] = _ipa
|
|
1181
|
+
_IQRA_NOTATION[_sym * 2] = _ipa + "ː" # gemination: doubled token, shadda
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
def iqra_halabi_to_ipa(tokens: str, errors: str = "pass") -> str:
|
|
1185
|
+
"""Convert IqraEval-flavored (already digit/separator/sil-stripped)
|
|
1186
|
+
space-separated Halabi tokens to IPA.
|
|
1187
|
+
|
|
1188
|
+
Unlike :func:`halabi_to_ipa` (which targets mantoq's own simplified,
|
|
1189
|
+
lowercase-only inventory), this keeps the emphatic-allophone uppercase
|
|
1190
|
+
vowels distinct and reads gemination off a literal doubled consonant
|
|
1191
|
+
letter — the ``phoneme_ref`` convention. Unknown tokens follow the
|
|
1192
|
+
``errors`` policy (``"pass"`` by default: passed through verbatim).
|
|
1193
|
+
|
|
1194
|
+
Examples
|
|
1195
|
+
--------
|
|
1196
|
+
>>> iqra_halabi_to_ipa("f ii h i x A y r aa t u n")
|
|
1197
|
+
'fiːhixɑjraːtun'
|
|
1198
|
+
"""
|
|
1199
|
+
out = []
|
|
1200
|
+
for pos, tok in enumerate(tokens.split()):
|
|
1201
|
+
ipa = _IQRA_NOTATION.get(tok)
|
|
1202
|
+
if ipa is not None:
|
|
1203
|
+
out.append(ipa)
|
|
1204
|
+
else:
|
|
1205
|
+
res = _unknown(tok, pos, "halabi", errors, replacement=f"{{{{{tok}}}}}")
|
|
1206
|
+
if res:
|
|
1207
|
+
out.append(res)
|
|
1208
|
+
return "".join(out)
|
|
1209
|
+
|
|
1210
|
+
|
|
1139
1211
|
# ---------------------------------------------------------------------------
|
|
1140
1212
|
# convert — facade routing through IPA where no direct map exists
|
|
1141
1213
|
# ---------------------------------------------------------------------------
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Third-party license notice — iqra_phonetiser
|
|
2
|
+
|
|
3
|
+
This directory vendors the phonetisation core of `phonetise_Arabic.py` from
|
|
4
|
+
[Iqra-Eval/MSA_phonetiser](https://github.com/Iqra-Eval/MSA_phonetiser) — the
|
|
5
|
+
IqraEval shared task's own published data-prep code (used, per its
|
|
6
|
+
`run_phonetiser.py`, to generate the `phoneme_ref` column of
|
|
7
|
+
`IqraEval/Iqra_train`, the corpus `Phonemizer.IQRA` targets).
|
|
8
|
+
|
|
9
|
+
That file is itself a fork of Nawar Halabi's Arabic-Phonetiser
|
|
10
|
+
(https://github.com/nawarhalabi/Arabic-Phonetiser), licensed under the
|
|
11
|
+
**Creative Commons Attribution-NonCommercial 4.0 International License**
|
|
12
|
+
(https://creativecommons.org/licenses/by-nc/4.0/) — NOT the Apache-2.0 license
|
|
13
|
+
of the rest of this repository. `phonetise-Buckwalter.py` in the IqraEval fork
|
|
14
|
+
is byte-identical to the original upstream file (`cmp` verified);
|
|
15
|
+
`phonetise_Arabic.py` carries small, deliberate patches on top of it (see
|
|
16
|
+
`phonetiser.py`'s module docstring for the diff against both the original
|
|
17
|
+
upstream and against mantoq's own vendored copy). The IqraEval fork carries no
|
|
18
|
+
separate LICENSE file of its own, so the inherited CC BY-NC 4.0 terms govern
|
|
19
|
+
it as a derivative work.
|
|
20
|
+
|
|
21
|
+
Kept in its own quarantine, separate from `../mantoq/` — the two are
|
|
22
|
+
independent copies of the same phonetiser family at different patch levels,
|
|
23
|
+
each with the specific behavior a different scriptconv edge needs preserved:
|
|
24
|
+
`../mantoq/` for `Phonemizer.MANTOQ`'s long-standing, model-compatible
|
|
25
|
+
contract; this one for `Phonemizer.HALABI`/`Phonemizer.IQRA`'s fidelity to
|
|
26
|
+
`phoneme_ref`. Nothing here imports at package import time; using it is an
|
|
27
|
+
explicit per-request opt-in (constructing `HalabiPhonemizer` or
|
|
28
|
+
`IqraPhonemizer`) that accepts this directory's license.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""Quarantined vendored copy — see ``LICENSE.md`` in this directory.
|
|
2
|
+
|
|
3
|
+
Nothing imports at package import time; callers reach in explicitly via
|
|
4
|
+
``scriptconv.phonemizers._vendored.iqra_phonetiser.phonetiser`` (what
|
|
5
|
+
:class:`scriptconv.phonemizers.ar.IqraPhonemizer` does), matching the same
|
|
6
|
+
opt-in pattern as ``_vendored/mantoq``.
|
|
7
|
+
"""
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
# -*- coding: UTF8 -*-
|
|
2
|
+
"""Phonetisation core ported from Iqra-Eval/MSA_phonetiser's
|
|
3
|
+
``phonetiser/phonetise_Arabic.py`` (https://github.com/Iqra-Eval/MSA_phonetiser),
|
|
4
|
+
the IqraEval shared task's own published data-prep code — see this
|
|
5
|
+
directory's LICENSE.md for the CC BY-NC 4.0 provenance chain (nawarhalabi's
|
|
6
|
+
original Arabic-Phonetiser -> the IqraEval fork -> this trim).
|
|
7
|
+
|
|
8
|
+
Trimmed from the original: the stress-boundary annotation path
|
|
9
|
+
(``findStressIndex``/``utterancesPronuncationsWithBoundaries``) is dropped —
|
|
10
|
+
``run_phonetiser.py``'s own ``get_phoneme()`` only ever reads
|
|
11
|
+
``phonetise(text)[1]`` (the plain, non-stress-annotated pronunciation list),
|
|
12
|
+
so dropping it changes nothing observable and spares vendoring
|
|
13
|
+
``phonetiser/findstress.py`` for a feature ``phoneme_ref`` never used
|
|
14
|
+
(arbtok's ``scripts/benchmark_iqraeval.py`` independently confirms "no
|
|
15
|
+
silence, pause, or explicit stress token appears in the sample"). The
|
|
16
|
+
CLI/file-I/O wrapper (the original file's ``if __name__ == "__main__":``
|
|
17
|
+
block) is dropped too — scriptconv calls ``phonetise()`` directly.
|
|
18
|
+
|
|
19
|
+
## Why this file exists next to mantoq's own vendored copy
|
|
20
|
+
|
|
21
|
+
Diffing this fork against both nawarhalabi's original upstream
|
|
22
|
+
(github.com/nawarhalabi/Arabic-Phonetiser/blob/master/phonetise-Buckwalter.py)
|
|
23
|
+
and mantoq's vendored ``buck/phonetise_buckwalter.py``
|
|
24
|
+
(``scriptconv/phonemizers/_vendored/mantoq/``) surfaced the root causes of
|
|
25
|
+
every major residual mismatch class ``Phonemizer.IQRA`` had against
|
|
26
|
+
``IqraEval/Iqra_train``'s ``phoneme_ref`` before this file was ported in
|
|
27
|
+
(see the PR that introduced it for the full methodology and match-rate
|
|
28
|
+
history):
|
|
29
|
+
|
|
30
|
+
1. **mantoq's copy delegates Arabic<->Buckwalter transliteration to
|
|
31
|
+
``scriptconv.notation``'s *standard* Buckwalter table**, which encodes
|
|
32
|
+
"th" (ث) as ``v`` (the Tim Buckwalter scheme). Nawar Halabi's OWN
|
|
33
|
+
phonetiser — both the pristine upstream file and this IqraEval fork —
|
|
34
|
+
was written against his own non-standard variant, where ث is ``^``
|
|
35
|
+
(verified: this is the ONLY letter the two schemes disagree on, diffed
|
|
36
|
+
character-by-character). ``v`` isn't in ``unambiguousConsonantMap`` at
|
|
37
|
+
all in either variant (there it names an unrelated loanword phone), so
|
|
38
|
+
every ث silently vanished when phonetised through mantoq's copy. This
|
|
39
|
+
file's own ``arabic_to_buckwalter`` (below) is Halabi's original
|
|
40
|
+
inline dict, so the bug cannot occur here.
|
|
41
|
+
2. **The word-initial "kaf/wāw + alif" ambiguity** (upstream/mantoq:
|
|
42
|
+
``letter=="A" and letter_1 in ("w","k") and letter_2=="b"``, matching
|
|
43
|
+
*any* word starting with ك or و immediately followed by alif — e.g.
|
|
44
|
+
"كَانَ" kāna — and defaulting its first-generated pronunciation to the
|
|
45
|
+
short-vowel reading) is narrowed here to
|
|
46
|
+
``letter=="A" and letter_1 in ("w","k") and letter_2=="b" and letter1=="l"``:
|
|
47
|
+
only "كال-"/"وال-" (preposition + definite article) is genuinely
|
|
48
|
+
ambiguous; "كان" and similar words are just unconditionally long, as
|
|
49
|
+
real Arabic orthography says an alif always is.
|
|
50
|
+
3. **Wāw al-jamāʿah's silent alif** (masculine-plural verb ending, "-وا"):
|
|
51
|
+
the ambiguous-candidate order is swapped so the *elided* alif is the
|
|
52
|
+
default (index 0) reading, rather than upstream/mantoq's *pronounced*
|
|
53
|
+
default — matching how the alif there is a purely orthographic marker.
|
|
54
|
+
4. **Sun-letter lam-omission** is restricted to firing only when the lam
|
|
55
|
+
is genuinely part of "ال" or is word-initial on its own
|
|
56
|
+
(``letter_1 in ("A", "l", "b")`` guard added), rather than any lam
|
|
57
|
+
anywhere immediately before a shadda-doubled consonant.
|
|
58
|
+
|
|
59
|
+
None of these are hypothetical: (1)-(3) are diff-verified against the
|
|
60
|
+
IqraEval fork's actual source; whether (4) reproduces `phoneme_ref`'s
|
|
61
|
+
practice of never eliding the definite article's lam even before a sun
|
|
62
|
+
letter is verified empirically (see the benchmark script).
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
# ----------------------------------------------------------------------------
|
|
66
|
+
# Arabic <-> Buckwalter — Halabi's OWN scheme (NOT scriptconv.notation's
|
|
67
|
+
# standard-Buckwalter table: this is the one letter it disagrees with — ث is
|
|
68
|
+
# "^" here, "v" in the standard scheme — see the module docstring, point 1).
|
|
69
|
+
# ----------------------------------------------------------------------------
|
|
70
|
+
buckwalter = {
|
|
71
|
+
"ب": "b", "ذ": "*", "ط": "T", "م": "m",
|
|
72
|
+
"ت": "t", "ر": "r", "ظ": "Z", "ن": "n",
|
|
73
|
+
"ث": "^", "ز": "z", "ع": "E", "ه": "h",
|
|
74
|
+
"ج": "j", "س": "s", "غ": "g", "ح": "H",
|
|
75
|
+
"ق": "q", "ف": "f", "خ": "x", "ص": "S",
|
|
76
|
+
"ش": "$", "د": "d", "ض": "D", "ك": "k",
|
|
77
|
+
"أ": ">", "ء": "'", "ئ": "}", "ؤ": "&",
|
|
78
|
+
"إ": "<", "آ": "|", "ا": "A", "ى": "Y",
|
|
79
|
+
"ة": "p", "ي": "y", "ل": "l", "و": "w",
|
|
80
|
+
"ً": "F", "ٌ": "N", "ٍ": "K", "َ": "a",
|
|
81
|
+
"ُ": "u", "ِ": "i", "ّ": "~", "ْ": "o",
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def arabic_to_buckwalter(word: str) -> str:
|
|
86
|
+
return "".join(buckwalter.get(letter, letter) for letter in word)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
# ----------------------------------------------------------------------------
|
|
90
|
+
# Grapheme to Phoneme mappings (identical to upstream/mantoq except point 2
|
|
91
|
+
# and point 3 in the module docstring, both marked below)
|
|
92
|
+
# ----------------------------------------------------------------------------
|
|
93
|
+
unambiguousConsonantMap = {
|
|
94
|
+
"b": "b", "*": "*", "T": "T", "m": "m",
|
|
95
|
+
"t": "t", "r": "r", "Z": "Z", "n": "n",
|
|
96
|
+
"^": "^", "z": "z", "E": "E", "h": "h",
|
|
97
|
+
"j": "j", "s": "s", "g": "g", "H": "H",
|
|
98
|
+
"q": "q", "f": "f", "x": "x", "S": "S",
|
|
99
|
+
"$": "$", "d": "d", "D": "D", "k": "k",
|
|
100
|
+
">": "<", "'": "<", "}": "<", "&": "<",
|
|
101
|
+
"<": "<",
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
ambiguousConsonantMap = {
|
|
105
|
+
"l": ["l", ""], "w": "w", "y": "y", "p": ["t", ""],
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
maddaMap = {"|": [["<", "aa"], ["<", "AA"]]}
|
|
109
|
+
|
|
110
|
+
vowelMap = {
|
|
111
|
+
"A": [["aa", ""], ["AA", ""]], "Y": [["aa", ""], ["AA", ""]],
|
|
112
|
+
"w": [["uu0", "uu1"], ["UU0", "UU1"]],
|
|
113
|
+
"y": [["ii0", "ii1"], ["II0", "II1"]],
|
|
114
|
+
"a": ["a", "A"],
|
|
115
|
+
"u": [["u0", "u1"], ["U0", "U1"]],
|
|
116
|
+
"i": [["i0", "i1"], ["I0", "I1"]],
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
diacritics = ["o", "a", "u", "i", "F", "N", "K", "~"]
|
|
120
|
+
diacriticsWithoutShadda = ["o", "a", "u", "i", "F", "N", "K"]
|
|
121
|
+
emphatics = ["D", "S", "T", "Z", "g", "x", "q"]
|
|
122
|
+
forwardEmphatics = ["g", "x"]
|
|
123
|
+
consonants = [">", "<", "}", "&", "'", "b", "t", "^", "j", "H", "x", "d", "*",
|
|
124
|
+
"r", "z", "s", "$", "S", "D", "T", "Z", "E", "g", "f", "q", "k",
|
|
125
|
+
"l", "m", "n", "h", "|"]
|
|
126
|
+
|
|
127
|
+
# ------------------------------------------------------------------------------------
|
|
128
|
+
# Words with fixed irregular pronunciations (the IqraEval fork's expanded table:
|
|
129
|
+
# preposition-prefixed variants of the same fixed words)
|
|
130
|
+
# ------------------------------------------------------------------------------------
|
|
131
|
+
fixedWords = {
|
|
132
|
+
"h*A": ["h aa * aa", "h aa * a"],
|
|
133
|
+
"bh*A": ["b i0 h aa * aa", "b i0 h aa * a"],
|
|
134
|
+
"kh*A": ["k a h aa * aa", "k a h aa * a"],
|
|
135
|
+
"fh*A": ["f a h aa * aa", "f a h aa * a"],
|
|
136
|
+
"h*h": ["h aa * i0 h i0", "h aa * i1 h"],
|
|
137
|
+
"bh*h": ["b i0 h aa * i0 h i0", "b i0 h aa * i1 h"],
|
|
138
|
+
"kh*h": ["k a h aa * i0 h i0", "k a h aa * i1 h"],
|
|
139
|
+
"fh*h": ["f a h aa * i0 h i0", "f a h aa * i1 h"],
|
|
140
|
+
"h*An": ["h aa * aa n i0", "h aa * aa n"],
|
|
141
|
+
"h&lA'": ["h aa < u0 l aa < i0", "h aa < u0 l aa <"],
|
|
142
|
+
"*lk": ["* aa l i0 k a", "* aa l i0 k"],
|
|
143
|
+
"b*lk": ["b i0 * aa l i0 k a", "b i0 * aa l i0 k"],
|
|
144
|
+
"k*lk": ["k a * aa l i0 k a", "k a * aa l i1 k"],
|
|
145
|
+
"*lkm": "* aa l i0 k u1 m",
|
|
146
|
+
">wl}k": ["< u0 l aa < i0 k a", "< u0 l aa < i1 k"],
|
|
147
|
+
"Th": "T aa h a",
|
|
148
|
+
"lkn": ["l aa k i0 nn a", "l aa k i1 n"],
|
|
149
|
+
"lknh": "l aa k i0 nn a h u0",
|
|
150
|
+
"lknhm": "l aa k i0 nn a h u1 m",
|
|
151
|
+
"lknk": ["l aa k i0 nn a k a", "l aa k i0 nn a k i0"],
|
|
152
|
+
"lknkm": "l aa k i0 nn a k u1 m",
|
|
153
|
+
"lknkmA": "l aa k i0 nn a k u0 m aa",
|
|
154
|
+
"lknnA": "l aa k i0 nn a n aa",
|
|
155
|
+
"AlrHmn": ["rr a H m aa n i0", "rr a H m aa n"],
|
|
156
|
+
"Allh": ["ll aa h i0", "ll aa h", "ll AA h u0", "ll AA h a", "ll AA h", "ll A"],
|
|
157
|
+
"h*yn": ["h aa * a y n i0", "h aa * a y n"],
|
|
158
|
+
"wh*A": ["w a h aa * aa", "w a h aa * a"],
|
|
159
|
+
"wbh*A": ["w a b i0 h aa * aa", "w a b i0 h aa * a"],
|
|
160
|
+
"wkh*A": ["w a k a h aa * aa", "w a k a h aa * a"],
|
|
161
|
+
"wh*h": ["w a h aa * i0 h i0", "w a h aa * i1 h"],
|
|
162
|
+
"wbh*h": ["w a b i0 h aa * i0 h i0", "w a b i0 h aa * i1 h"],
|
|
163
|
+
"wkh*h": ["w a k a h aa * i0 h i0", "w a k a h aa * i1 h"],
|
|
164
|
+
"wh*An": ["w a h aa * aa n i0", "w a h aa * aa n"],
|
|
165
|
+
"wh&lA'": ["w a h aa < u0 l aa < i0", "w a h aa < u0 l aa <"],
|
|
166
|
+
"w*lk": ["w a * aa l i0 k a", "w a * aa l i0 k"],
|
|
167
|
+
"wb*lk": ["w a b i0 * aa l i0 k a", "w a b i0 * aa l i0 k"],
|
|
168
|
+
"wk*lk": ["w a k a * aa l i0 k a", "w a k a * aa l i1 k"],
|
|
169
|
+
"w*lkm": "w a * aa l i0 k u1 m",
|
|
170
|
+
"w>wl}k": ["w a < u0 l aa < i0 k a", "w a < u0 l aa < i1 k"],
|
|
171
|
+
"wTh": "w a T aa h a",
|
|
172
|
+
"wlkn": ["w a l aa k i0 nn a", "w a l aa k i1 n"],
|
|
173
|
+
"wlknh": "w a l aa k i0 nn a h u0",
|
|
174
|
+
"wlknhm": "w a l aa k i0 nn a h u1 m",
|
|
175
|
+
"wlknk": ["w a l aa k i0 nn a k a", "w a l aa k i0 nn a k i0"],
|
|
176
|
+
"wlknkm": "w a l aa k i0 nn a k u1 m",
|
|
177
|
+
"wlknkmA": "w a l aa k i0 nn a k u0 m aa",
|
|
178
|
+
"wlknnA": "w a l aa k i0 nn a n aa",
|
|
179
|
+
"wAlrHmn": ["w a rr a H m aa n i0", "w a rr a H m aa n"],
|
|
180
|
+
"wAllh": ["w a ll aa h i0", "w a ll aa h", "w a ll AA h u0", "w a ll AA h a",
|
|
181
|
+
"w a ll AA h", "w a ll A"],
|
|
182
|
+
"wh*yn": ["w a h aa * a y n i0", "w a h aa * a y n"],
|
|
183
|
+
"Aw": ["< a w"],
|
|
184
|
+
">w": ["< a w"],
|
|
185
|
+
"Alf": ["< a l f"],
|
|
186
|
+
">lf": ["< a l f"],
|
|
187
|
+
"b>lf": ["b i0 < a l f"],
|
|
188
|
+
"f>lf": ["f a < a l f"],
|
|
189
|
+
"wAlf": ["w a < a l f"],
|
|
190
|
+
"w>lf": ["w a < a l f"],
|
|
191
|
+
"wb>lf": ["w a b i0 < a l f"],
|
|
192
|
+
"nt": "n i1 t",
|
|
193
|
+
"fydyw": "v i0 d y uu1",
|
|
194
|
+
"lndn": "l A n d u1 n",
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def isFixedWord(word, results, pronunciations):
|
|
199
|
+
lastLetter = ""
|
|
200
|
+
if len(word) > 0:
|
|
201
|
+
lastLetter = word[-1]
|
|
202
|
+
if lastLetter == "a":
|
|
203
|
+
lastLetter = ["a", "A"]
|
|
204
|
+
elif lastLetter == "A":
|
|
205
|
+
lastLetter = ["aa"]
|
|
206
|
+
elif lastLetter == "u":
|
|
207
|
+
lastLetter = ["u0"]
|
|
208
|
+
elif lastLetter == "i":
|
|
209
|
+
lastLetter = ["i0"]
|
|
210
|
+
elif lastLetter in unambiguousConsonantMap:
|
|
211
|
+
lastLetter = [unambiguousConsonantMap[lastLetter]]
|
|
212
|
+
import re as _re
|
|
213
|
+
wordConsonants = _re.sub(r"[^h*Ahn'>wl}kmyTtfdb]", "", word)
|
|
214
|
+
if wordConsonants in fixedWords:
|
|
215
|
+
entry = fixedWords[wordConsonants]
|
|
216
|
+
if isinstance(entry, list):
|
|
217
|
+
done = False
|
|
218
|
+
for pronunciation in entry:
|
|
219
|
+
if pronunciation.split(" ")[-1] in lastLetter:
|
|
220
|
+
results += word + " " + pronunciation + "\n"
|
|
221
|
+
pronunciations.append(pronunciation.split(" "))
|
|
222
|
+
done = True
|
|
223
|
+
if not done:
|
|
224
|
+
results += word + " " + entry[0] + "\n"
|
|
225
|
+
pronunciations.append(entry[0].split(" "))
|
|
226
|
+
else:
|
|
227
|
+
results += word + " " + entry + "\n"
|
|
228
|
+
pronunciations.append(entry.split(" "))
|
|
229
|
+
return results
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def _process_word(word: str) -> list:
|
|
233
|
+
"""Phonetise one already-normalized Buckwalter word (no spaces), return
|
|
234
|
+
its most likely pronunciation as a list of phones — the ``pronunciations[0]``
|
|
235
|
+
the original always appends to ``utterancesPronuncations``."""
|
|
236
|
+
pronunciations = []
|
|
237
|
+
isFixedWord(word, "", pronunciations)
|
|
238
|
+
|
|
239
|
+
emphaticContext = False
|
|
240
|
+
padded = "bb" + word + "ee"
|
|
241
|
+
phones = []
|
|
242
|
+
|
|
243
|
+
for index in range(2, len(padded) - 2):
|
|
244
|
+
letter = padded[index]
|
|
245
|
+
letter1 = padded[index + 1]
|
|
246
|
+
letter2 = padded[index + 2]
|
|
247
|
+
letter_1 = padded[index - 1]
|
|
248
|
+
letter_2 = padded[index - 2]
|
|
249
|
+
|
|
250
|
+
# Upstream's condition here is ``not in emphatics + [u'r'""", u'l'"""]``
|
|
251
|
+
# (both the pristine original and the IqraEval fork, byte-identical) —
|
|
252
|
+
# an adjacent-string-literal typo that concatenates to the single,
|
|
253
|
+
# never-matching string "r, u'l'" rather than the two single letters
|
|
254
|
+
# the comment ("except for Lam and Ra") clearly intends. The actual
|
|
255
|
+
# behavior this typo produces is what generated ``phoneme_ref``, so
|
|
256
|
+
# it is reproduced verbatim here (i.e. "r"/"l" do NOT get an
|
|
257
|
+
# exception — any non-emphatic consonant resets emphaticContext);
|
|
258
|
+
# do not "fix" this to match the comment, it would only regress the
|
|
259
|
+
# match rate against phoneme_ref (see the introducing PR's benchmark
|
|
260
|
+
# history).
|
|
261
|
+
if letter in consonants + ["w", "y"] and letter not in emphatics:
|
|
262
|
+
emphaticContext = False
|
|
263
|
+
if letter in emphatics:
|
|
264
|
+
emphaticContext = True
|
|
265
|
+
if letter1 in emphatics and letter1 not in forwardEmphatics:
|
|
266
|
+
emphaticContext = True
|
|
267
|
+
|
|
268
|
+
if letter in unambiguousConsonantMap:
|
|
269
|
+
phones += [unambiguousConsonantMap[letter]]
|
|
270
|
+
|
|
271
|
+
if letter == "l":
|
|
272
|
+
# point 4: lam-omission (sun letters) restricted to genuine "ال"
|
|
273
|
+
# / word-initial lam, not any lam before a shadda-doubled letter.
|
|
274
|
+
if ((letter1 not in diacritics and letter1 not in vowelMap)
|
|
275
|
+
and letter2 == "~"
|
|
276
|
+
and (letter_1 in ("A", "l", "b")
|
|
277
|
+
or (letter_1 in diacritics and letter_2 in ("A", "l", "b")))):
|
|
278
|
+
phones += [ambiguousConsonantMap["l"][1]]
|
|
279
|
+
else:
|
|
280
|
+
phones += [ambiguousConsonantMap["l"][0]]
|
|
281
|
+
|
|
282
|
+
if letter == "~" and letter_1 not in ("w", "y") and len(phones) > 0:
|
|
283
|
+
phones[-1] += phones[-1]
|
|
284
|
+
|
|
285
|
+
if letter == "|":
|
|
286
|
+
phones += [maddaMap["|"][1] if emphaticContext else maddaMap["|"][0]]
|
|
287
|
+
|
|
288
|
+
if letter == "p":
|
|
289
|
+
phones += [ambiguousConsonantMap["p"][0] if letter1 in diacritics
|
|
290
|
+
else ambiguousConsonantMap["p"][1]]
|
|
291
|
+
|
|
292
|
+
if letter in vowelMap:
|
|
293
|
+
if letter in ("w", "y"):
|
|
294
|
+
if (letter1 in diacriticsWithoutShadda + ["A", "Y"]
|
|
295
|
+
or (letter1 in ("w", "y") and letter2 not in diacritics + ["A", "w", "y"])
|
|
296
|
+
or (letter_1 in diacriticsWithoutShadda and letter1 in consonants + ["e"])):
|
|
297
|
+
if ((letter == "w" and letter_1 == "u" and letter1 not in ("a", "i", "A", "Y"))
|
|
298
|
+
or (letter == "y" and letter_1 == "i" and letter1 not in ("a", "u", "A", "Y"))):
|
|
299
|
+
phones += [vowelMap[letter][1][0] if emphaticContext else vowelMap[letter][0][0]]
|
|
300
|
+
else:
|
|
301
|
+
if letter1 == "A" and letter == "w" and letter2 == "e":
|
|
302
|
+
phones += [[vowelMap[letter][0][0], ambiguousConsonantMap[letter]]]
|
|
303
|
+
else:
|
|
304
|
+
phones += [ambiguousConsonantMap[letter]]
|
|
305
|
+
elif letter1 == "~":
|
|
306
|
+
if (letter_1 == "a" or (letter == "w" and letter_1 in ("i", "y"))
|
|
307
|
+
or (letter == "y" and letter_1 in ("w", "u"))):
|
|
308
|
+
phones += [ambiguousConsonantMap[letter], ambiguousConsonantMap[letter]]
|
|
309
|
+
else:
|
|
310
|
+
phones += [vowelMap[letter][0][0], ambiguousConsonantMap[letter]]
|
|
311
|
+
else:
|
|
312
|
+
if emphaticContext:
|
|
313
|
+
if letter_1 in consonants + ["u", "i"] and letter1 == "e":
|
|
314
|
+
phones += [[vowelMap[letter][1][0], vowelMap[letter][1][0][1:]]]
|
|
315
|
+
else:
|
|
316
|
+
phones += [vowelMap[letter][1][0]]
|
|
317
|
+
else:
|
|
318
|
+
if letter_1 in consonants + ["u", "i"] and letter1 == "e":
|
|
319
|
+
phones += [[vowelMap[letter][0][0], vowelMap[letter][0][0][1:]]]
|
|
320
|
+
else:
|
|
321
|
+
phones += [vowelMap[letter][0][0]]
|
|
322
|
+
if letter in ("u", "i"):
|
|
323
|
+
if emphaticContext:
|
|
324
|
+
if (letter1 in unambiguousConsonantMap or letter1 == "l") and letter2 == "e" and len(padded) > 7:
|
|
325
|
+
phones += [vowelMap[letter][1][1]]
|
|
326
|
+
else:
|
|
327
|
+
phones += [vowelMap[letter][1][0]]
|
|
328
|
+
else:
|
|
329
|
+
if (letter1 in unambiguousConsonantMap or letter1 == "l") and letter2 == "e" and len(padded) > 7:
|
|
330
|
+
phones += [vowelMap[letter][0][1]]
|
|
331
|
+
else:
|
|
332
|
+
phones += [vowelMap[letter][0][0]]
|
|
333
|
+
if letter in ("a", "A", "Y"):
|
|
334
|
+
# point 2: word-initial kaf/waw+alif ambiguity restricted to
|
|
335
|
+
# "-al" (preposition + definite article), not every such word.
|
|
336
|
+
if letter == "A" and letter_1 in ("w", "k") and letter_2 == "b" and letter1 == "l":
|
|
337
|
+
phones += [["a", vowelMap[letter][0][0]]]
|
|
338
|
+
elif letter == "A" and letter_1 in ("u", "i"):
|
|
339
|
+
pass
|
|
340
|
+
elif letter == "A" and letter_1 == "w" and letter1 == "e":
|
|
341
|
+
# point 3: wāw al-jamāʿah — elided alif is the default.
|
|
342
|
+
phones += [[vowelMap[letter][0][1], vowelMap[letter][0][0]]]
|
|
343
|
+
elif letter in ("A", "Y") and letter1 == "e":
|
|
344
|
+
if emphaticContext:
|
|
345
|
+
phones += [[vowelMap[letter][1][0], vowelMap["a"][1]]]
|
|
346
|
+
else:
|
|
347
|
+
phones += [[vowelMap[letter][0][0], vowelMap["a"][0]]]
|
|
348
|
+
else:
|
|
349
|
+
phones += [vowelMap[letter][1][0] if emphaticContext else vowelMap[letter][0][0]]
|
|
350
|
+
|
|
351
|
+
possibilities = 1
|
|
352
|
+
for p in phones:
|
|
353
|
+
if isinstance(p, list):
|
|
354
|
+
possibilities *= len(p)
|
|
355
|
+
|
|
356
|
+
all_pronunciations = []
|
|
357
|
+
for i in range(possibilities):
|
|
358
|
+
pronunciation = []
|
|
359
|
+
iterations = 1
|
|
360
|
+
for p in phones:
|
|
361
|
+
if isinstance(p, list):
|
|
362
|
+
curIndex = (i // iterations) % len(p)
|
|
363
|
+
if p[curIndex] != "":
|
|
364
|
+
pronunciation.append(p[curIndex])
|
|
365
|
+
iterations *= len(p)
|
|
366
|
+
else:
|
|
367
|
+
if p != "":
|
|
368
|
+
pronunciation.append(p)
|
|
369
|
+
all_pronunciations.append(pronunciation)
|
|
370
|
+
|
|
371
|
+
if pronunciations:
|
|
372
|
+
# a fixed-word pronunciation, when found, wins outright (matches the
|
|
373
|
+
# original: isFixedWord already populated `pronunciations` and the
|
|
374
|
+
# main loop's own phones list is generated independently but never
|
|
375
|
+
# consulted when a fixed entry exists — see phonetise_Arabic.py).
|
|
376
|
+
chosen = pronunciations[0]
|
|
377
|
+
else:
|
|
378
|
+
chosen = all_pronunciations[0] if all_pronunciations else []
|
|
379
|
+
|
|
380
|
+
# House-keeping: remove duplicate vowels / duplicate y,w (verbatim).
|
|
381
|
+
prevLetter = ""
|
|
382
|
+
toDelete = []
|
|
383
|
+
for i in range(len(chosen)):
|
|
384
|
+
letter = chosen[i]
|
|
385
|
+
if letter in ("aa", "uu0", "ii0", "AA", "UU0", "II0") and prevLetter.lower() == letter[1:].lower():
|
|
386
|
+
toDelete.append(i - 1)
|
|
387
|
+
chosen[i] = chosen[i - 1][0] + chosen[i - 1]
|
|
388
|
+
if letter in ("u0", "i0") and prevLetter.lower() == letter.lower():
|
|
389
|
+
toDelete.append(i - 1)
|
|
390
|
+
chosen[i] = chosen[i - 1]
|
|
391
|
+
if letter in ("y", "w") and prevLetter == letter:
|
|
392
|
+
chosen[i - 1] += chosen[i - 1]
|
|
393
|
+
toDelete.append(i)
|
|
394
|
+
if letter == "a" and prevLetter == letter:
|
|
395
|
+
toDelete.append(i)
|
|
396
|
+
prevLetter = letter
|
|
397
|
+
for i in reversed(sorted(set(toDelete))):
|
|
398
|
+
del chosen[i]
|
|
399
|
+
return chosen
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
import re as _re2
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def _preprocess_utterance(utterance: str) -> list:
|
|
406
|
+
"""Utterance-level normalization from the fork's ``phonetise()``, run on
|
|
407
|
+
the whole Buckwalter-encoded utterance BEFORE splitting into words and
|
|
408
|
+
running :func:`_process_word` on each. This was dropped in an earlier,
|
|
409
|
+
incomplete port of this file — its absence let a mid-utterance
|
|
410
|
+
word-initial alif (the connecting hamzat al-waṣl of "ال"/"ا", silent in
|
|
411
|
+
continuous recitation) get phonetised as a spurious long "aa", among
|
|
412
|
+
other regressions (see the introducing PR's benchmark history for the
|
|
413
|
+
match-rate collapse this caused and the fix). Ported verbatim from
|
|
414
|
+
Iqra-Eval/MSA_phonetiser's ``phonetiser/phonetise_Arabic.py``.
|
|
415
|
+
"""
|
|
416
|
+
utterance = utterance.replace("AF", "F")
|
|
417
|
+
utterance = utterance.replace("ـ", "") # tatweel
|
|
418
|
+
utterance = utterance.replace("o", "") # sukun: purely orthographic here
|
|
419
|
+
utterance = utterance.replace("aA", "A")
|
|
420
|
+
utterance = utterance.replace("aY", "Y")
|
|
421
|
+
utterance = _re2.sub(r"([^\-]) A", r"\1 ", utterance)
|
|
422
|
+
utterance = utterance.replace("F", "an")
|
|
423
|
+
utterance = utterance.replace("N", "un")
|
|
424
|
+
utterance = utterance.replace("K", "in")
|
|
425
|
+
utterance = utterance.replace("|", ">A")
|
|
426
|
+
|
|
427
|
+
utterance = _re2.sub(r"^Ai", "<i", utterance)
|
|
428
|
+
utterance = _re2.sub(r"^Aa", ">a", utterance)
|
|
429
|
+
utterance = _re2.sub(r"^Au", ">u", utterance)
|
|
430
|
+
utterance = _re2.sub(r"Ai", "<i", utterance)
|
|
431
|
+
utterance = _re2.sub(r"Aa", ">a", utterance)
|
|
432
|
+
utterance = _re2.sub(r"Au", ">u", utterance)
|
|
433
|
+
utterance = _re2.sub(r"^Al", ">al", utterance)
|
|
434
|
+
utterance = _re2.sub(r" - Al", " - >al", utterance)
|
|
435
|
+
utterance = _re2.sub(r"^- Al", "- >al", utterance)
|
|
436
|
+
utterance = _re2.sub(r"^>([^auAw])", ">a\\1", utterance)
|
|
437
|
+
utterance = _re2.sub(r" >([^auAw ])", " >a\\1", utterance)
|
|
438
|
+
utterance = _re2.sub(r"<([^i])", "<i\\1", utterance)
|
|
439
|
+
utterance = _re2.sub(r" A([^aui])", r" \1", utterance)
|
|
440
|
+
utterance = _re2.sub(r"^A([^aui])", r"\1", utterance)
|
|
441
|
+
|
|
442
|
+
return utterance.split(" ")
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
def process_utterance(buckwalter_text: str) -> str:
|
|
446
|
+
"""Phonetise one Buckwalter-encoded utterance, mirroring mantoq's
|
|
447
|
+
``process_utterance`` interface: space-separated phones, words joined by
|
|
448
|
+
``" + "``, ``-``/``sil`` word markers rendered as the ``sil`` token."""
|
|
449
|
+
words = _preprocess_utterance(buckwalter_text)
|
|
450
|
+
out_words = []
|
|
451
|
+
for word in words:
|
|
452
|
+
if word in ("-", "sil"):
|
|
453
|
+
out_words.append(["sil"])
|
|
454
|
+
continue
|
|
455
|
+
out_words.append(_process_word(word))
|
|
456
|
+
return " + ".join(" ".join(w) for w in out_words)
|