Voice Bot Architecture: Understanding the Stack
Before deciding how to build a voice bot, you need to understand what's involved. A voice bot has four core components:
┌─────────────────────────────────────────────────────┐
│ VOICE BOT │
├─────────────┬─────────────┬─────────────┬───────────┤
│ Telephony │ STT │ LLM │ TTS │
│ (Twilio) │ (Deepgram) │ (GPT-4) │(ElevenLabs)│
└─────────────┴─────────────┴─────────────┴───────────┘1. Telephony Layer
Makes and receives phone calls. Connects your bot to the phone network.
Options:
- Twilio (most popular)
- Vonage
- Telnyx
- Plivo
What it provides:
- Phone numbers in 100+ countries
- SIP connectivity
- Call routing and forwarding
- Recording capabilities
- WebSocket for real-time audio
2. Speech-to-Text (STT)
Converts the caller's spoken words into text the AI can process.
Options:
- Deepgram (fastest, most accurate)
- OpenAI Whisper (good quality, slower)
- Google Speech-to-Text
- AssemblyAI
- Azure Speech
Key metrics:
- Latency (how fast)
- Accuracy (word error rate)
- Language support
- Streaming capability
3. Large Language Model (LLM)
Processes the text, understands intent, and generates responses.
Options:
- GPT-4 (best quality)
- GPT-4o-mini (good balance)
- GPT-3.5-turbo (cheapest)
- Claude 3 Sonnet/Haiku
- Gemini Pro
What it does:
- Understands caller intent
- Maintains conversation context
- Generates appropriate responses
- Can call functions (book appointments, look up data)
4. Text-to-Speech (TTS)
Converts the AI's text response back to natural-sounding speech.
Options:
- ElevenLabs (most natural)
- OpenAI TTS (good quality, fast)
- Play.ht
- Amazon Polly (cheapest)
- Azure Neural TTS
Key metrics:
- Voice naturalness
- Latency
- Language/accent options
- Custom voice capability
The DIY Approach: Building from Scratch
Architecture Overview
Building a voice bot from scratch means integrating all components yourself:
Caller → Twilio → WebSocket Server → STT → LLM → TTS → WebSocket → Twilio → CallerTech Stack Options
Backend:
- Node.js with Express/Fastify
- Python with FastAPI
- Go for high performance
Real-time:
- WebSockets for audio streaming
- Redis for session management
- Queue system for scaling
Infrastructure:
- AWS/GCP/Azure
- Kubernetes for scaling
- CDN for global distribution
Development Process
Week 1-2: Telephony Setup
- Create Twilio account
- Get phone numbers
- Configure WebSocket endpoints
- Handle call events (answer, hangup, DTMF)
Week 3-4: Audio Pipeline
- Integrate Deepgram for real-time STT
- Handle audio streaming
- Manage conversation state
- Implement interruption handling
Week 5-6: AI Integration
- Connect LLM (GPT-4 or Claude)
- Design conversation prompts
- Implement function calling
- Handle context management
Week 7-8: Voice Response
- Integrate ElevenLabs/OpenAI TTS
- Stream audio back to caller
- Optimize for low latency
- Handle edge cases
Week 9-10: Testing & Polish
- End-to-end testing
- Performance optimization
- Error handling
- Monitoring and logging
Week 11-12: Production
- Deploy infrastructure
- Load testing
- Security review
- Documentation
Sample Code: Basic Twilio + GPT-4 Integration
Here's a simplified example of the core loop:
// Simplified voice bot server
const WebSocket = require('ws');
const { OpenAI } = require('openai');
const { Deepgram } = require('@deepgram/sdk');
const openai = new OpenAI();
const deepgram = new Deepgram(process.env.DEEPGRAM_KEY);
// Handle incoming call audio
async function handleAudio(audioBuffer, conversationHistory) {
// 1. Transcribe speech to text
const transcript = await deepgram.transcription.preRecorded({
buffer: audioBuffer,
mimetype: 'audio/wav'
});
const userMessage = transcript.results.channels[0].alternatives[0].transcript;
// 2. Generate AI response
conversationHistory.push({ role: 'user', content: userMessage });
const completion = await openai.chat.completions.create({
model: 'gpt-4',
messages: conversationHistory,
max_tokens: 150
});
const aiResponse = completion.choices[0].message.content;
conversationHistory.push({ role: 'assistant', content: aiResponse });
// 3. Convert response to speech
const audio = await openai.audio.speech.create({
model: 'tts-1',
voice: 'alloy',
input: aiResponse
});
return { audio, conversationHistory };
}Note: This is heavily simplified. Production code needs:
- WebSocket handling
- Streaming audio
- Interruption detection
- Error recovery
- Session management
- And much more...
DIY Cost Breakdown
Per-minute costs (at moderate volume):
| Component | Provider | Cost/Minute |
|---|---|---|
| Telephony | Twilio | $0.015 |
| STT | Deepgram | $0.005 |
| LLM | GPT-4o-mini | $0.015 |
| TTS | OpenAI TTS | $0.015 |
| Total | $0.05 |
With higher-quality options:
| Component | Provider | Cost/Minute |
|---|---|---|
| Telephony | Twilio | $0.015 |
| STT | Deepgram Nova | $0.006 |
| LLM | GPT-4 | $0.045 |
| TTS | ElevenLabs | $0.025 |
| Total | $0.091 |
Fixed costs:
- Phone numbers: $1-5/month each
- Server infrastructure: $100-500/month
- Developer time: $10,000-30,000 initial + ongoing
When DIY Makes Sense
Choose DIY if you:
- Have experienced AI/ML engineers on staff
- Need 50,000+ minutes per month (cost advantage)
- Require deep customization of every component
- Want to use specific AI models not available on platforms
- Are building a voice AI product (not just using it)
- Have time (2-3 months minimum to production)
The Platform Approach: Using Existing Solutions
How Platforms Work
Voice AI platforms bundle all components together:
Caller → Platform handles everything → CallerYou configure conversation flows and business logic. The platform handles:
- Telephony
- Audio processing
- AI orchestration
- Voice synthesis
- Scaling and reliability
Platform Options Compared
Retell AI
What it offers:
- All-in-one voice AI platform
- Dashboard for conversation design
- Good default voices
- Easy deployment
Pricing: $0.10-0.12/minute all-inclusive
Best for: Quick launch, English-focused
Limitations: Limited language support, less customization
Vapi
What it offers:
- Developer-friendly platform
- BYOK (bring your own keys) option
- Flexible LLM choices
- Good documentation
Pricing: $0.05/minute base + usage
Best for: Developers who want flexibility
Limitations: More technical than some alternatives
Bland AI
What it offers:
- Enterprise focus
- Very natural voices
- Sales-oriented features
- Compliance certifications
Pricing: $0.09-0.15/minute
Best for: Enterprise sales automation
Limitations: Higher price point
Edesy
What it offers:
- 40+ languages (strongest Indian language support)
- No-code conversation builder
- Managed service approach
- Local India support
Pricing: Custom per-minute pricing
Best for: Indian market, multilingual needs
Limitations: Best for specific use cases
Platform Deployment Process
Day 1-2: Setup
- Create account
- Get phone number
- Connect integrations (CRM, calendar)
Day 3-5: Design
- Design conversation flows
- Write prompts and responses
- Configure business logic
- Set up function calls
Day 6-7: Test
- Internal testing
- Refine based on failures
- Edge case handling
Day 8-10: Launch
- Small pilot
- Monitor and adjust
- Full rollout
Total time: 1-2 weeks vs. 2-3 months for DIY
Platform Cost Breakdown
Retell AI (10,000 minutes/month):
- Platform: $0.12 × 10,000 = $1,200/month
- Phone numbers: ~$20/month
- Total: ~$1,220/month
Vapi (10,000 minutes/month):
- Platform: $0.05 × 10,000 = $500/month
- LLM pass-through: ~$200/month
- Telephony: ~$150/month
- Total: ~$850/month
DIY (10,000 minutes/month):
- Components: $0.08 × 10,000 = $800/month
- Infrastructure: $200/month
- Total: ~$1,000/month
- Plus: Engineering time (priceless)
When Platforms Make Sense
Choose a platform if you:
- Need to launch in days/weeks, not months
- Don't have AI engineering resources
- Want managed reliability and uptime
- Process less than 50,000 minutes/month
- Prefer predictable pricing
- Need to focus on business logic, not infrastructure
Decision Framework
Cost Comparison at Scale
| Monthly Minutes | DIY | Retell AI | Vapi | Break-even |
|---|---|---|---|---|
| 5,000 | $400 + dev | $600 | $350 | Platform wins |
| 10,000 | $800 + dev | $1,000 | $700 | Platform wins |
| 25,000 | $2,000 + dev | $2,500 | $1,750 | Depends on dev cost |
| 50,000 | $4,000 + dev | $5,000 | $3,500 | DIY starts winning |
| 100,000 | $8,000 + dev | $10,000 | $7,000 | DIY wins if dev covered |
Key insight: If you factor in developer time at $150/hour, DIY only makes financial sense at very high volumes OR if you're building it as a product.
Feature Comparison
| Feature | DIY | Platforms |
|---|---|---|
| Time to market | 2-3 months | 1-2 weeks |
| Customization | Unlimited | Limited |
| Maintenance burden | High | Low |
| Scaling | You manage | Automatic |
| Model flexibility | Choose any | Platform-limited |
| Voice options | Choose any | Platform-limited |
| Cost at 10K min | Lower | Higher |
| Cost at 1K min | Higher | Lower |
Decision Tree
Do you have AI engineers?
├── No → Use a platform
└── Yes
└── Do you need to launch in < 1 month?
├── Yes → Use a platform
└── No
└── Will you process > 50K minutes/month?
├── No → Use a platform (ROI better)
└── Yes
└── Do you need deep customization?
├── No → Either works (evaluate total cost)
└── Yes → Build DIYCommon Mistakes to Avoid
1. Underestimating Latency
Latency kills voice bots. If there's more than 500ms delay, conversations feel robotic.
Latency sources:
- STT processing: 100-300ms
- LLM generation: 200-1000ms
- TTS generation: 100-300ms
- Network round trips: 50-200ms
Solutions:
- Use streaming STT and TTS
- Choose fastest LLM tier
- Deploy close to users
- Pre-warm connections
2. Ignoring Interruption Handling
Humans interrupt. If your bot can't handle it, conversations break.
What happens without handling:
- User talks while bot is speaking
- Both audio streams collide
- Context gets lost
- Frustration ensues
Solution: Implement barge-in detection and gracefully stop TTS output when user starts speaking.
3. Poor Error Recovery
Things will go wrong. Plan for it.
Common failures:
- STT returns empty (noise, unclear speech)
- LLM times out
- TTS fails
- Network interruption
Solution: Graceful fallbacks like "I didn't catch that, could you repeat?" and "Let me transfer you to a human."
4. Not Testing with Real Accents
Your test team probably speaks clearly in a quiet room. Real callers don't.
Test with:
- Various accents (regional, international)
- Background noise (cars, offices, crowds)
- Poor phone connections
- Fast and slow speakers
- Elderly callers
5. Forgetting Human Handoff
AI can't handle everything. Always have an escape hatch.
Implement:
- Explicit transfer request: "transfer me to human"
- Frustration detection after multiple failures
- Complexity threshold (too many entities)
- Time limit (conversation too long)
Step-by-Step: Getting Started
Option A: Quick Start with Platform
Using Vapi (developer-friendly):
- Sign up at vapi.ai
- Get API key
- Create assistant with system prompt
- Configure phone number
- Make test call
import Vapi from '@vapi-ai/web';
const vapi = new Vapi('your-public-key');
const assistant = {
model: {
provider: 'openai',
model: 'gpt-4',
messages: [
{
role: 'system',
content: 'You are a helpful appointment booking assistant for City Clinic.'
}
]
},
voice: {
provider: 'playht',
voiceId: 'jennifer'
}
};
vapi.start(assistant);Option B: DIY with Twilio + GPT
- Create Twilio account
- Get phone number
- Set up webhook endpoint
- Integrate Deepgram for STT
- Connect to OpenAI
- Add ElevenLabs for TTS
- Handle audio streaming
- Deploy and test
Minimum viable code: ~1,000 lines Production-ready code: ~5,000-10,000 lines
Option C: Managed with Edesy
- Contact Edesy team
- Define use case
- Design conversation flows (no-code)
- Configure integrations
- Test and launch
Conclusion
Building a voice bot in 2025 is more accessible than ever, but the build vs. buy decision matters:
Build DIY if:
- You have engineering resources
- Volume is very high (50K+ minutes)
- You need unique capabilities
- You're building a voice AI product
Use a platform if:
- Speed matters (launch in days)
- You lack AI engineering
- Volume is moderate
- You want to focus on business logic
The technology is mature. Whether you build or buy, voice bots can handle real conversations that customers accept and even prefer. The question is just which path gets you there efficiently.
Related Resources: