Give your app a voice that means it.

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.

</> Built for developers ⚡ ~75ms TTFB
No credit card required
Now playing
Meera
Indian Female

0:00
A frontier speech lab from India, selected under the IndiaAI Mission to build foundational AI models.

Say what you mean. The model handles how to say it.

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.

You write
Send Dr. Rao the ₹2.5L invoice, OTP 4021, before 3:30 pm.
Chariot speaks

0:00

Twelve realistic, human voices.

Real Chariot voices, English, Hindi and Hinglish from the same model. Press play to hear each one.

Voice
Accent

Evaluated where the bar is highest.

We test Chariot against the leading speech systems available in India, on Hindi word accuracy and speech quality.

Word error rateHindi · lower is better
Chariot6.98%
Sarvam v37.83%
ElevenLabs v37.90%
Smallest v3.110.54%
Speech qualityHigher is better
Chariot4.857
ElevenLabs v34.785
Sarvam v34.601
Smallest v3.14.579

From text to speech in a few lines.

One endpoint, one API key. Download a finished file, stream raw audio as it generates, or hold a WebSocket open for live agents.

REST returns a finished WAV file
Streaming sends 16-bit PCM from ~75ms
WebSocket speaks sentence by sentence for agents
Get an API key ›
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())

Simple pricing that scales with you.

Start free, upgrade when you need more. All prices in rupees, no forex markup.

annual saves ~17%
Free
₹0forever
10,000 credits included
All twelve studio voices
English, Hindi and Hinglish
2 concurrent requests
No credit card required
Start free
Most popular
Starter
₹499/mo
billed monthly
100,000 credits / month
Everything in Free
Commercial usage rights
3 concurrent requests
Get started ›
Startup
₹4,999/mo
billed monthly
1,500,000 credits / month
Everything in Starter
10 concurrent requests
Get started
Scale
₹29,999/mo
billed monthly
10,000,000 credits / month
Everything in Startup
25 concurrent requests
Get started

Need more? Talk to us ›

Engineered in India, for India.

Chariot runs on Indian infrastructure. Audio and text are processed in country, close to your users, under India’s data protection law.

~75ms
Time to first byte. The lowest latency in the country.
100%
India data residency. Nothing you send leaves the country.
DPDP
Compliant with India’s data protection law.

Questions, answered.

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.

Give your words a voice today.

Join 1,000+ builders shipping premium voice with Chariot. Start free with 10,000 credits, no credit card.