Zaban Python Client
Official Python client for Zaban API - providing access to Zaban services for Indian languages including translation, text-to-speech, speech-to-text, and transliteration.
🌟 Features
- Translation: Powered by IndicTrans2, supporting 22 Indian languages
- Text-to-Speech (TTS): Convert text to natural-sounding speech
- Speech-to-Text (STT): Transcribe audio to text
- Transliteration: Convert text between different scripts
- Async Support: Full async/await support for concurrent operations
- Type Safe: Fully typed with Pydantic models
- Simple API: Clean, intuitive interface similar to OpenAI's client
📦 Installation
pip install zaban
🚀 Quick Start
from zaban import Zaban
# Initialize client with API key
client = Zaban(api_key="sk-your-api-key")
# Or use environment variable ZABAN_API_KEY
client = Zaban()
# Translate text
result = client.translation.create(
text="Hello, how are you?",
source_lang="eng_Latn",
target_lang="hin_Deva"
)
print(result.translated_text) # "आप कैसे हैं?"
📖 Usage Examples
Translation
# English to Hindi
result = client.translation.create(
text="Hello, how are you?",
source_lang="eng_Latn",
target_lang="hin_Deva"
)
print(result.translated_text) # "आप कैसे हैं?"
# Auto-detect source language
result = client.translation.create(
text="Hello",
target_lang="hin_Deva",
auto_detect=True
)
# Using convenience method
result = client.translation.translate(
"Hello",
to="hin_Deva",
from_="eng_Latn"
)
Text-to-Speech (TTS)
# Generate speech from text
audio = client.audio.speech.create(
text="नमस्ते दुनिया",
lang="hi",
speaker="female",
format="wav"
)
# Save to file
audio.save("output.wav")
# Or get bytes directly
audio_bytes = audio.content
Speech-to-Text (STT)
# Transcribe from file path
transcription = client.audio.transcriptions.create(
audio="audio.wav",
lang="hi"
)
print(transcription.text)
# From file object
with open("audio.wav", "rb") as f:
transcription = client.audio.transcriptions.create(
audio=f,
lang="hi"
)
# From audio URL
transcription = client.audio.transcriptions.create(
audio_url="https://example.com/audio.wav",
lang="hi"
)
Transliteration
# Transliterate from Latin to Devanagari
result = client.transliteration.create(
text="namaste",
source_script="latn",
target_script="deva",
lang="hi",
topk=3
)
print(result.top) # "नमस्ते"
print(result.results) # ["नमस्ते", "नमस्ते", "नमस्ते"]
⚡ Async Support
import asyncio
from zaban import AsyncZaban
async def main():
# Initialize async client
async with AsyncZaban(api_key="sk-your-api-key") as client:
# Single translation
result = await client.translation.create(
text="Hello",
target_lang="hin_Deva",
auto_detect=True
)
print(result.translated_text)
# Batch translations (concurrent)
texts = ["Hello", "Goodbye", "Thank you"]
tasks = [
client.translation.create(text=t, target_lang="hin_Deva", auto_detect=True)
for t in texts
]
results = await asyncio.gather(*tasks)
for result in results:
print(result.translated_text)
asyncio.run(main())
🌐 Supported Languages
The Zaban API supports 22 Indian languages plus English using BCP-47 format with script:
| Language | Code | Script |
|---|---|---|
| English | eng_Latn |
Latin |
| Hindi | hin_Deva |
Devanagari |
| Bengali | ben_Beng |
Bengali |
| Tamil | tam_Taml |
Tamil |
| Telugu | tel_Telu |
Telugu |
| Gujarati | guj_Gujr |
Gujarati |
| Kannada | kan_Knda |
Kannada |
| Malayalam | mal_Mlym |
Malayalam |
| Marathi | mar_Deva |
Devanagari |
| Punjabi | pan_Guru |
Gurmukhi |
| Oriya | ory_Orya |
Oriya |
| Assamese | asm_Beng |
Bengali |
| Urdu | urd_Arab |
Arabic |
[See full list in documentation]
🔧 Configuration
Environment Variables
# Set API key
export ZABAN_API_KEY="sk-your-api-key"
# Alternative
export ZABAN_KEY="sk-your-api-key"
Client Options
client = Zaban(
api_key="sk-your-api-key", # API key
base_url="http://localhost:8000/api/v1", # API base URL
timeout=30.0, # Request timeout in seconds
max_retries=2, # Max retries for failed requests
)
🛡️ Error Handling
from zaban import (
Zaban,
ZabanError,
AuthenticationError,
RateLimitError,
ValidationError,
APIError,
TimeoutError,
ConnectionError,
)
try:
result = client.translation.create(
text="Hello",
target_lang="hin_Deva"
)
except AuthenticationError as e:
print(f"Invalid API key: {e}")
except RateLimitError as e:
print(f"Rate limit exceeded: {e}")
except ValidationError as e:
print(f"Invalid request: {e}")
except TimeoutError as e:
print(f"Request timed out: {e}")
except ConnectionError as e:
print(f"Connection failed: {e}")
except ZabanError as e:
print(f"API error: {e}")
🔑 Getting an API Key
- Sign up at [Zaban Dashboard]
- Navigate to API Keys section
- Create a new API key
- Copy the key (starts with
sk-) - Use it in your client initialization
📚 Examples
Check out the examples/ directory for more usage examples:
basic_usage.py- Basic usage examplesasync_usage.py- Async/await examplesbatch_translation.py- Batch processing
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🔗 Links
💬 Support
- GitHub Issues: Report bugs or request features
- Email: support@zaban.ai
🙏 Acknowledgments
Built with ❤️ using AI4Bharat's amazing open-source models:
- IndicTrans2 for translation
- AI4Bharat TTS/STT services for speech processing
Note: This is an unofficial client. For official API documentation.
Metadata
Release files for zaban 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zaban-0.1.3.tar.gz | 20.7 kB | Without provenance | Details for zaban-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zaban-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for zaban-0.1.3-py3-none-any.whl |
Total release size: 40.1 kB
Release files / zaban-0.1.3.tar.gz
| Download URL | zaban-0.1.3.tar.gz |
|---|---|
| Size | 20.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2c8a86bef256d4206651ecac9f23158bc8b0fec63ada71a72d73c80a71552247
|
|
BLAKE2b-256 checksum How to use checksums |
bab86cfcfc15b7e7de2d92c704e3e773ae403be210268dd803971a62eaeee8f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Release files / zaban-0.1.3-py3-none-any.whl
| Download URL | zaban-0.1.3-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e01117a39fb51ffe8569bc74b810ccd14594bc4076e359baca2e4babc035bbc
|
|
BLAKE2b-256 checksum How to use checksums |
df18c80e1f14cb42d15ccd1de5670ebca810b9abae3fc645993923f9281de1fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Security for zaban 0.1.3
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.