Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

indic-language-utils

Provider-neutral foundations for Indian language operations in Python.

indic-language-utils standardizes language detection, translation, transliteration, speech, script identification, and text processing across Indian languages. It abstracts cloud and local engines behind shared interfaces.

Key Features

  • Provider Neutrality: Code against high-level capability interfaces. Swap, configure, or chain providers without changing text processing or domain code.
  • Text Translation: Translate plain text or complex Markdown documents across 22 scheduled Indian languages and English.
  • Text Language Detection: Identify languages using offline FastText classification (lid.176.ftz) or cloud inference pipelines via Bhashini.
  • Transliteration: Convert between Roman script and native Indic scripts via Bhashini or Aksharamukha.
  • Speech to text: Transcribe audio with Bhashini, Sarvam, local Faster-Whisper, or keyless Google Speech.
  • Text to speech: Generate audio with Bhashini, Sarvam, or Edge TTS and pass model-specific voice settings.
  • Script Identification: Fast, zero-dependency Unicode script identification across 12+ Indic scripts and Latin.
  • Document and Code Protection: Structural pre-processors and post-processors protect headings, bullet markers, inline code spans, URLs, and code blocks from neural translation corruption.
  • Resilient Execution: Automatic multi-provider fallback routing, bounded concurrency limits per provider, and exponential backoff retries with jitter.
  • High-Performance Caching: In-memory LRU and multi-process SQLite caches with write-ahead logging (WAL mode) and stampede protection.
  • Canonical Normalization: Shared language registry recognizing all 22 Eighth Schedule Indian languages plus English, mapping aliases and regional codes to BCP 47.
  • Localization Catalogs: Match reviewed human translations for critical UI strings before dispatching to neural engines.

Getting started

Install the core package with pip install indic-language-utils. Provider selection is explicit, and local detection requires an optional extra. The installation and quick start guide covers a credential-free setup, Bhashini configuration, and the first detection and translation calls.

Supported Providers

Provider Capability Mode Prerequisites
Aksharamukha Transliteration (120+ scripts) Offline / Local [local-transliteration] extra
Bhashini Translation, Detection, Transliteration, STT, TTS Cloud API API key, Endpoint, Service ID
Sarvam AI Translation, Detection, STT, TTS Cloud API API key (SARVAM_API_KEY)
FastText Text Language Detection Offline / Local [local-tld] extra
Faster-Whisper Speech to text Offline / Local [stt-whisper] extra
Google Free STT Speech to text Cloud (unofficial) [stt-google-free] extra
Google Translate Translation Cloud (unofficial) [googletrans] extra
Microsoft Edge TTS Text to speech Cloud (unofficial) [tts-edge] extra

Configuration

The library uses a tiered configuration system combining project TOML files (.indic-language-utils.toml), environment variables, and programmatic overrides.

Example .indic-language-utils.toml:

[cache]
enabled = true
backend = "sqlite"
path = ".cache/translations.sqlite3"
max_entries = 50000
ttl_seconds = 86400

[retry]
max_attempts = 3
base_delay_seconds = 0.25
max_delay_seconds = 5.0

[providers.bhashini]
endpoint = "https://dhruva-api.bhashini.gov.in/services/inference/pipeline"
translation_service_id = "default-translation-model-id"
detection_service_id = "default-tld-model-id"
transliteration_service_id = "default-transliteration-model-id"
max_concurrency = 8

[providers.sarvam]
endpoint = "https://api.sarvam.ai"
model = "sarvam-translate:v1"
stt_model_id = "saaras:v4"
tts_model_id = "bulbul:v3"
max_concurrency = 8

[routes]
translation = ["sarvam", "bhashini", "googletrans"]
text_language_detection = ["sarvam", "bhashini", "fasttext"]
transliteration = ["bhashini", "aksharamukha"]
speech_to_text = ["bhashini", "sarvam", "google_free", "faster_whisper"]
text_to_speech = ["bhashini", "sarvam", "edge_tts"]

Supply credentials securely through environment variables:

export BHASHINI_API_KEY="your-bhashini-api-key"
export SARVAM_API_KEY="your-sarvam-api-key"

Documentation

Comprehensive guides are available in the documentation site:

Development

Install the locked development environment with uv:

uv sync --dev
uv run pre-commit install

Run test suite, code quality checks, and local documentation server:

uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytest
uv build
uv run mkdocs serve
uv run mkdocs build --strict

Interactive Testing Workbench

A local evaluation workbench and REST API server is included for testing translation, detection, transliteration, STT, and TTS interactively. The web assets are built from a source checkout and are not included in the Python wheel:

# Build the web interface
cd web && pnpm install && pnpm build && cd ..

# Launch the FastAPI server with static UI mounted at http://127.0.0.1:8000
uv run indic-server

Explore interactive API documentation at http://127.0.0.1:8000/docs.

License

This project is licensed under the MIT License.

Release files for indic-language-utils 0.6.0b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for indic-language-utils 0.6.0b1
File Size Uploaded
indic_language_utils-0.6.0b1.tar.gz 423.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for indic-language-utils 0.6.0b1
File Interpreter ABI Platform
indic_language_utils-0.6.0b1-py3-none-any.whl Python 3 none any Details

Total release size: 546.3 kB

Release files / indic_language_utils-0.6.0b1.tar.gz

Download URL indic_language_utils-0.6.0b1.tar.gz
Size 423.0 kB
Tags Source
SHA-256 checksum
How to use checksums
23f4246c1ae772bf3c0e9aacac16329150a1b3a2e4df33ab3c4a65e5836f3ba9
BLAKE2b-256 checksum
How to use checksums
0061d277c969511c12765a514f9e965db0026896d855b9ef0b0fd67e9dbc7b0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / indic_language_utils-0.6.0b1-py3-none-any.whl

Download URL indic_language_utils-0.6.0b1-py3-none-any.whl
Size 123.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
638a93e5b24aa57f30eee258c8d7638fdb66530109f9f8bc07cba74f75b077d0
BLAKE2b-256 checksum
How to use checksums
bdcfa1e840d0427e2150f8d913271b8114843c7b0221f9084802991911671e20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0b1 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page