Skip to content
New: the dialpress Node SDK. Route SIP like Express and put an agent on any call.Get started
DialPress
DialPress
Media Streams

The live audio of every call, in your code

Open a call’s audio and get the caller’s voice as it is spoken. Play audio back in real time. Build speech pipelines, bots, and analytics without running a media server.

An AI voice botbot.js
const dialpress = require('dialpress') const bot = dialpress() bot.invite('/ai/:name', async (req, res) => { await res.answer() const media = await res.media({ sampleRate: 16000 }) media.on('audio', (pcm) => stt.write(pcm)) // caller voice llm.on('reply', async (t) => media.play(await tts(t))) vad.on('speech', () => media.clear()) // barge-in res.on('dtmf', (d) => d === '0' && res.handoff('/internal/0', { summary: llm.summary() })) }) bot.connect({ address: 'agi.dialpress.ai', pathPrefixes: ['/ai'] })

At a glance

Two-way

Read the caller’s audio and play yours back on the same stream.

Raw

16-bit PCM frames, ready for speech recognition.

Interruptible

Clear queued audio the moment the caller talks over the bot.

Open

The Node SDK for apps on the gateway, WebSockets for any language.

One call opens the audio

In the dialpress SDK, res.media() returns the call’s audio stream. Feed the caller’s PCM to speech recognition, write your text to speech back, and call clear() for barge-in. Markers tell you when a clip has finished playing.

An AI voice botbot.js
const dialpress = require('dialpress') const bot = dialpress() bot.invite('/ai/:name', async (req, res) => { await res.answer() const media = await res.media({ sampleRate: 16000 }) media.on('audio', (pcm) => stt.write(pcm)) // caller voice llm.on('reply', async (t) => media.play(await tts(t))) vad.on('speech', () => media.clear()) // barge-in res.on('dtmf', (d) => d === '0' && res.handoff('/internal/0', { summary: llm.summary() })) }) bot.connect({ address: 'agi.dialpress.ai', pathPrefixes: ['/ai'] })
DialPress voice waveform on ink

Or stream to any service

WebSocket media streams send a call’s audio to your service. DialPress can also dial out to yours with a signed handshake, so only your stack receives the audio.

What teams build with it

01

Voice bots

Speech recognition, an LLM, and text to speech in a loop, with turn-taking you control.

02

Live transcription

Transcribe calls as they happen and show them to the person on the call.

03

Real-time analytics

Spot keywords, sentiment, or compliance phrases while the call is still live.

04

Recording

Fork calls to a recorder over SIPREC, with pause and resume for sensitive moments.

Common questions

What audio format do I get?

16-bit PCM in both directions.

Which languages can I use?

The SDK is for Node.js and TypeScript. WebSocket streams work from any language.

Do I need my own media server?

No. The gateway anchors media and delivers the stream to your code.

How do I handle interruptions?

Call clear() on the stream. Queued audio stops at once and the caller is heard.

Hear your first call in code.

npm install dialpress and open res.media() on your next call.