Skip to main content

🦭 SEA-G2P

image

Fast multilingual text-to-phoneme converter for South East Asian languages.

Author: Pham Nguyen Ngoc Bao

🚀 Used By

SEA-G2P is the core phonemization engine powering:

  • VieNeu-TTS: An advanced on-device Vietnamese Text-to-Speech model with instant voice cloning.

By using SEA-G2P, VieNeu-TTS achieves high-fidelity pronunciation and seamless Vietnamese-English code-switching.

Installation

pip install sea-g2p

Usage

Simple Pipeline

from sea_g2p import SEAPipeline

pipeline = SEAPipeline(lang="vi")

# Single text
result = pipeline.run("Giá SP500 hôm nay là 4.200,5 điểm.")
print(result)
#zˈaːɜ ˈɛɜt̪ pˈe nˈam tʃˈam hˈom nˈaj lˌaː2 bˈoɜn ŋˈi2n hˈaːj tʃˈam fˈəɪ4 nˈam ɗˈiɛ4m.

# Batch processing (Parallel)
texts = ["Giá cổ phiếu tăng từ $0.000045 lên $1,234.5678 trong 3.5×10^6 giao dịch.", "Hãy gửi email đến support@example.com."] * 1000
results = pipeline.run(texts)

Individual Modules

from sea_g2p import Normalizer, G2P

normalizer = Normalizer(lang="vi")
g2p = G2P(lang="vi")

# Automatic parallel processing when list is passed
texts = ["Giá cổ phiếu tăng từ $0.000045 lên $1,234.5678 trong 3.5×10^6 giao dịch.", "Hãy gửi email đến support@example.com."]
normalized = normalizer.normalize(texts)
print(normalized)
#['giá cổ phiếu tăng từ không chấm không không không không bốn lăm <en>u s d</en> lên một nghìn hai trăm ba mươi bốn phẩy năm sáu bảy tám <en>u s d</en> trong ba chấm năm nhân mười mũ sáu giao dịch.', 'hãy gửi email đến <en>support</en> a còng <en>example</en> chấm com.']
phonemes = g2p.convert(normalized)
print(phonemes)
#['zˈaːɜ kˈo4 fˈiɛɜw t̪ˈaŋ t̪ˌy2 xˌoŋ tʃˈəɜm xˌoŋ xˌoŋ xˌoŋ xˌoŋ bˈoɜn lˈam jˈuː ˈɛs dˈiː lˈen mˈo6t̪ ŋˈi2n hˈaːj tʃˈam bˈaː mˈyəj bˈoɜn fˈəɪ4 nˈam sˈaɜw bˈa4j t̪ˈaːɜm jˈuː ˈɛs dˈiː tʃˈɔŋ bˈaː tʃˈəɜm nˈam ɲˈən mˈyə2j mˈu5 sˈaɜw zˈaːw zˈi6c.', 'hˈa5j ɣˈy4j ˈiːmeɪl ɗˌeɜn səpˈɔːɹt ˈaː kˈɔ2ŋ ɛɡzˈæmpəl tʃˈəɜm kˈɔm.']

Features

  • Blazing Fast: Core engine rewritten in Rust with binary mmap lookup.
  • Multithreading: Automatic parallel processing using Rayon/Rust for batch inputs.
  • Zero Dependency: Pre-compiled wheels for Windows, Linux, and macOS.
  • Smart Normalization: Specialized for Vietnamese (numbers, dates, technical terms).
  • Bilingual Support: Handles mixed Vietnamese/English text seamlessly.
  • Markup tags: Wrap a span to control reading:
    • <en>...</en> — keep the content for the English phonemizer (e.g. <en>hello</en>).
    • <math>...</math> — read as a math formula: variable clusters are spelled letter-by-letter and operators/symbols are voiced, while function names (sin, cos, log, lim, ...) are preserved. <math>b² - 4ac</math>"bê bình phương trừ bốn a xê", <math>∫f dx</math>"tích phân ép đê ích".

📊 Performance

The following benchmarks were conducted on a dataset of 1,000,000 sentences:

Module Implementation Throughput
Normalizer Rust Core (Parallel) ~41,000 sentences/s
G2P Rust Core (Parallel) ~415,000 sentences/s

Total Pipeline Throughput: ~37,000 sentences/s (Tested on CPython 3.12, Windows 11, Multithreaded)

Technical Architecture

SEA-G2P is designed for maximum performance in production environments:

  • Memory Mapping (mmap): Instead of loading a huge JSON/SQLite into RAM, we use a custom binary format (.bin) mapped directly into memory. This allows near-instant startup and extremely low memory overhead.
  • String Pooling: To minimize file size, all unique strings (words and phonemes) are stored once in a global string pool and referenced by 4-byte IDs.
  • Binary Search: Words are pre-sorted during the build process, allowing O(log n) lookup speeds directly on the memory-mapped data.

For full details on the specification, see src/g2p/mod.rs.

Development

To install for development purposes:

  1. Clone the repository:

    git clone https://github.com/pnnbao97/sea-g2p
    cd sea-g2p
    
  2. Install in editable mode:

    pip install -e .
    

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sea_g2p-0.7.33.tar.gz (21.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sea_g2p-0.7.33-cp310-abi3-win_amd64.whl (22.6 MB view details)

Uploaded CPython 3.10+Windows x86-64

sea_g2p-0.7.33-cp310-abi3-win32.whl (22.5 MB view details)

Uploaded CPython 3.10+Windows x86

sea_g2p-0.7.33-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

sea_g2p-0.7.33-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

sea_g2p-0.7.33-cp310-abi3-macosx_11_0_arm64.whl (22.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.33-cp310-abi3-macosx_10_12_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file sea_g2p-0.7.33.tar.gz.

File metadata

  • Download URL: sea_g2p-0.7.33.tar.gz
  • Upload date:
  • Size: 21.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for sea_g2p-0.7.33.tar.gz
Algorithm Hash digest
SHA256 70d04989a756bda490c4318726f2619a815f634db5bc726226b1b6d83f3fa9ce
MD5 374febe2608a875d3938556234c54a8d
BLAKE2b-256 d61b72c05d78c2f0164bb31f8dc14398dce092eac10869cdacb06c86b07e6c6b

See more details on using hashes here.

File details

Details for the file sea_g2p-0.7.33-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: sea_g2p-0.7.33-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 22.6 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for sea_g2p-0.7.33-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5b9b0bf30f1ba3efaaa4f150e162036e0743ff1f1f5853b4ba6f29b5a30d20d4
MD5 f558e425032941dd8a5e47e9d3e07bf1
BLAKE2b-256 c79044c666256f9a96f2c36d89e6ae338a3e8c5846689c3c6a71dbaf57fbc9dd

See more details on using hashes here.

File details

Details for the file sea_g2p-0.7.33-cp310-abi3-win32.whl.

File metadata

  • Download URL: sea_g2p-0.7.33-cp310-abi3-win32.whl
  • Upload date:
  • Size: 22.5 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for sea_g2p-0.7.33-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 4b5ea8e960d9d68ebd1027980e98608a33fd4a782f0deb1988acf8393001ef4e
MD5 e9a8818c4cc744c267f18ca8296d11fc
BLAKE2b-256 441f738750da6caa29b6c7f599d40129d70825f1de5695b09fbabd4d925f4143

See more details on using hashes here.

File details

Details for the file sea_g2p-0.7.33-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sea_g2p-0.7.33-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd3ffaa14f619f58a26aab61c4bfd41164e340409317429e0b72b35a00eab16b
MD5 7be5badb78ad1f37acd1a17dcce9c9d4
BLAKE2b-256 db80b2eda8e7cbab36f7d44e6f56d185ef05f31ebf4ad9c5e2643c6e267aa81b

See more details on using hashes here.

File details

Details for the file sea_g2p-0.7.33-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sea_g2p-0.7.33-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f64bebd7c1d20faca33f62260a8fc464a84fd590cfd9a4d446e5c6b8b0d4df30
MD5 00194fdc6c7a1f737a0d43e1805b71b1
BLAKE2b-256 cf80fbb76c8ba7052b6fe7c5a740cffc14182127330948bcd09aa2d5ee1cf713

See more details on using hashes here.

File details

Details for the file sea_g2p-0.7.33-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sea_g2p-0.7.33-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6f593888eba9d6400f2c3e95d73a8facc598a7ee037f5379a0c085d15758b29
MD5 10cf93c06b8299cfa83953d3e3c5f94e
BLAKE2b-256 ffa0add601377a6b395fca0bdcdce713b863a51dee65877db0be143488d26548

See more details on using hashes here.

File details

Details for the file sea_g2p-0.7.33-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sea_g2p-0.7.33-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 170752e6022da3eec4c9d837767a6e5775e9b4e8ea90395f29ec03b5d6e5bb3a
MD5 702538f6b815feab070cfc61b3523be8
BLAKE2b-256 8321c1ebd432324518628db397b71324f00d1bac06e063648bd8b9315241669b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.0

7 files

0.8.9

7 files

0.8.8

7 files

0.8.7

7 files

0.8.6

7 files

0.8.5

7 files

0.8.4

7 files

0.8.3

7 files

0.8.2

7 files

0.8.1

7 files

0.8.0

7 files

This release

0.7.33 This release

7 files

0.7.32

7 files

0.7.31

7 files

0.7.30

7 files

0.7.29

7 files

0.7.28

7 files

0.7.27

7 files

0.7.26

7 files

0.7.25

7 files

0.7.24

7 files

0.7.23

7 files

0.7.22

7 files

0.7.21

7 files

0.7.20

7 files

0.7.19

7 files

0.7.18

7 files

0.7.17

7 files

0.7.16

7 files

0.7.15

7 files

0.7.14

7 files

0.7.13

7 files

0.7.12

7 files

0.7.11

7 files

0.7.10

7 files

0.7.9

7 files

0.7.8

7 files

0.7.7

7 files

0.7.6

7 files

0.7.5

9 files

0.7.4

9 files

0.7.3

9 files

0.7.2

9 files

0.7.1

9 files

0.7.0

9 files

0.6.12

9 files

0.6.11

9 files

0.6.10

9 files

0.6.9

9 files

0.6.8

9 files

0.6.7

9 files

0.6.6

9 files

0.6.5

9 files

0.6.4

9 files

0.6.3

9 files

0.6.2

9 files

0.6.1

9 files

0.6.0

9 files

0.5.9

9 files

0.5.8

9 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page