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

Uploaded CPython 3.10+Windows x86-64

sea_g2p-0.7.24-cp310-abi3-win32.whl (21.2 MB view details)

Uploaded CPython 3.10+Windows x86

sea_g2p-0.7.24-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.6 MB view details)

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

sea_g2p-0.7.24-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.24-cp310-abi3-macosx_11_0_arm64.whl (21.4 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

sea_g2p-0.7.24-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.24.tar.gz.

File metadata

  • Download URL: sea_g2p-0.7.24.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.24.tar.gz
Algorithm Hash digest
SHA256 5463b1b01cd0b27aeec2c95f176e4d1173e5104646245455bca4a56be522a51a
MD5 ea6e83c84389d54437ee68855c33cfee
BLAKE2b-256 da8f5f9456e8f5e294a76869fdc3bc411b09c1be04921ffa9ea171135be12e1c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.24-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 21.3 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.24-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 31b296fc38a6af795f4aed9714c306ab0a63801dc3d01e83ecd605c7cd2f38f2
MD5 b5d025cba244f7f2e50a800930f0ef88
BLAKE2b-256 0217a1e9dfa7a196d2da4df238d14ba045392f34cd79074d1ff55f209cc0e124

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sea_g2p-0.7.24-cp310-abi3-win32.whl
  • Upload date:
  • Size: 21.2 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.24-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 23c6ab77f72c069bc841e99d0b30dd5aa0dd8b297f9039f657a6e1bc4584e479
MD5 47c403344f1ef64fed0a6af17d584284
BLAKE2b-256 602a622062c96b16f006d1b5d80b9110b74ad0686abe7d0f1238b8b52ff44277

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.24-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2205a6ed6bb583d2316cd6467824e2f5b97519e6fe21f4b0c834e5f20ca8e4ab
MD5 be91e0b572575aa2416acaf2e1bf7963
BLAKE2b-256 6cbcf3efae331c54eff97a61f8e690b9f9f6c802de966b779fb0d5d65706b5c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.24-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e48aabff10a76a3bc2c8ee68f2fd7dfa028d2f1716034e1c88d71bc3f0f70d47
MD5 582759435741556b282dad93806705dd
BLAKE2b-256 4783bbbb48dd7b341af83542b23444e61fd3d54ee28ab3d2abdcc0b1f2f6b429

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.24-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8576bebb1520a2e87d8c607b362724271a83e01bbd6b27e0b230eb4c5fa1b180
MD5 7ae59ff7bdac8376ee9d5aa0dfbf9b76
BLAKE2b-256 39bcfd370e34f7ff54b940f7b3c246d4dee853318e35115e3961559e6ed0ab52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sea_g2p-0.7.24-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b173662275f37cd743ddaaa728144d1ad2deedfb18fd50bf5a2e6227eb64e565
MD5 cd7778d8c0f89d3a9d217ca5b86da7eb
BLAKE2b-256 0c51604393b6844c3f6ca68d5a61cf2416b79d15f67697d3c4565d55d91f64e0

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

This release

0.7.24 This release

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