
PCM16 24kHz · 100ms chunks
response.output_audio.delta · streaming
const ws = new WebSocket(
'wss://api.inworld.ai/api/v1/realtime/session?key=' + sessionId,
['realtime']
);
ws.on('message', (raw) => {
const event = JSON.parse(raw.toString());
if (event.type === 'session.created') {
ws.send(JSON.stringify({
type: 'session.update',
session: {
type: 'realtime',
model: 'anthropic/claude-sonnet-4-6',
output_modalities: ['audio', 'text'],
audio: {
input: {
transcription: { model: 'inworld/inworld-stt-1' },
turn_detection: { type: 'semantic_vad', eagerness: 'medium' },
},
output: { model: 'inworld-tts-1.5-max', voice: 'Clive' },
},
},
}));
}
if (event.type === 'response.output_audio.delta') {
audioQueue.push(base64ToPcm16(event.delta));
}
});
mic.on('data', (chunk) => {
ws.send(JSON.stringify({
type: 'input_audio_buffer.append',
audio: chunk.toString('base64'),
}));
});