Skip to content

Repository files navigation

indic-translate

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.

Motivation

Built to help non-native language speakers with school homework, making it easier to read and pronounce Indic script words without knowing the script.

Features

  • 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)

Supported Languages

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.

Prerequisites

  • Python >= 3.12
  • uv package manager

Setup and Usage

Local

make setup
make run

Open http://127.0.0.1:7861 in your browser.

  1. Pick the source language
  2. Enter words or phrases (comma-separated or one per line)
  3. Click Transliterate
  4. Click Google Search in the Meaning column to look up the English meaning
  5. Click Speak All to hear the words pronounced aloud
  6. Click Save as PDF to open a print-ready page and save as PDF

Container

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=docker

Open http://localhost:7861 in your browser.

  1. Pick the source language
  2. Enter words or phrases (comma-separated or one per line)
  3. Click Transliterate
  4. Click Google Search in the Meaning column to look up the English meaning
  5. Click Speak All to hear the words pronounced aloud
  6. Click Save as PDF to open a print-ready page and save as PDF

Print Preview with Audio Controls

PDF preview page showing font size controls, Speak All, Stop, and Print buttons alongside a pronunciation table

Audio Pronunciation Notes

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.

Development

make dev      # Hot-reload mode
make lint     # Run linter
make format   # Format code
make test     # Run tests

Debugging Audio

The 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.

About

Translate Indic language to English along with pronunciation and meaning search links

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages