No audio at all
The call connects, then silence
Work outward from the runtime.The pipeline fails to build
The runtime builds speech-to-text, text-to-speech, and the language model before any audio flows. Any one of them failing ends the call immediately. Common causes:- Missing credentials — the organisation has no
ProviderAuthfor a provider the agent references. - An unregistered provider in the agent’s
config.models. - A missing Pipecat extra — vendor packages are imported inside their creator functions, so a missing dependency surfaces here, not at startup.
The agent never greets
The greeting comes from the agent’s prompts. An empty greeting means the agent waits for the caller to speak first — which sounds identical to a broken call.One-way audio
For a browser session, also check that the page has microphone permission and is served over HTTPS or
localhost — browsers block getUserMedia elsewhere.
Distorted, robotic, or chipmunk audio
Almost always a sample-rate mismatch. VoicEra uses two different rates on purpose:
Audio played at the wrong rate sounds too fast and high (played faster than recorded) or too slow and deep. If you changed either value, change it back —
8000 is what telephony carriers deliver, and raising it does not add detail that was never there.
Self-hosted TTS adds a second possibility: the model returned a format the runtime did not expect. See TTS models.
Interruption problems
The agent will not stop talking
Barge-in is gated byinterruption_min_words — the caller must produce at least that many words before the agent yields. Set too high, the agent talks over people; set to 1, background noise interrupts it.
The agent interrupts itself, or cuts off its greeting
ignore_user_speech_before_greeting exists for exactly this: on noisy lines, the greeting’s own audio or line noise can register as speech. Set it true to protect the greeting.
See Agent configuration for the full behaviour table.
Hold messages never play
hold_messages play when a turn takes longer than hold_message_timeout_seconds. If they never fire, either the list is empty, the timeout is longer than your slowest turn, or nothing is actually slow — which is the good outcome.
The agent hangs up unexpectedly
call_timeout_seconds is accepted and stored by the API but no code in the runtime reads it. Calls are not capped by it. Use user_silence_hangup_seconds or automatic_call_ending instead.Latency
Expected budget is sub-2-second latency per turn. When it is worse:No transcript or recording
Browser sessions are logged too. Check the runtime log forRegistered web call call_id=; if it is absent, the API call to POST /api/v1/calls/web failed and the session ran without a call log.
For a telephony call, artifacts are written at call end. If they are missing: