phonemizer
Simple text to phones converter for multiple languages
What it is and what it does
Phonemizer is a Python wrapper around multiple text-to-speech and phoneme-extraction backends that converts written words and sentences into their phonetic representations. It supports four backends—espeak-ng (IPA output, 100+ languages), espeak-mbrola (SAMPA, 35 languages), festival (US English, syllable-level tokenization), and segments (user-defined grapheme-to-phoneme mappings)—each with different speed, language coverage, and output format trade-offs. You choose which backend to use based on your language, required phoneme alphabet, and whether you need syllable-level or word-level boundaries.
The package provides both a command-line tool (`phonemize`) and a Python API (`phonemizer.phonemize`). It is actively maintained, has low install friction (pure Python with minimal dependencies), and is published under GPLv3+. The main constraint is that it requires at least one external backend system library to be installed separately; the package itself is a Python interface to those tools.
Use it for:
- Generate IPA transcriptions for linguistic research or speech corpus annotation across many languages.
- Prepare phonetic training data for automatic speech recognition (ASR) or text-to-speech (TTS) systems.
- Extract syllable-level phonetic boundaries for prosody analysis or speech synthesis in festival-supported contexts.
- Build custom phonemization pipelines using user-defined grapheme-to-phoneme mappings via the segments backend.
- Batch-process large text corpora into phonetic form for phonological or acoustic studies.
- Integrate phonetic transcription into NLP pipelines for multilingual phonetic feature extraction.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Phonemizer converts written text into phonetic representations (IPA, SAMPA, or custom phoneme sets) across many languages using pluggable backends like espeak, festival, and segments.
Yes. Phonemizer is a well-maintained, actively developed tool with low install friction and no known vulnerabilities. It fills a clear niche in phonetic text processing across many languages. The GPLv3+ license is a constraint only if you need to build proprietary closed-source software; for research, open-source, and academic use, it is unencumbered. The main gotcha is that you must install one of the external backends separately, but that is by design and well-documented.
Install
phonemizer on PyPI
pip
pip install phonemizeruv
uv add phonemizerpoetry
poetry add phonemizerInstalling phonemizer
Before you install
Low install friction: pure Python wheel with four lightweight runtime dependencies (joblib, attrs, dlinfo, typing-extensions). Active maintenance with a release 14 days ago and 1567 repository stars.
License in practice
GPLv3+ copyleft license requires that any derivative work or distribution must also be licensed under GPLv3 or later. Suitable for open-source projects but incompatible with proprietary closed-source applications.
Quickstart
pip install phonemizer
from phonemizer.phonemize import phonemize
result = phonemize('hello', language='en-us', backend='espeak')
Requires one of the external TTS/phonemization backends (espeak-ng, festival, or segments) to be installed on the system; the Python package alone is a wrapper.
Verify before relying
- Whether backend installation (espeak-ng, festival, segments) is automatic or requires manual system setup on each platform.
- Performance characteristics and memory usage for large-scale batch phonemization tasks.
- Accuracy and coverage differences between the four backends for specific language pairs.
Package facts
| License | GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license… (full text in the JSON record) (copyleft) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — joblib, attrs, dlinfo, typing-extensions |
| Maintenance | actively maintained — 14 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 431,810/month — #6,714 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: phonemizer-3.4.0-py3-none-any.whl
Keywords: linguistics, G2P, phone, espeak, festival, TTS
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
espeakng-loaderLoads the espeak-ng shared library and makes it…
unclear · top 5,000 on PyPI
gruut-ipaGruut IPA parses, analyzes, and converts…
permissive · top 15,000 on PyPI
panphonPanPhon maps International Phonetic Alphabet…
permissive · top 15,000 on PyPI
phonemizer-forkConverts text to phonetic representations…
copyleft · top 5,000 on PyPI
orthography2ipaConverts spelling to IPA phonetic transcription…
permissive · top 15,000 on PyPI
epitranEpitran converts written text in various…
permissive · top 15,000 on PyPI
misakiConverts written text to phonetic…
permissive · top 15,000 on PyPI
g2p-enConverts English text to phoneme sequences…
permissive · top 5,000 on PyPI
gruut-lang-enProvides English language data files for…
permissive · top 15,000 on PyPI
gruutGruut tokenizes, cleans, and converts text to…
permissive · top 15,000 on PyPI