There's a moment in every AI voice call that determines whether the prospect
trusts the AI or hangs up immediately.
It happens in the first response. The prospect finishes talking. Then silence.
In a standard cascade voice pipeline (STT → LLM → TTS), here's what's
happening during that silence:
- Deepgram transcribes audio: ~300ms
- GPT-4o generates first token: ~500ms
- Cartesia synthesizes first audio: ~60ms
- SIP network delivery: ~80ms
Total: ~940ms of dead air.
On Indian mobile calls, anything above 800ms reads as a dropped connection.
The prospect says "Hello? Hello?" — and by the time the AI responds,
trust is already gone.
The Fix: Native Voice-to-Voice
Voice-to-voice processes audio end-to-end without intermediate text conversion.
python
# OpenAI Realtime API — voice-to-voice, no cascade
import asyncio
import websockets
import json
async def voice_to_voice_session():
url = "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview"
async with websockets.connect(url, extra_headers={
"Authorization": f"Bearer {OPENAI_KEY}",
"OpenAI-Beta": "realtime=v1"
}) as ws:
# Configure session
await ws.send(json.dumps({
"type": "session.update",
"session": {
"modalities": ["audio", "text"],
"voice": "alloy",
"input_audio_format": "pcm16",
"output_audio_format": "pcm16",
}
}))
async for message in ws:
event = json.loads(message)
if event["type"] == "response.audio.delta":
# Audio arrives in ~80-120ms from end of user speech
yield bytes.fromhex(event["delta"])
Latency comparison:
Architecture Total Latency First-Response Hang-up Rate
Cascade 940ms 38%
Voice-to-Voice 180ms 8%
TTGE Native 200ms 8%
Top comments (0)