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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

sea_g2p-0.7.18-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.18-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.18-cp310-abi3-macosx_11_0_arm64.whl (21.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.18-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.18.tar.gz.

File metadata

  • Download URL: sea_g2p-0.7.18.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.18.tar.gz
Algorithm Hash digest
SHA256 52693801dd9373bff2261e99f553f288118cf0c2ff3607436660ab1e9fa27f5d
MD5 98230d1856cebe57d91ee31840487d31
BLAKE2b-256 28371f179d7a1d5608c36ef0137de1897d3b7c1e3e879f83fd54a519f747f64d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.18-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.18-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 371a018cbf1ec3f6a5460d0de980477711b86e6fc73be2e25d754cf879c8786b
MD5 ce0504cf5829a6c7c40b4243c4ede2d7
BLAKE2b-256 bc68e0119c95986b6057069f51b6cb491480f13ec3bb13413e4a7196e8703cf7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.18-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.18-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 504fa40ca04fb172249a0adf799d7fb910842e9fcacfd8ecae8d801a1ef21bec
MD5 19978bd2f64a44073c9b96b3ec4ce3f1
BLAKE2b-256 bc93272c22f33647ec6a65ff8553824a632c00259cb929395e58ab2316c22e6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.18-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4ff84fb998a0612c65cde9d392312fbdb871b17a42b2c576f126ac964ba39b0
MD5 d1041bc9afd00dff67f0c8a96b51ae11
BLAKE2b-256 a30e6552ae2573a5c7e55a3bca572ce68f4d4add43e45f2bf06e1b3975f08d2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.18-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 34b732010130c50e49a061d87332b96ce3538df1c372df277d634603bc8ac4e1
MD5 ec75b86f9ba2cda143355d2d6f0acc0a
BLAKE2b-256 05122b4687c80c9768e5e0bb557234533ba30e2d25f1837db7904adb684eb61f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.18-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea1c941d41a143fd6365b74a5e6281ccf62a2d65e8ea743b4f4e4c849e19f6ef
MD5 f710fa2ec2d84bd71b1d892ba80a7597
BLAKE2b-256 b32cfd799ef42ecbca7e8cbab385db33e283353136af2be806319071589b8203

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.18-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 50d52c66a2491e4bbbf2ad40eabedd87c2ddbd86b054f05fd620d4cd72fd1f6c
MD5 b7b81d770b15a6d0b3de544207acd204
BLAKE2b-256 0c0e7dd56298e7efdababce619ebc9b44e8f8f09c7f8958ce21e8d89ee04d792

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

0.7.20

7 files

0.7.19

7 files

This release

0.7.18 This release

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