An open source AI voice agent that answers real phone calls on Asterisk. Audio is bridged in over AudioSocket, or over chan_websocket on Asterisk 20.18 and 22.8 or newer, so nothing has to be recompiled.
The loop is what you would expect: voice activity detection on every 20 ms frame, speech to text through Whisper or ElevenLabs Scribe, a streaming turn with a language model that can call tools on your own webhook, and speech back out through Piper.
The hard parts in telephony are where the work went. Audio is written one 320 byte frame every 20 ms against a deadline that re-clamps when synthesis falls behind, because sending a whole sentence at once means the far end keeps a few frames and discards the rest. Barge-in drops queued audio, so the agent stops when the caller starts rather than talking over them.
Piper synthesis runs locally, so call audio never has to leave your infrastructure. MIT licensed, with a Docker image and a PyPI package.
Features
- Correct 20 ms frame pacing and barge-in that drops queued audio