kokorog2p
Multilingual grapheme-to-phoneme and Kokoro model adaptation for prepared text.
v0.9 responsibility boundary
KokoroG2P consumes prepared, speakable text. The core owns tokenization, intrinsic phonological normalization, explicit language routing, annotations, overrides, and Kokoro phoneme/model output.
The core does not verbalize numbers, abbreviations, units, currencies, dates, times,
URLs, versions, or other written semantics. Prepare those forms in the owning
application or an optional cross-package tool, then call phonemize_prepared().
KokoroG2P has no runtime dependency on Spokenform and its behavior is unchanged by Spokenform being installed.
Installation
python -m pip install kokorog2p
Language and backend integrations are optional:
python -m pip install "kokorog2p[en]"
python -m pip install "kokorog2p[de]"
python -m pip install "kokorog2p[fr]"
python -m pip install "kokorog2p[ko]"
python -m pip install "kokorog2p[ja]"
python -m pip install "kokorog2p[espeak]"
See Installation for development and optional integration setup.
Quick start
from kokorog2p import phonemize_prepared
result = phonemize_prepared("Hello world!", language="en-us")
print(result.phonemes)
phonemize() remains an equivalent prepared-text entry point. The input text is
retained as the coordinate space for tokens and offsets.
Semantic preparation composition
Use an external preparation package only when written semantics need expansion:
from spokenform import prepare_for_kokorog2p
from kokorog2p import phonemize_prepared
prepared = prepare_for_kokorog2p("Meet Dr. Smith at 2 kg.", language="en").spoken_text
result = phonemize_prepared(prepared, language="en-us")
Install Spokenform separately. It is not required for core installation or core tests.
Explicit language routing
from kokorog2p import OverrideSpan, phonemize_prepared
text = "Hello Welt"
start = text.index("Welt")
result = phonemize_prepared(
text,
language="en-us",
overrides=[OverrideSpan(start, start + 4, {"lang": "de"})],
)
Automatic document-language detection and mixed-language segmentation are outside the core package. Applications should identify foreign spans and route them explicitly.
Annotations
Precomputed linguistic annotations can be supplied without installing a parser:
from kokorog2p import TokenAnnotation, phonemize_prepared
result = phonemize_prepared(
"record this record",
language="en-us",
annotations=[TokenAnnotation(0, 6, "record", pos="NOUN", tag="NN")],
)
Annotation offsets are ordered, non-overlapping, half-open offsets into the prepared text.
Supported languages
English (en-us, en-gb), German (de), French (fr), Spanish (es), Italian
(it), Portuguese (pt-br, pt-pt), Czech (cs), Chinese (zh), Japanese (ja),
Korean (ko), Vietnamese (vi), Swedish (sv-se), Hebrew (he), Arabic (ar),
Russian (ru), Kazakh (kk), and optional Thai (th) are supported by
language-specific frontends. See Language support.
API and migration guides
Migration from 0.8.x
In 0.8.x, callers could pass written text directly to the main API:
result = phonemize("Meet Dr. Smith at 2 kg.")
In 0.9.0, prepare written semantics in the owning application and pass the result with an explicit language:
from spokenform import prepare_for_kokorog2p
from kokorog2p import phonemize_prepared
prepared = prepare_for_kokorog2p(
"Meet Dr. Smith at 2 kg.", language="en"
).spoken_text
result = phonemize_prepared(prepared, language="en-us")
Remove input_mode, migrated_semantics, semantic expansion flags, and
abbreviation-registry calls.
Development
python -m pip install -e ".[dev]"
python -m pytest -q tests/test_prepared_core.py tests/test_dependency_contract.py
The default core suite is Spokenform-free. Optional cross-package composition coverage
is kept in tests/test_spokenform_composition.py and the corresponding CI job.
Release files for kokorog2p 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kokorog2p-0.9.1.tar.gz | 43.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kokorog2p-0.9.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.4 MB
Release files / kokorog2p-0.9.1.tar.gz
| Download URL | kokorog2p-0.9.1.tar.gz |
|---|---|
| Size | 43.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
019aeda27c3d3d8d14d4bc20e6fd08e6a44d4979a1e4c13b65583c2cf96f3bef
|
|
BLAKE2b-256 checksum How to use checksums |
4172f0bc18b2a9bfb2d09d0da7ba2f37e6e0beb5eddf31667243e49c4eee3e80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / kokorog2p-0.9.1-py3-none-any.whl
| Download URL | kokorog2p-0.9.1-py3-none-any.whl |
|---|---|
| Size | 42.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4ade8329d5d6f7dae7cd09f08a2e289cd5ba211fc9a4e3f58ce55c70a46d7db2
|
|
BLAKE2b-256 checksum How to use checksums |
e1970808a49c6c8c79626a8636f6f18a7a7725b211ecb83800430f81e713b71b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|