Emotionally and contextually aware text to speech in English, Hindi and Hinglish. Built for streaming, with first audio in about 75ms. Ship voice agents that sound human.
Traditional TTS asks you to over-specify: expand numbers, clarify abbreviations, add pronunciation hints. Chariot infers what should be spoken from context. No more normalization hell.
Real Chariot voices, English, Hindi and Hinglish from the same model. Press play to hear each one.
We test Chariot against the leading speech systems available in India, on Hindi word accuracy and speech quality.
One endpoint, one API key. Download a finished file, stream raw audio as it generates, or hold a WebSocket open for live agents.
import os, requests MEERA = "f39eb367-1ba2-4857-8e96-67bb561c8012" resp = requests.post( "https://api.chariot.in/v1/tts", headers={ "chariotai-api-key": os.environ["CHARIOT_KEY"], "Content-Type": "application/json", }, json={ "voice_id": MEERA, "text": "Namaste! Aapka order bas pahunchne wala hai.", "model_type": "v0", }, ) resp.raise_for_status() open("chariot-tts.wav", "wb").write(resp.content)
import os, requests MEERA = "f39eb367-1ba2-4857-8e96-67bb561c8012" with requests.post( "https://api.chariot.in/v1/tts/stream", headers={ "chariotai-api-key": os.environ["CHARIOT_KEY"], "Content-Type": "application/json", }, json={ "voice_id": MEERA, "text": "Namaste! Aapka order bas pahunchne wala hai.", "model_type": "v0", }, stream=True, ) as resp: resp.raise_for_status() with open("chariot-tts.pcm", "wb") as f: for chunk in resp.iter_content(4096): f.write(chunk) # raw 16-bit PCM, 44100 Hz mono. To WAV: # ffmpeg -f s16le -ar 44100 -ac 1 \ # -i chariot-tts.pcm chariot-tts.wav
import os, json, asyncio import websockets # pip install websockets URL = ( "wss://api.chariot.in/v1/tts/ws" "?voice_id=f39eb367-1ba2-4857-8e96-67bb561c8012" "&response_format=pcm" "&split_granularity=sentence" "&api_key=" + os.environ["CHARIOT_KEY"] ) async def main(): async with websockets.connect(URL) as ws: await ws.send(json.dumps({ "type": "input.text", "text": "Namaste! Aapka order aa raha hai.", })) await ws.send(json.dumps({"type": "input.done"})) pcm = bytearray() async for msg in ws: if isinstance(msg, bytes): pcm += msg elif json.loads(msg)["type"] == "session.done": break open("chariot-tts.pcm", "wb").write(pcm) asyncio.run(main())
Start free, upgrade when you need more. All prices in rupees, no forex markup.
Need more? Talk to us ›
Chariot runs on Indian infrastructure. Audio and text are processed in country, close to your users, under India’s data protection law.
Everything a builder asks before the first request.
First audio arrives in about 75 milliseconds and speech streams as it generates. That is fast enough for voice agents, IVR and any product where the reply has to feel instant.
Of the systems we tested, Chariot had the lowest Hindi word error rate and the highest speech quality. More importantly, the voices carry emotion, pacing and accent, not a flat robotic read.
Chariot speaks English, Hindi and Hinglish from a single model, handling natural code-mixing without switching systems. More languages are on the way.
In India. Chariot runs with full India data residency and is DPDP compliant, so nothing you or your users send leaves the country.
Yes. Commercial usage rights are included from the Starter plan, so you can publish to YouTube, ads, podcasts and products.
Yes. Start free with 10,000 credits and no credit card required, with access to all twelve voices so you can create real audio before you ever pay.
You spend credits as you generate audio, so you only pay for what you use. Revising a line is cheap rather than a whole new studio booking, and all pricing is in rupees with no forex markup.
Join 1,000+ builders shipping premium voice with Chariot. Start free with 10,000 credits, no credit card.