Metadata-Version: 2.4
Name: bhashini-client-sdk
Version: 0.2.2
Summary: Python SDK for Bhashini inference APIs with unified support for ASR, NMT, TTS, OCR, NER, speaker services, normalization, and image-language workflows.
Home-page: https://github.com/bhashini-dibd/Bhashini-client-python-library.git
Author: Nidhi Jha
License: MIT
Project-URL: Homepage, https://github.com/bhashini-dibd/Bhashini-client-python-library.git
Project-URL: Source, https://github.com/bhashini-dibd/Bhashini-client-python-library.git
Project-URL: Issues, https://github.com/bhashini-dibd/Bhashini-client-python-library.git
Keywords: bhashini,asr,nmt,tts,ocr,ner,translation,speech
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.25.0
Requires-Dist: openpyxl>=3.1.0
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Bhashini Client SDK (Python)

`bhashini-client-sdk` is a Python SDK for working with Bhashini inference APIs through a unified `BhashiniClient`.

It provides a clean interface for speech, text, speaker, normalization, OCR, and image-language workflows while keeping validation, payload construction, model routing, and response parsing inside dedicated service modules.

## Overview

Supported service categories:

| Category | Services |
| --- | --- |
| Speech / Audio | ASR, TTS, Audio Language Detection, Speaker Diarization, Speaker Enrollment, Speaker Verification, Voice Cloning, Denoiser |
| Text | NMT, Transliteration, Text Language Detection, Text Normalization, Inverse Text Normalization, NER |
| Vision | OCR, Image Language Detection |

Each service includes:

- input validation
- payload construction
- API dispatch through a shared request handler
- response parsing into simple SDK outputs

## Installation

Requirements:

- Python `3.8+`

Install from PyPI:

```bash
pip install bhashini-client-sdk
```

## Authentication

Set the API key through `BHASHINI_API_KEY` or pass it directly to the client.

Environment variable:

```powershell
$env:BHASHINI_API_KEY="your_api_key"
```

Or in code:

```python
from bhashini_client import BhashiniClient

client = BhashiniClient(api_key="your_api_key")
```

## Quick Start

```python
from bhashini_client import BhashiniClient

client = BhashiniClient()

print(client.text_language_detection("Hello world"))
print(client.nmt("Hello", "en", "hi"))
print(client.tts("Hello from Bhashini", "en", output_file="output.wav"))
print(client.asr(r"C:\path\sample.wav", "hi"))
```

## Public Client Methods

| Method | Purpose | Return Type |
| --- | --- | --- |
| `client.asr(audio_input, source_lang)` | Speech to text | `str` transcription |
| `client.nmt(text, source_lang, target_lang)` | Translation | `str` translated text |
| `client.tts(text, source_lang, gender="female", output_file="output.wav")` | Text to speech | output file path `str` |
| `client.transliteration(text, source_lang, target_lang)` | Script conversion | transliterated text `str` |
| `client.text_language_detection(text)` | Text language detection | language code `str` |
| `client.audio_language_detection(audio_input)` | Audio language detection | language code `str` |
| `client.ocr(image_path, source_lang)` | OCR from local image | extracted text `str` |
| `client.ner(text, source_lang)` | Named entity recognition | `dict` with `entities` |
| `client.speaker_diarization(audio_input)` | Speaker segmentation | `list` of speaker blocks |
| `client.speaker_enrollment(audio_input, speaker_name)` | Speaker profile creation | speaker ID `str` |
| `client.speaker_verification(audio_input, speaker_id)` | Speaker verification | verification result |
| `client.voice_cloning(text, ref_text, ref_audio_input, source_lang="te", output_file="voice_clone_output.wav")` | Voice cloning | output file path `str` |
| `client.image_language_detection(image_input)` | Image language detection | language code `str` |
| `client.text_normalization(text, source_lang="en")` | Text normalization | normalized text `str` |
| `client.inverse_text_normalization(text, source_lang="en")` | ITN | normalized text `str` |
| `client.denoiser(audio_input, output_file="denoised_output.wav")` | Audio denoising | output file path `str` or audio URI `str` |

## Service Highlights

### ASR

- Supports local WAV input, base64 audio, and audio URI input
- Supports validated pre-processors: `vad`, `denoiser`
- Supports post-processors: `itn`, `punctuation`
- Automatically normalizes mismatched WAV sampling rates to `16000 Hz` before dispatch

### NMT

- Supports translation across validated language pairs
- Supports optional `glossary`, `domain`, `gender`, `enable_number_translation`, and `profanity_filter`
- Supports `pre_processors=["html"]`
- Supports `post_processors=["glossary"]`

### TTS

- Generates WAV output files through the public client
- Advanced service usage supports `speed`, `speaker_name`, `text_normalization`, `profanity_filter`, and `return_base64`

### Transliteration

- Supports suggestion count, sentence mode, and `numeric_transliteration`

### Text Language Detection

- Detects the top language code from input text

### Audio Language Detection

- Supports local WAV input, base64 audio, and audio URI input
- Automatically normalizes mismatched WAV sampling rates to `16000 Hz` before dispatch

### OCR

- Extracts text from a local image file

### NER

- Extracts named entities and returns a normalized `{"entities": [...]}` structure

### Speaker Services

- Enrollment supports local audio, base64 audio, and audio URI input
- Verification supports local audio, base64 audio, and audio URI input
- Diarization returns speaker segments with timestamps

### Voice Cloning

- Generates speech from reference text and reference audio

### Image Language Detection

- Supports local image path, public image URL, and base64 image content

### Text Normalization and ITN

- Dedicated normalization endpoints for written-form cleanup and inverse text normalization

### Denoiser

- Supports local audio, base64 audio, and audio URI input

## Model Discovery

```python
from bhashini_client import get_models_info, get_available_models

print(get_models_info("asr"))
print(get_available_models("asr", language="hi"))
print(get_available_models("nmt", language=("en", "hi")))
print(get_available_models("tts", language="en"))
```

## Error Handling

Services return structured string errors with these prefixes:

- `Input Error:`
- `Validation Error:`
- `API Error:`

## Package Contents

- `bhashini_client.BhashiniClient`
- `bhashini_client.get_models_info`
- `bhashini_client.get_available_models`

## License

MIT
