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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.25-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.25.tar.gz.

File metadata

  • Download URL: sea_g2p-0.7.25.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.25.tar.gz
Algorithm Hash digest
SHA256 0e6fa59d117cc21054f3f263d0c1496c3d881f58e208afa2a72d4057e6598adf
MD5 4b0fad3bd298c8b3d709086daaef520d
BLAKE2b-256 02cb58eb660ac581ce40427f360d6dea6e0cad6c3020374f9773e4e049a61ce4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.25-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.25-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1d3dbfb1c95a9e0585282375fdbd9cf08af5f1083ad9c9e5e59c40155b669b7b
MD5 045ff1ac6b2594ab61d5e50a0e4adf93
BLAKE2b-256 03e49ea7f56885470d9ac810e58c42c7933e3353c1a7af1524d12a9c5b93b5e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.25-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.25-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 b8600f42cbe180fb0035942c4e0dd369db162f15f72a834262f8937a2225d467
MD5 e5aab979264769b1d104c642b02ffe22
BLAKE2b-256 a733cbc90a2c1435b8d3121f7e9637790d3b44ed2713938b6605d8512ea06452

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.25-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79677bfef12e01b84aaccbba485be2d44d1ca321ae83b7e83d2ed4f9394c7e35
MD5 d39bede511eb8817f9214207ce1f3c19
BLAKE2b-256 bfc32ffe6afd8c7a64b3a0ef5cb9c897975f38005ae4f0e7b70da54dc5ede722

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.25-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6912a02c7c202844ba6d271f6f95ad65c3653e3e102bc7f78bc918b4e9e0d805
MD5 a44156afd9dd796ca5b7989b30347598
BLAKE2b-256 38068a48ebc03ece7e4a786a2a4b1c6567e9e0bf5715abbc1c0f01048d22753e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.25-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9b6a2bc72c830483472b902ae5137499df91a7e86fc8e04cdd4926b721ecbe9
MD5 91f276ab78d8c06fe920410933abd8f2
BLAKE2b-256 b3e29b5446f0cd43996397610c242f361f11f3d90e2cfe3c66453031a9c71325

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.25-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7553ecaec7d3f68aa6be2c2f7d4ebb0e73572d025758335a83c305ef6b475568
MD5 a1a9a24e07f6e9bdfee7186044719ee8
BLAKE2b-256 3ce96a10b5654849d483c7508c6c6175f79eec185417229a07875a7bcacb8f71

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

0.7.27

7 files

0.7.26

7 files

This release

0.7.25 This release

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