epitran
Tools for transcribing languages into IPA.
What it is and what it does
Epitran is a Python library and command-line tool for converting orthographic text into IPA phonetic notation. It works by mapping characters or character sequences in a source language and script (identified by ISO 639-3 language code plus a four-letter script code like 'Latn' or 'Arab') to their corresponding IPA phonemes. The library includes optional preprocessing and postprocessing steps to handle languages where sound-symbol correspondence is complex (such as French and English), and it supports both simple transliteration and detailed phonetic analysis via methods like word_to_tuples, which returns structured data including character categories, case information, and phonetic vectors.
The package is designed for linguistic research, speech processing, and multilingual text analysis. It handles multiple scripts and languages through a unified interface, with special support for tonal languages via an optional tones parameter, and provides a Backoff class for graceful fallback across multiple language modes when processing mixed-script text. For English, Mandarin Chinese, and Cantonese, it uses grapheme-to-phoneme (G2P) models that may require external resources like Flite or dictionary files.
Use it for:
- Convert English text to IPA for speech synthesis or linguistic analysis pipelines.
- Transliterate multilingual documents containing mixed scripts (e.g., Hindi with English loanwords) using the Backoff class.
- Extract phonetic vectors and segment-level data from words for machine learning models in speech or NLP tasks.
- Build pronunciation dictionaries or validate orthographic-to-phonetic mappings for language documentation.
- Process tonal languages like Vietnamese or Hokkien while preserving tone markers in IPA output.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Epitran converts written text in various languages and scripts into International Phonetic Alphabet (IPA) notation, supporting multiple language-script pairs with optional preprocessing and postprocessing.
Yes. Epitran is actively maintained, has no known vulnerabilities, uses a permissive license, and offers low installation friction. It is well-suited for developers and researchers working with multilingual phonetic transcription, linguistic analysis, or speech processing. The main gotcha is that English G2P and Chinese/Cantonese support require external resources (Flite or dictionary files), so verify those dependencies match your use case before committing.
Install
epitran on PyPI
pip
pip install epitranuv
uv add epitranpoetry
poetry add epitranInstalling epitran
Before you install
Low friction installation with a pure Python wheel. Actively maintained with recent releases and a healthy repository signal (830 stars, last commit 2026-06-18). Requires Python 3.10 or later and five runtime dependencies including regex, panphon, marisa-trie, requests, and jamo.
License in practice
Licensed under MIT-Modern-Variant (permissive), allowing free use, modification, and distribution with minimal restrictions.
Quickstart
pip install epitran
import epitran
epi = epitran.Epitran('tur-Latn')
print(epi.transliterate('Düğün'))
English G2P requires separate installation of Flite (including lex_lookup) as noted in the documentation; Mandarin Chinese and Cantonese require a CC-CEDict or CC-Canto dictionary file passed to the constructor.
Verify before relying
- Whether all five runtime dependencies (regex, panphon, marisa-trie, requests, jamo) are required for all language-script pairs or only for specific ones.
- Performance characteristics and typical latency for transliteration on typical text lengths.
- Coverage details: exactly how many language-script pairs are supported beyond the examples given.
Package facts
| License | MIT-Modern-Variant (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — regex, panphon, marisa-trie, requests, jamo |
| Maintenance | actively maintained — 57 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 107,211/month — #12,626 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: epitran-1.35.2-py3-none-any.whl
Keywords: linguistics, phonetics, IPA, transliteration, phonology
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
orthography2ipaConverts spelling to IPA phonetic transcription…
permissive · top 15,000 on PyPI
panphonPanPhon maps International Phonetic Alphabet…
permissive · top 15,000 on PyPI
phonemizerPhonemizer converts written text into phonetic…
copyleft · top 15,000 on PyPI
transliterateConverts text between Latin and non-Latin…
copyleft · top 15,000 on PyPI
gruut-ipaGruut IPA parses, analyzes, and converts…
permissive · top 15,000 on PyPI
phonemizer-forkConverts text to phonetic representations…
copyleft · top 5,000 on PyPI
indic-transliterationConverts text between different Indic script…
permissive · top 15,000 on PyPI
misakiConverts written text to phonetic…
permissive · top 15,000 on PyPI
silpa_commonProvides common utility functions for SILPA,…
copyleft · top 15,000 on PyPI
cyrtranslitConverts text between Cyrillic and Latin…
permissive · top 15,000 on PyPI