Chinese API

Chinese G2P uses jieba for tokenization and supports two phoneme output formats.

Main Class

Examples

Basic Usage

from kokorog2p.zh import ChineseG2P

g2p = ChineseG2P(language="zh")
tokens = g2p("你好世界")

for token in tokens:
    print(f"{token.text} -> {token.phonemes}")

Model Versions

The Chinese G2P supports two versions with different output formats:

Legacy Version (version=”1.0”)

Uses pypinyin + IPA transcription

  • Output format: IPA with arrow tone markers (↓ ↗ ↘ →)

  • Compatible with base Kokoro model

  • Example: "你好""ni↓xau↓"

from kokorog2p import get_g2p

# Create legacy Chinese G2P
g2p = get_g2p("zh", version="1.0")
phonemes = g2p.phonemize("你好")
# Output: 'ni↓xau↓'

Version 1.1 (version=”1.1”)

Uses ZHFrontend with Zhuyin (Bopomofo) notation

  • Output format: Zhuyin characters + tone numbers (1-5)

  • Requires Kokoro-82M-v1.1-zh model

  • Example: "你好""ㄋㄧ2ㄏㄠ3"

from kokorog2p import get_g2p
from kokorog2p.vocab import validate_for_kokoro

# Create v1.1 Chinese G2P
g2p = get_g2p("zh", version="1.1")
phonemes = g2p.phonemize("你好")
# Output: 'ㄋㄧ2ㄏㄠ3'

# Validate against v1.1-zh model
is_valid, invalid = validate_for_kokoro(phonemes, model="1.1")
assert is_valid

Model Selection for Validation

When validating phonemes, specify the target model:

from kokorog2p.vocab import validate_for_kokoro

# For base model (IPA output from legacy version)
is_valid, invalid = validate_for_kokoro(phonemes, model="1.0")

# For v1.1-zh model (Zhuyin output from version 1.1)
is_valid, invalid = validate_for_kokoro(phonemes, model="1.1")

Features

  • Jieba tokenization for Chinese word segmentation

  • Pypinyin for pinyin conversion to IPA (legacy version)

  • ZHFrontend with Zhuyin notation (version 1.1)

  • Tone sandhi rules

  • cn2an for number handling

  • Chinese to Western punctuation mapping