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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.30-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.30.tar.gz.

File metadata

  • Download URL: sea_g2p-0.7.30.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.30.tar.gz
Algorithm Hash digest
SHA256 ca7d2ddc3fa5d26c3b7e94e768707a8e18e33d1da28a70ec80f441ed0d962bda
MD5 97f922d33f577d64690dbc150cbe25c6
BLAKE2b-256 c5daac5b6532e6283352f6ea5090d4cc5ca60682898cb2190a3618976a2cf0fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.30-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.30-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 eaeb31ceeaf5c6650c0f52d7fdb75e0992edad54d8752f749be46c8d7a49d154
MD5 d9f67be3edecb14fda459ed317232765
BLAKE2b-256 e89600591d2fa9d3b486cefdd0200561431d28ccbe9a9785b41c369797cc8794

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.30-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.30-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 f832f5bd6d5a25bd31688d1e05997770c16856a29a70e9823c68f6e68ed355d5
MD5 6c20ba86742b98b00b26ddfd35a8dc28
BLAKE2b-256 94ceaacfee05aca49adcdf3e3e2e21bd8388bae1a2354e1ed13d5b2a628b1424

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.30-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ec89ef8a7b11deb136a6daf2e0047bbb0c0266337d858e078a6d9ba6491d7b1
MD5 5108d82065235cedf9f8774672438d04
BLAKE2b-256 6183a660089c9816810f5ac1e06231f6f8571a86ea3af65a5dd2eb602996af6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.30-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 95efd499dcadef48838825c4f027568ad11a93e7ea2c898f2facf992069314ad
MD5 d24d28a5bcbc70ea2c94e0b8b8981e27
BLAKE2b-256 b0dc9e3064aaef780c1df8d9895ccae4adace2110a06c1523c7c80570165a2da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.30-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68568e02d2ec2ebd74a4d944db74378f83702fa87a4716f12ad97441b67f69f4
MD5 c71b3684aa8018bac716b2f43e6ce009
BLAKE2b-256 92d528280a59d2f3dedacadd22cc070f25bf8e5bb29cba2adbaaffe7a7502ce8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.30-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d61854963b78eb5e253f6f358c42231312aec626671d469ad81857aa731969f3
MD5 fb9520deb08e6ae8af7a912af80314a6
BLAKE2b-256 9c84222eeb3c6d3eda90dcca567cbdeaeade940d8f80da9ace935c787a6ea157

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

This release

0.7.30 This release

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