Experimental: This project is in early development. Features, APIs, and output quality may change.
indic-translate.mov
Get romanized pronunciation (transliteration) for Indic language words using rule-based transliteration via indic-transliteration.
Built to help non-native language speakers with school homework, making it easier to read and pronounce Indic script words without knowing the script.
- Transliterate words from 17 Indic scripts to romanized pronunciation (IAST)
- Batch input: paste multiple words at once (comma-separated or one per line)
- Clean table output with Word, Pronunciation, and Meaning columns
- Google Search links in the Meaning column to look up the English meaning of any word
- Save as PDF: opens a print-ready page directly in the browser (Ctrl+P / Cmd+P to save)
- Audio pronunciation: hear words spoken aloud using the browser's built-in text-to-speech
- Runs entirely locally with no model server, no API keys, no network needed (unless for Google Search)
Assamese, Bengali, Bodo, Dogri, Gujarati, Hindi, Kannada, Konkani, Maithili, Malayalam, Marathi, Nepali, Odia, Punjabi, Sanskrit, Tamil, Telugu
Note: Not all languages have been tested thoroughly. Transliteration quality may vary across scripts and word types.
- Python >= 3.12
- uv package manager
make setup
make runOpen http://127.0.0.1:7861 in your browser.
- Pick the source language
- Enter words or phrases (comma-separated or one per line)
- Click Transliterate
- Click Google Search in the Meaning column to look up the English meaning
- Click Speak All to hear the words pronounced aloud
- Click Save as PDF to open a print-ready page and save as PDF
Run with Podman (default) or Docker. No local Python setup needed.
Supports both via the CONTAINER_ENGINE variable (defaults to podman).
# Podman (default)
make container-run
# Docker
make container-run CONTAINER_ENGINE=dockerOpen http://localhost:7861 in your browser.
- Pick the source language
- Enter words or phrases (comma-separated or one per line)
- Click Transliterate
- Click Google Search in the Meaning column to look up the English meaning
- Click Speak All to hear the words pronounced aloud
- Click Save as PDF to open a print-ready page and save as PDF
Audio uses the browser's built-in text-to-speech (Web Speech API) with no network calls.
- If a native voice for the language is installed on your OS, words are spoken in that language
- If no native voice is found, the romanized pronunciation (IAST) is spoken in English as a fallback
To install native Indic language voices on macOS:
- macOS 13 Ventura / 14 Sonoma: System Settings → Accessibility → Spoken Content → click the System Voice dropdown → Manage Voices... at the bottom of the list
- macOS 12 Monterey and earlier: System Preferences → Accessibility → Spoken Content → System Voice dropdown → Customize...
Download the voice for your language and restart your browser.
Not all Indic languages have an Apple TTS voice available. Known voices:
| Language | Voice |
|---|---|
| Kannada | Soumya |
| Hindi | Lekha |
| Tamil | Vani |
| Telugu | Geeta |
For languages with no available OS voice (e.g. Malayalam), the app will always fall back to speaking the IAST romanization in English.
make dev # Hot-reload mode
make lint # Run linter
make format # Format code
make test # Run testsThe app logs voice selection to the browser console every time Speak All is clicked. Open F12 → Console and look for a line like:
[indic-translate] target lang: kn-IN | voice: Soumya (Kannada (India)) (kn-IN)
or, when no native voice is installed:
[indic-translate] target lang: kn-IN | voice: none — falling back to IAST in English
This confirms whether the browser found a native OS voice or fell back to speaking the IAST romanization in English. If the voice is correct but pronunciation is poor, that is a limitation of the OS TTS engine for that word and is outside the app's control.
