Skip to content

Streaming Hinglish text-to-speech

One API, two production voices, first audio in tens of milliseconds, at 20 paise per audio-minute. Hindi, English and the code-mixed Hinglish that Indian customers actually speak, with a normaliser that reads amounts, dates, OTPs and phone numbers the way a trained agent does.

41 msend-to-end time to first audio, warm, single stream, Mumbai (c3-standard-4)
0.14–0.19real-time factor per stream: a second of speech in under 200 ms of compute
12.4×audio-seconds per wall-second from one 4-vCPU node at four concurrent streams
₹0.20per audio-minute, metered per second, same price for REST and WebSocket

The sixty-second version

export VARTALAAP_API_KEY="vt_live_…"   # from https://tts.vartalaap.si/keys
curl -sN -X POST https://api.vartalaap.si/v1/tts \
  -H "x-api-key: $VARTALAAP_API_KEY" -H "content-type: application/json" \
  -d '{"text":"आपकी EMI ₹12,450 है, जो 5 नवंबर को due है.","voice":"anjura","format":"wav"}' -o emi.wav

The response body is a WAV stream: the first bytes arrive after the first 80 ms frame is decoded, so a player can start before synthesis finishes. For conversations, open a WebSocket once and send sentences as your LLM produces them; the server tells you the exact moment of first audio (first_audio_ms) and the real-time factor for every utterance.

How the engine behaves

  • Normalises first. ₹12,450 → बारह हज़ार चार सौ पचास रुपये, EMI → E M I, 5 नवंबर stays a date, OTP 482913 is read digit by digit. Preview it without synthesising.
  • Chunks on sentences, at most 50 tokens each, and streams chunk after chunk on one connection.
  • Caches text prefills per (voice, chunk): a repeated IVR line starts in ~18 ms of engine time.
  • Says no cleanly. When every worker is busy you get 503 with Retry-After (or an error event with retry_after), nothing is billed, and you retry. Limits & errors.

Where things live

API https://api.vartalaap.si (REST + WebSocket), Mumbai
Developer portal tts.vartalaap.si: keys, playground with live TTFA, usage, billing, voice requests
Status tts.vartalaap.si/status, GET /readyz
Changelog changelog
Company vartalaap.si