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.27.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.27-cp310-abi3-win_amd64.whl (22.6 MB view details)

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

sea_g2p-0.7.27-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.27-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.27-cp310-abi3-macosx_11_0_arm64.whl (22.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.27-cp310-abi3-macosx_10_12_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: sea_g2p-0.7.27.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.27.tar.gz
Algorithm Hash digest
SHA256 c357fd6032e496c819a049be28e32336f7ce7c46247c622ff8c1e0344853d81c
MD5 81903a0ed26156c4810656373db830e3
BLAKE2b-256 dac0a872b1a7fec7dcb7f238c9054778e843129dc38a57af2e0e8a8216871e13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.27-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.27-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 54a6567b71b516680320d9c73ffb7095943eaf78e63f84c4784a74ad4d21fd17
MD5 93e92d4e4d9504cfc7be586fedf2a0aa
BLAKE2b-256 b240fa8c06a655d9aed0252f2d32ee0db7fdb57823056292daae09c7125a3e35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.27-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.27-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 f500dddd6aa50a8bd2e77b596f9ccea223a3c33a84c7aa29ad53e09240af70fa
MD5 e0cdb58644acb43babb51809dcdce553
BLAKE2b-256 a917660379e348fd7b26ad43534bc8f5f27ffbffeab9e3a78794d36c509472f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.27-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f7dd0ec3d1b8a9fe2d640ad08d774b10500974e839969e82f76881a8c7d7768
MD5 a6575059d9f7222a3f213c1cad7017e0
BLAKE2b-256 170d4c7e40a61a4e2f6f5f8ca4cbb365ee1f38d2de1eef361a12e3c5d78d1553

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.27-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f0566a6187c8085d7e4c5b55464f2f615cba3714c48381be79893ebef0452ada
MD5 1dbc020cc9d8732fc29f3b0c0286fe8f
BLAKE2b-256 f67cb3608e24c6770c46a193f5130f5497e199b53185baeefede37ddff75ac6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.27-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce75d383d391e036984b1f033cbb3bef9924ecf6471e500a56dc94fcc5a54e76
MD5 89e5cee089306f6fa6ef16b627575f12
BLAKE2b-256 606560490bc92545079068279d8267b07b1e09ef214328db5fbc037786543ddc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.27-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a5e0feea65323aee0544d1b357ac43e095d5fcfcb485fe34c10f6dae6b56b0f9
MD5 e0336627889c775d6cf61c4fb127884d
BLAKE2b-256 bb8945aee9cfda4e4aeaeaa76ea19ea842d85e21a9c0bd1ccd2b5b5ae96a3a10

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

0.7.33

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

This release

0.7.27 This release

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