API overview
One endpoint, every voice.
Svara TTS Turbo speaks 82 languages in hundreds of voices, and returns first audio in about 80 ms.
https://api.kenpathlabs.com
Quickstart
Bearer auth, JSON in, audio out.
curl https://api.kenpathlabs.com/v1/audio/speech \
-H "Authorization: Bearer $SVARA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "नमस्ते! Welcome to Svara.",
"voice": "sv_enhdbrj5",
"lang": "hin",
"response_format": "mp3"
}' --output hello.mp3from svara import Svara
client = Svara() # reads SVARA_API_KEY
audio = client.speech.create(
input="नमस्ते! Welcome to Svara.",
voice="sv_enhdbrj5",
response_format="mp3",
)
open("hello.mp3", "wb").write(audio)What you can do
Speech synthesis
One POST returns audio. OpenAI's speech schema, so most clients work unchanged.
- Raw graphemes in any supported language — no phoneme prep.
- Code-switching mid-sentence, in one voice.
Streaming
Audio starts arriving while the rest is still being generated.
- About 80 ms to first audio.
- Tune the prebuffer and chunk size for your transport.
Input streaming
Feed an LLM's token stream straight in and the voice starts a few words behind the writer.
- No sentence buffering.
- Built for voice agents.
Voice cloning
Send a few seconds of reference audio and get a voice that speaks every language.
- Encode a reference once, reuse the codes.
- Consent-gated by design.
Voice library
Hundreds of voices across ten accent families, searchable and filterable.
- Preview any voice before you ship it.
- Per-voice settings you can read and edit.
Telephony formats
8 kHz G.711 straight out of the endpoint, so nothing has to be resampled.
- µ-law and A-law for SIP and media streams.
- 24 kHz PCM for everything else.
Word timestamps
Character-level start and end times alongside the audio.
- Captions, karaoke highlighting, and lip-sync.
- Available on the streaming path too.
Text normalization
Numbers, dates, amounts, and symbols read the way a person reads them.
- Per-language, enabled with one flag.
- Pronunciation dictionaries for names and brands.
Built for agents
Every TTS streams its output. This one also streams its input, so speech starts a few words into the reply instead of a sentence behind it.
from svara import AsyncSvara
client = AsyncSvara()
# Feed the LLM's tokens straight in.
# The voice starts a few words behind.
async for chunk in client.speech.stream_input(
llm_token_stream,
voice="sv_enhdbrj5",
):
play(chunk)Endpoints
Request and response shapes live in the docs.
Speech
The OpenAI-compatible surface. Point an existing client at the base URL and it works.
- POST/v1/audio/speechSynthesize speech. Set stream to start audio early.
- POST/v1/audio/encodeTurn a reference clip into reusable codes for cloning.
- POST/v1/audio/decodeDecode codes back to audio.
Speech (ElevenLabs-compatible)
The same model behind ElevenLabs' request shape, for stacks already built against it.
- POST/v1/text-to-speech/{voice_id}Synthesize with a voice in the path.
- POST/v1/text-to-speech/{voice_id}/streamThe streaming variant.
- POST/v1/text-to-speech/{voice_id}/with-timestampsAudio plus character-level timings.
- POST/v1/text-to-speech/{voice_id}/stream/with-timestampsBoth at once.
Voices
- GET/v1/voicesList every available voice.
- GET/v2/voicesSearch and filter the library.
- GET/v1/voices/{voice_id}One voice's detail.
- GET/v1/voices/{voice_id}/previewA sample clip of the voice.
- POST/v1/voices/addAdd a cloned voice to your library.
- GET/v1/voices/{voice_id}/settingsRead a voice's settings.
- POST/v1/voices/{voice_id}/settings/editChange them.
- DELETE/v1/voices/{voice_id}Remove a voice you added.
Account & metadata
- GET/v1/languagesEvery supported language and its aliases.
- GET/v1/modelsAvailable models.
- GET/v1/userThe authenticated account.
- GET/v1/user/subscriptionPlan and usage.
- GET/healthService health.
Audio formats
- mp3
- Default. 128 kbps unless you set bitrate_kbps.
- opus
- Low bitrate, good for real-time transport.
- aac
- Broad device support.
- flac
- Lossless.
- wav
- Containered PCM.
- pcm
- Raw 24 kHz s16le. Lowest latency.
- ulaw
- 8 kHz G.711 µ-law, for telephony.
- alaw
- 8 kHz G.711 A-law, for telephony.
Key parameters
- voice
- A voice id, or its display name.
- lang
- Language hint — name, alias, or ISO-3. Enables normalization.
- response_format
- One of the eight formats above.
- sample_rate
- 8000 to 48000 Hz.
- speed
- 0.7 to 1.5. Pitch is preserved.
- stream
- Start returning audio before generation finishes.
- mode
- tts, or voice_clone with a reference.
- normalize
- Read numbers, dates, and symbols aloud properly. Needs lang.
- pronunciation_dictionary_id
- Force pronunciations for names and brands.
SDKs
The API is plain HTTP, so any client works. These save you the plumbing.
Also on this domain
The Lokah datasets API.
The speech dataset catalogue is readable by code and by agents: a JSON API with the same filters as the catalogue page, an MCP server, a Croissant file per dataset, and every Lokah page as Markdown on request.