When to Use WebSocket TTS
Best for: Real-time conversational AI, voice agents, and applications needing continuous TTS streaming with multiple concurrent requests. Visit this tutorial for an implementation.
Key Benefits
- Low latency: ~300ms to first audio chunk
- Multiple requests: Handle multiple synthesis requests on single connection
- Real-time streaming: Audio chunks stream as they’re generated
- Persistent connection: Reuse connection for entire conversation
Connection
Endpoint
Authentication
Connect using your API key:Message Protocol
All messages use a unified format with atype
field.
Client → Server Messages
Synthesize Text
requestId
: Unique ID for tracking this requesttext
: Text to synthesize (max 10,000 characters)voiceId
: Voice to use (e.g., “v_meklc281” for Urdu female)outputFormat
: Audio format (optional, defaults to PCM_22050_16)
Cancel Request
Server → Client Messages
All server messages come through themessage
event:
Connection Ready
Audio Start
Audio Chunk
Audio End
Error
Simple Example
Output Formats
Format | Description | Use Case |
---|---|---|
PCM_22050_16 | Raw PCM, 22.05kHz, 16-bit | Direct audio processing |
MP3_22050_32 | MP3, 22.05kHz, 32kbps | Small file size, web |
MP3_22050_128 | MP3, 22.05kHz, 128kbps | High quality streaming |
WAV_22050_32 | WAV, 22.05kHz, 32-bit | Lossless audio |
ULAW_8000_8 | μ-law, 8kHz, 8-bit | Telephony systems |
Available Voices
Use the same voice IDs as REST API:v_meklc281
- Urdu femalev_8eelc901
- Info/Educationv_30s70t3a
- Nostalgic Newsv_yypgzenx
- Dada Jee (storytelling)
Error Codes
Code | Description | Action |
---|---|---|
auth_failed | Invalid API key | Check your API key |
synthesis_failed | TTS service error | Retry with backoff |
duplicate_request | Request ID already used | Use unique IDs |
rate_limit_exceeded | Too many requests | Slow down requests |
text_too_long | Text > 10,000 chars | Split into chunks |
Rate Limits
- Synthesis requests: 60 per minute per connection
- Cancel requests: 100 per minute per connection
- Max text length: 10,000 characters per request
- Daily limit: Based on your plan
Best Practices
Use Unique Request IDs
Use Unique Request IDs
Generate unique IDs (like UUIDs) for each synthesis request to track audio chunks properly.
Maintain Single Connection
Maintain Single Connection
Keep one WebSocket connection open and reuse it for multiple synthesis requests.
Buffer Audio Chunks
Buffer Audio Chunks
Collect audio chunks before playback for smooth streaming experience.
Handle Reconnection
Handle Reconnection
Implement exponential backoff for reconnection attempts on connection loss.