Skip to main content

Sarvam TTS

sarvam-tts is a Python client for the Sarvam AI text-to-speech API. It provides a clean SarvamTTS interface for multilingual Indian language synthesis, configurable output settings, and chunked request handling for reliable audio generation.

⚠️ This project is provided for educational and research purposes only. Please comply with Sarvam AI's terms of service and acceptable use policies when using the API.

✨ Features

  • Multi-language TTS support for Indian languages
  • Simple SarvamTTS API for generating MP3 output
  • Configurable TTSConfig for language, voice, pace, temperature, sample rate, and timeout
  • Concurrent chunk generation for long texts
  • Package metadata and install support via setup.py

📁 Project Structure

sarvam-tts/
├── README.md
├── LICENSE
├── requirements.txt
├── setup.py
├── example.py
├── sarvam_tts/
│   ├── __init__.py
│   ├── config.py
│   ├── exceptions.py
│   ├── utils.py
│   └── providers/
│       ├── __init__.py
│       ├── base.py
└───────└── sarvam.py

Package contents

  • sarvam_tts/__init__.py exports the public API: SarvamTTS, TTSConfig, TTSException, and TTSRequestError
  • sarvam_tts/config.py contains supported languages, default API URL, and configuration validation
  • sarvam_tts/providers/sarvam.py implements the Sarvam AI request flow and audio saving logic
  • sarvam_tts/providers/base.py defines the provider abstraction
  • sarvam_tts/utils.py contains the multilingual sentence tokenizer
  • example.py demonstrates basic usage

🛠️ Installation

Using PyPI (Recommended)

pip install sarvam-tts

Clone Locally

git clone https://github.com/sujalrajpoot/sarvam-tts.git
cd sarvam-tts
pip install -r requirements.txt

🧪 Quick Start

from sarvam_tts import SarvamTTS

client = SarvamTTS()

output_path = client.tts(
    text="Hello from Sarvam TTS!",
    language="english",
    voice="shreya",
    pace=1.0,
    temperature=0.6,
    sample_rate=22050,
    output_filepath="output.mp3",
)

print(output_path)

You can also customize the configuration directly:

from sarvam_tts import TTSConfig, SarvamTTS

config = TTSConfig(
    language="hindi",
    voice="shreya",
    pace=1.0,
    temperature=0.4,
    sample_rate=22050,
    output_path="demo/output.mp3",
)

client = SarvamTTS(config=config)
client.tts("नमस्ते, यह एक उदाहरण है।")

🧠 Supported Languages

  • english
  • hindi
  • bengali
  • tamil
  • telugu
  • kannada
  • malayalam
  • marathi
  • gujarati
  • punjabi
  • odia

🎤 Example Voice Names

The library supports common voice names such as:

  • shreya
  • shubh
  • manan
  • ishita
  • priya
  • suhani
  • ashutosh
  • ritu
  • amit
  • sumit
  • pooja
  • simran
  • rahul
  • kavya
  • ratan
  • shruti
  • aditya
  • soham
  • rehan
  • vijay
  • tarun
  • anand
  • aayan
  • rohan
  • dev
  • sunny
  • kabir
  • varun
  • neha
  • mani
  • mohit
  • rupali
  • advait
  • roopa
  • tanya
  • gokul
  • kavitha

🔧 API Reference

SarvamTTS.tts(...)

Parameters:

  • text – text to synthesize
  • language – optional override for the language
  • voice – optional override for the voice
  • pace – optional override for speaking pace
  • temperature – optional override for voice variability
  • sample_rate – optional override for sample rate
  • output_filepath – optional output path

TTSConfig

The configuration object provides defaults for:

  • timeout
  • verbose
  • output_path
  • language
  • voice
  • pace
  • temperature
  • sample_rate
  • api_url

🖼️ How It Works

  1. SarvamTTS accepts text and configuration values.
  2. The text is split into sentence-level chunks.
  3. Each chunk is sent to the Sarvam AI endpoint concurrently.
  4. Audio responses are merged into a single MP3 payload.
  5. The final audio is saved to the requested output path.

🧪 Running the Example

python example.py

The script generates sample audio files in a Test/ directory.

🤝 Contributing

Contributions are welcome. To contribute:

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Open a pull request

📄 License

This project is licensed under the MIT License. See LICENSE for details.

Metadata

Release files for sarvam-tts 1.1

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

Source distribution (sdist)

Source distribution for sarvam-tts 1.1
File Size Uploaded
sarvam_tts-1.1.tar.gz 18.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sarvam-tts 1.1
File Interpreter ABI Platform
sarvam_tts-1.1-py3-none-any.whl Python 3 none any Details

Total release size: 35.0 kB

Release files / sarvam_tts-1.1.tar.gz

Download URL sarvam_tts-1.1.tar.gz
Size 18.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e485be3c475d7f5d147392a694930135e9e7b3d129561e46daf889852c3fb7bd
BLAKE2b-256 checksum
How to use checksums
1269bd88c88767b95b232b763154aac0c0c77a5bf290680867aab411ebb2b30d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0

Release files / sarvam_tts-1.1-py3-none-any.whl

Download URL sarvam_tts-1.1-py3-none-any.whl
Size 17.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef1002379fbcbbe4ec836778f779cd1950132b65696aa238a1e9adb00e68fd85
BLAKE2b-256 checksum
How to use checksums
23b4079fea8d19865895dd73293920bfb0f9d52dfcfd946cc4be0cbfd5986bd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0

Release history Release notifications | RSS feed

This release

1.1 This release

2 release files

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