Why Voice Customer Service Needs Full-Duplex
Traditional IVR (interactive voice response) systems have a 65-70% abandonment rate. Users hang up because the interaction feels robotic, slow, and inflexible. Half-duplex AI voice agents improve the experience somewhat — but they still feel like talking to a machine because they fundamentally are: a machine that can only do one thing at a time.
Full-duplex changes the user experience in ways that directly impact business metrics:
- **Faster resolution** — no waiting for the AI to finish speaking before correcting a misunderstanding
- **Higher containment rate** — fewer transfers to human agents
- **Better CSAT** — conversations feel natural, reducing frustration
Seeduplex's production data shows 8.34% absolute improvement in call satisfaction over half-duplex alternatives.
Architecture Overview
A Seeduplex customer service implementation has three layers:
┌─────────────────────────────────┐
│ Telephony Layer │
│ (SIP trunk / WebRTC gateway) │
└──────────────┬──────────────────┘
│ Audio stream (bidirectional)
┌──────────────▼──────────────────┐
│ Seeduplex Voice Layer │
│ Full-duplex speech processing │
│ Turn detection + interruption │
└──────────────┬──────────────────┘
│ Text + intent
┌──────────────▼──────────────────┐
│ Business Logic Layer │
│ CRM integration + knowledge │
│ base + escalation routing │
└─────────────────────────────────┘Setting Up a Voice Session
import { SeedClient } from '@bytedance/seed-sdk';
const client = new SeedClient({ apiKey: process.env.SEED_API_KEY });
const session = await client.voice.createSession({
model: 'seeduplex-v1',
mode: 'full-duplex',
language: 'en',
systemPrompt: `You are a customer service agent for Acme Corp.
Be concise, helpful, and professional.
If you cannot resolve an issue, offer to transfer to a human agent.
Never make up information — if unsure, say so.`,
sensitivity: 'medium', // turn-detection sensitivity
noiseSuppress: true, // important for phone environments
});Handling Common Customer Service Scenarios
Interruption — Customer Corrects Mid-Sentence
session.on('interruption', () => {
// AI was speaking, user interrupted
// Seeduplex yields automatically
// Update UI to show AI is now listening
ui.setState('listening');
audioOutput.pause();
});
session.on('turn_start', () => {
// AI begins responding again
ui.setState('speaking');
audioOutput.resume();
});Intent Detection and CRM Lookup
session.on('response', async ({ text, isFinal }) => {
if (isFinal) {
// Extract intent from conversation
const intent = await detectIntent(text);
if (intent === 'order_status') {
const orderData = await crm.getOrderStatus(session.customerId);
session.injectContext(`Customer's latest order: ${JSON.stringify(orderData)}`);
}
if (intent === 'escalate') {
await transferToHuman(session);
}
}
});Escalation to Human Agent
async function transferToHuman(session: VoiceSession) {
// Notify the AI to wrap up
await session.sendText('Transferring you to a human agent now.');
// Get conversation transcript for warm handoff
const transcript = await session.getTranscript();
// Route to agent with context
await callCenter.transferCall({
sessionId: session.id,
transcript,
summary: await summarizeCall(transcript),
priority: session.metadata.sentiment < 0.3 ? 'high' : 'normal',
});
await session.close();
}Performance Tuning
Sensitivity Settings
The sensitivity parameter controls how aggressively Seeduplex detects turn endings:
| Setting | Best For | Trade-off |
|---|---|---|
| low | Elderly users, deliberate speakers | Higher latency, fewer false endings |
| medium | General customer service | Balanced (recommended) |
| high | Fast-paced conversations | Lower latency, more interruptions |
Noise Suppression for Phone Environments
Customer calls often come from noisy environments — cars, offices, public spaces. Always enable noise suppression for telephony use cases:
const session = await client.voice.createSession({
noiseSuppress: true,
// Additional phone-specific settings
echoCancellation: true,
gainControl: true,
});Metrics to Track
Once deployed, monitor these metrics to measure full-duplex impact:
| Metric | Half-Duplex Baseline | Full-Duplex Target |
|---|---|---|
| Average handle time | — | -15 to -25% |
| First call resolution | — | +8 to +15% |
| Containment rate | — | +10 to +20% |
| CSAT score | — | +0.3 to +0.5 pts |
| False interruption rate | Baseline | -50% |
Cost Considerations
At ~$0.008/minute via the Seed API, a typical 4-minute customer service call costs ~$0.032 in AI voice costs. Compare this to:
- Human agent: $1.00-3.00/minute
- Half-duplex AI (GPT-4o Voice): ~$0.24/minute
Full-duplex AI customer service with Seeduplex offers roughly 7x cost reduction vs. GPT-4o Voice and 30-90x vs. human agents, while delivering better CSAT than traditional half-duplex systems.
Getting Started
Seeduplex API access is in early access rollout. Apply at seed.bytedance.com and reference this guide for your implementation plan.