Payment reminders
Polite, firm EMI and bill reminders that customers understand the first time.
Streaming text-to-speech for Hindi, Hinglish and English. It switches languages mid-sentence the way people actually talk, and starts speaking in about 300 ms.
Each voice below says the same line, so you can compare them side by side. They are tuned for phone conversations: warm, clear and easy to follow.
Real agent lines, generated by the same API you'll use. Hindi in Devanagari, English words as they are.
Polite, firm EMI and bill reminders that customers understand the first time.
Refunds, order status and complaints, explained calmly in the customer's language.
Confirmations and reschedules that move between English and Hindi without a seam.
Policy and plan renewals with offers read out naturally, numbers included.
Measured on our production servers in Mumbai, through the same API you'll call.
Speech starts on the first phrase while your LLM is still writing the rest.
Transcribed back by an independent speech recogniser on our Hindi test set.
When a caller interrupts, generation halts within one audio frame.
Audio is generated ahead of playback, so it never stutters mid-sentence.
Built for LiveKit agents, and compatible with any client that speaks OpenAI's speech API.
livekit_comsync.py next to your agent, or point the OpenAI plugin at our URL.import os
from livekit.agents import AgentSession
from livekit_comsync import TTS
session = AgentSession(
stt=..., # your speech-to-text
llm=..., # your LLM
tts=TTS(
api_key=os.environ["COMSYNC_TTS_API_KEY"],
voice="siya_lively_best",
),
)
import os
from livekit.plugins import openai
# No plugin to install: LiveKit's OpenAI TTS works against our API
tts = openai.TTS(
base_url="https://api.trycomsync.com/v1",
api_key=os.environ["COMSYNC_TTS_API_KEY"],
voice="kavita_lib",
response_format="pcm",
)
curl https://api.trycomsync.com/v1/audio/speech \
-H "Authorization: Bearer $COMSYNC_TTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "नमस्ते! आपका order कल deliver होगा।", "voice": "neha_lib"}' \
-o hello.mp3
import asyncio, json, os, websockets
async def speak():
url = "wss://api.trycomsync.com/v1/stream"
headers = {"Authorization": f"Bearer {os.environ['COMSYNC_TTS_API_KEY']}"}
async with websockets.connect(url, additional_headers=headers) as ws:
await ws.recv() # ready
for token in ["नमस्ते, ", "आपका order ", "कल deliver होगा।"]:
await ws.send(json.dumps({"type": "text", "text": token}))
await ws.send(json.dumps({"type": "flush"}))
while True:
msg = await ws.recv()
if isinstance(msg, bytes):
play(msg) # 24 kHz mono 16-bit PCM
elif json.loads(msg)["type"] == "done":
break
asyncio.run(speak())
Tell us what you're building. We'll send your key with limits sized to your call volume.