Seeduplex
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-sdk

2. 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

EventPayloadDescription
audioBufferAudio chunk from the model (PCM)
transcript{ text, isFinal }Transcription of user speech
response{ text, isFinal }Model response text
turn_startModel began speaking
turn_endModel finished its turn
interruptionUser interrupted; model yields
errorErrorSession error
closeSession closed

Session Configuration

ParameterTypeDefaultDescription
modelstringseeduplex-v1Model version
mode"full-duplex" | "half-duplex"full-duplexInteraction mode
language"en" | "zh" | "auto"autoPrimary language
sampleRate8000 | 16000 | 2400016000Audio sample rate (Hz)
channels1 | 21Audio channels
noiseSuppressbooleantrueEnable noise suppression
sensitivity"low" | "medium" | "high"mediumTurn-detection sensitivity
systemPromptstringPersona / 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 latency

Get API Access

Seed API access is rolling out in waves. Apply for early access at seed.bytedance.com.

Apply for Early Access