Skip to main content

Python SDK for the Vakyam Text-to-Speech API

Project description

VakyamAI Python SDK

Python SDK for the Vakyam Text-to-Speech API.

This package intentionally exposes only the public TTS API surface:

  • GET /v1/voices
  • POST /v1/tts/generate
  • POST /v1/tts/stream
  • WS /v1/tts/websocket

API-key management and health endpoints are server/dashboard concerns and are not included.

Install

pip install vakyamai

For local development from this repository:

pip install -e ".[dev]"

Examples

All examples use the production API URL by default. Set your API key first:

export VAKYAM_API_KEY="vak_live_..."

Then run:

python examples/env_key_usage.py
python examples/synthesize.py
python examples/error_handling.py
python examples/async_streaming.py
python examples/async_websocket.py

Available examples:

Initialize

from vakyamai import VakyamAI

Vakyam = VakyamAI(
    api_key="vak_live_...",
    base_url="http://127.0.0.1:8000",  # omit for production
)

For safety, http:// base URLs are accepted only for localhost by default. Use allow_insecure_base_url=True only on trusted development networks.

By default, the SDK reads configuration from the environment:

export VAKYAM_API_KEY="vak_live_..."

Then create the client without arguments:

from vakyamai import VakyamAI

Vakyam = VakyamAI()

Precedence:

  • api_key= passed in code overrides VAKYAM_API_KEY
  • the SDK uses https://api.vakyam.ai by default
  • base_url= is available only as an explicit development/test override

List Voices

voices = Vakyam.voices.list(group_by="language")
print(voices)

Use the returned voice_name and language code in synthesis requests.

Generate Speech

response = Vakyam.tts.generate(
    text="வணக்கம், நான் வாக்யம் AI பேசுகிறேன்.",
    model_id="raaga-v1",
    voice_name="Meera",
    language="ta-IN",
    output_format="mp3",
    sample_rate=24000,
    speed=1.0,
    voice_strength=2.0,
)

response.save("speech.mp3")
print(response.duration_seconds, response.characters_used)

response.audio contains decoded audio bytes. response.audio_base64 preserves the raw API field. sample_rate accepts 8000, 16000, 24000, or 48000; the default is 24000. voice_strength controls voice conditioning strength from 1.0 to 3.0; the default is 2.0. Supported languages are ta-IN, hi-IN, mr-IN, te-IN, en-IN, gu-IN, bn-IN, and kn-IN. Supported output formats are mp3, wav, pcm, and mulaw.

HTTP Streaming

with open("speech.pcm", "wb") as file:
    for chunk in Vakyam.tts.stream(
        text="வணக்கம்.",
        model_id="raaga-v1",
        voice_name="Meera",
        language="ta-IN",
        output_format="pcm",
        sample_rate=24000,
        voice_strength=2.0,
    ):
        file.write(chunk)

To collect the full stream and response metadata:

streamed = Vakyam.tts.stream_to_bytes(
    text="வணக்கம்.",
    model_id="raaga-v1",
    voice_name="Meera",
    language="ta-IN",
    sample_rate=24000,
    voice_strength=2.0,
)

streamed.save("speech.pcm")
print(streamed.metadata.characters_used)

Async streaming is available through AsyncVakyamAI:

from vakyamai import AsyncVakyamAI

async with AsyncVakyamAI() as Vakyam:
    async for chunk in Vakyam.tts.stream(
        text="வணக்கம்.",
        model_id="raaga-v1",
        voice_name="Meera",
        language="ta-IN",
        output_format="pcm",
        sample_rate=24000,
        voice_strength=2.0,
    ):
        ...

AsyncVakyamAI is intentionally focused on streaming APIs. Use VakyamAI for voices.list() and non-streaming tts.generate().

WebSocket

with Vakyam.tts.websocket(
    model_id="raaga-v1",
    voice_name="Meera",
    language="ta-IN",
    output_format="pcm",
    sample_rate=24000,
    voice_strength=2.0,
) as ws:
    result = ws.synthesize("நான் சரியாக இருக்கிறேன்.")
    result.save("sentence.pcm")

The WebSocket API expects one complete sentence or utterance at a time. Idle WebSocket sessions close after 60 seconds without an incoming message by default. Calling ws.ping() sends a client ping and resets the server idle timer.

Async WebSocket usage:

from vakyamai import AsyncVakyamAI

async with AsyncVakyamAI() as Vakyam:
    async with Vakyam.tts.websocket(
        model_id="raaga-v1",
        voice_name="Meera",
        language="ta-IN",
        output_format="pcm",
        sample_rate=24000,
        voice_strength=2.0,
    ) as ws:
        result = await ws.synthesize("நான் சரியாக இருக்கிறேன்.")
        result.save("sentence.pcm")

Errors

The SDK maps the API error envelope into typed exceptions:

from vakyamai import RateLimitError, ValidationError

try:
    Vakyam.tts.generate(
        text="...",
        model_id="raaga-v1",
        voice_name="Meera",
        language="ta-IN",
        sample_rate=24000,
        voice_strength=2.0,
    )
except RateLimitError as exc:
    print(exc.retry_after_seconds)
except ValidationError as exc:
    print(exc.code, exc.message)

Common exception classes:

  • AuthenticationError
  • InsufficientCreditsError
  • ConcurrencyLimitError
  • RateLimitError
  • ServiceUnavailableError
  • ValidationError
  • APIError
  • APIConnectionError

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vakyamai-0.1.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vakyamai-0.1.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file vakyamai-0.1.0.tar.gz.

File metadata

  • Download URL: vakyamai-0.1.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for vakyamai-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0bf3596d22012bed996bb74431fc6085bb6959babaa48ca5602b3c9b353c1044
MD5 218b74099f52f04590a681045bff4c14
BLAKE2b-256 ec943d68c65165a83c8928808061fcf4e6684180159fbdbe0058c1a83bc11658

See more details on using hashes here.

File details

Details for the file vakyamai-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vakyamai-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for vakyamai-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eedcafd5dbfe80c28ed66be30a5e1ecec754c1acd0a5a899e8149a00657e60dd
MD5 5c22914205d7e9b450179b02515c178d
BLAKE2b-256 3bc4b391c38672714172697dd08b29435ad2e9b597db56e79fcbea19cb675c72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page