Developer Docs
Seeduplex API
Integrate full-duplex voice AI into your application. Real-time, bidirectional audio streaming.
Quick Start
1. Install
bash
npm install @bytedance/seed-sdk2. Initialize Client
typescript
import { SeedClient } from '@bytedance/seed-sdk';
const client = new SeedClient({
apiKey: process.env.SEED_API_KEY,
});3. Create a Full-Duplex Session
typescript
const session = await client.voice.createSession({
model: 'seeduplex-v1',
mode: 'full-duplex',
language: 'en', // 'en' | 'zh' | 'auto'
sampleRate: 16000, // 8000 | 16000 | 24000
channels: 1,
});4. Stream Audio
typescript
// Receive audio from the model
session.on('audio', (chunk: Buffer) => {
audioOutput.write(chunk);
});
// Handle turn-taking events
session.on('turn_start', () => {
console.log('Model started speaking');
});
session.on('turn_end', () => {
console.log('Model finished speaking');
});
session.on('interruption', () => {
console.log('User interrupted — model yielding');
audioOutput.flush();
});
// Send mic audio in real-time
microphoneStream.on('data', (chunk: Buffer) => {
session.sendAudio(chunk);
});
// End session
await session.close();Events Reference
| Event | Payload | Description |
|---|---|---|
audio | Buffer | Audio chunk from the model (PCM) |
transcript | { text, isFinal } | Transcription of user speech |
response | { text, isFinal } | Model response text |
turn_start | — | Model began speaking |
turn_end | — | Model finished its turn |
interruption | — | User interrupted; model yields |
error | Error | Session error |
close | — | Session closed |
Session Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
model | string | seeduplex-v1 | Model version |
mode | "full-duplex" | "half-duplex" | full-duplex | Interaction mode |
language | "en" | "zh" | "auto" | auto | Primary language |
sampleRate | 8000 | 16000 | 24000 | 16000 | Audio sample rate (Hz) |
channels | 1 | 2 | 1 | Audio channels |
noiseSuppress | boolean | true | Enable noise suppression |
sensitivity | "low" | "medium" | "high" | medium | Turn-detection sensitivity |
systemPrompt | string | — | Persona / system instructions |
Pricing
Free
$0
100 min/month
- Full-duplex sessions
- All languages
- Email support
Pro
$0.008
per minute
- Everything in Free
- Unlimited minutes
- Priority support
- 99.9% SLA
Enterprise
Custom
contact us
- Custom rate limits
- Dedicated capacity
- On-prem option
- SLA + support
Browser Integration (WebRTC)
For web applications, stream audio via WebRTC for lowest latency:
javascript
// Browser-side WebRTC integration
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/webm' });
const session = await client.voice.createSession({
model: 'seeduplex-v1',
transport: 'webrtc',
});
mediaRecorder.ondataavailable = (e) => {
session.sendAudio(e.data);
};
session.on('audio', (chunk) => {
// Play audio chunk through Web Audio API
audioContext.decodeAudioData(chunk, (buffer) => {
const source = audioContext.createBufferSource();
source.buffer = buffer;
source.connect(audioContext.destination);
source.start();
});
});
mediaRecorder.start(20); // 20ms chunks for low latencyGet API Access
Seed API access is rolling out in waves. Apply for early access at seed.bytedance.com.
Apply for Early Access