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.20.tar.gz (20.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.20-cp310-abi3-win_amd64.whl (21.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

sea_g2p-0.7.20-cp310-abi3-win32.whl (21.1 MB view details)

Uploaded CPython 3.10+Windows x86

sea_g2p-0.7.20-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.5 MB view details)

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

sea_g2p-0.7.20-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (21.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

sea_g2p-0.7.20-cp310-abi3-macosx_11_0_arm64.whl (21.4 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.20-cp310-abi3-macosx_10_12_x86_64.whl (21.4 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for sea_g2p-0.7.20.tar.gz
Algorithm Hash digest
SHA256 c12988c52fc598bc0c91831691005556784033c36b7341ca7349ec56155befa4
MD5 7119ed0954ff13bb6efbf64febc065cd
BLAKE2b-256 e26933a40141b29c2716fde69e6abd90e6854de01a1bf5206c19c1c974bf0fbd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.20-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 21.2 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.20-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9edd57c91569c01994aadef53671d501a61286b24532937e5ee514468bcf6b51
MD5 d85fc7c23fd58e22e1ce55ffe87bb22d
BLAKE2b-256 e608a83a945ec5855e23af6fe5d85e68dd2eabb1deede9092ad1183405aa2d3d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.20-cp310-abi3-win32.whl
  • Upload date:
  • Size: 21.1 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.20-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 cbf3717257b552b339a4d299b9fe9c630a6541e348b57cd9874c9fb2a8754606
MD5 4e5470068c088f88cecdde3ccb1457c4
BLAKE2b-256 af4b9e686b391d708879edf318b74e2583bf9fd1ca26ba7cc64ff43bb74dd33a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.20-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e118b66781aef8ce297290ffe9fb328824898d8d35849dbd241cd0b0f2732bc
MD5 827ebd2b62907db99e5ec81323a670ad
BLAKE2b-256 0f84e1b8a0c80e90e2bec75f2a61c2996c7ee605c6e14f3a2011eb411d608e9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.20-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49f7d4d18e01d63fbfb1d73a046b5e2d9f97428fc964bb40d3c5cfc79278eeb9
MD5 1e5f2ae38bdab9a9f630b66af780e429
BLAKE2b-256 3474cf79082be5cab724843b2d2163295e0f3ea74698f2d926deec93a7b9daa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.20-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c298e3540695fdba3c7bead1f808dfa110249c3e6df20ed4d507f26fe451aa9
MD5 d6ce2a37aa0a44ec6d338869ff34cce5
BLAKE2b-256 8bab2f0ab01895fd8c15eccd39c0f1bffee1f3c4619cab0815afe96bc25a0dcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.20-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e67dd4f5cd87b696a2babc4b9f6aaa8637c65eacc8f28491c94d2dadeed4bd83
MD5 6f204daeccd985397eaca19c58da1ba1
BLAKE2b-256 f78d5e17d11f1330875ad40a0d5c680c86954ca18a6f394974f3324693e271b0

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

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

This release

0.7.20 This release

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