API overview
One endpoint, every voice.
Svara TTS Turbo speaks 80+ 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.