noise_cancellation
cleans the audio coming in from the caller. background_audio mixes sound
into what the agent sends out. Both are voice and video only — a text agent
has neither, and switching a config to text clears them.
Noise cancellation
Speech enhancement applied at the front of the input chain, before anything else sees the caller’s audio. That means the speech-to-text model, the voice detector that ends turns, and the call recording all get the cleaned signal — so the recording is what the agent actually heard.boolean
default:"false"
Off unless you ask for it. Enhancement is lossy, and the strength that rescues
a call from a noisy street can hurt one from a quiet room, so it is never
turned on for an existing agent by anything but an explicit edit.
string
default:"aicoustics"
A
noise_cancellation provider from GET /v1/catalog. aicoustics is the
only one today.string
default:"quail_vf_s"
One of the three models below. An unknown pair is refused:
unknown noise cancellation model 'aicoustics/quail_xl' - pick from: …number
default:"0.8"
0.0 – 1.0. How hard to suppress everything that is not the caller.
The models
quail_vf_s is the default. Reach for quail_l when more than one person is
meant to be heard, and for quail_vf_l only if quail_vf_s leaves noise you
cannot live with.
If the licence key is rejected, or the audio stream is one the enhancer cannot
handle, the enhancer disables itself and the call runs on the raw audio rather
than failing. Nothing else would say so, so the call’s trace carries a
noise_cancellation.failed event — check there when an agent that should be
hearing clean audio is not. See
debugging agents.
Background audio
Ambient and thinking sounds mixed into the agent’s own output track, so a caller hears a room rather than a vacuum.boolean
default:"false"
Nothing plays unless this is on.
string | null
default:"office"
A continuous bed under the whole call:
office, city, forest, crowd or
hold_music. null for none.number
default:"0.4"
0.0 – 1.0, against the clip’s own level.
string | null
default:"keyboard"
Played while the agent is working out its reply:
keyboard or keyboard2.
null for none.number
default:"0.6"
0.0 – 1.0.
Both set to
null and nothing starts at all, even with enabled: true.
Every transfer stops the ambient bed and plays hold music instead. When the
agent transfers a caller to a person, the caller is parked
while the other phone rings: the bed stops, hold music takes over, and the
caller’s audio is switched off in both directions until the transfer lands or
they come back to the agent. Silence on a thirty-second hold reads as a
dropped call, and none of the other clips mean “wait”.So
ambient: "hold_music" does not choose the hold sound — that is fixed. It
only sets how loud the hold music is: an agent whose ambient bed already is
hold music has settled that question with its callers, so its
ambient_volume carries. Every other agent gets 0.8.If the transfer fails and the caller comes back, the ambient bed starts again.Next
Speech and turn detection
What the cleaned audio feeds, and what ends a caller’s turn.
Transfer
Handing a caller to a person, and what they hear while they wait.
Provider keys
Adding the ai-coustics key noise cancellation needs.