Interruptions and the evaluator
Barge-ins, the two ways the evaluator can speak, its models and when it hangs up.
Real callers do not wait politely for every sentence to finish. This page explains how Duet's caller can interrupt your agent, the two ways it can speak, and how a call comes to an end.
Interruptions (barge-in)
A barge-in is when someone starts talking while the other side is still speaking. Duet can make the caller cut your agent off mid-reply, exactly like a person would, to check that the agent stops, listens, and does not pretend the caller heard the part that was never played.
- Heard by the caller
- Generated but never heard (struck through)
Setting it up
- Open the scenario and go to section 6 · Interruptions.By default the caller never interrupts the agent.
- Choose Add interruption.Pick which agent reply to cut (replies count from 1; if the agent greets first, the greeting is reply 1) and after how many seconds of it (from 0.3 to 60).
- Add more if you like.Up to 10 interruptions per scenario, one per agent reply.
What you see afterwards
- In the transcript, an interrupted reply shows the part the caller heard and the part that was generated but never played. The heard part is an estimate, based on how much of the audio played, so it can be off by a word or so around the cut.
- The caller only reacts to what it heard, like a person would.
- Duet records whether your agent's server confirmed the cut (it trimmed or deleted the unheard part of its reply). The confirmation can arrive a little later in the call.
- The live view and report also mark the opposite case: the agent starting to talk while the caller is mid-sentence.
Evaluator modes
The evaluator is the simulated caller. In section 7 · Evaluator of a scenario you choose how it hears your agent and speaks back.
| Pipeline (STT → LLM → TTS) | Speech-to-speech (realtime) | |
|---|---|---|
| How it works | A chat model decides what the caller says; a text-to-speech voice says it. | One speech model hears the agent's audio and answers directly by voice. |
| Feels | Reliable and predictable. | Faster and more natural. |
| Cost | Lower: text-to-speech is the cheapest way to give the caller a voice. | Higher: the speech model is billed for the audio it hears and the audio it speaks. |
| Needs | A voice connection, and a chat model (the voice connection, or a separate evaluator model connection). | An OpenAI connection, or Azure OpenAI with a realtime deployment. |
Pipeline is the default and a good choice for most scenarios.
Realtime models
| Model | Trade-off |
|---|---|
gpt-realtime-2.1-mini | The default. Cheaper, but in tests it sometimes slipped out of the caller role. |
gpt-realtime-2.1 | Keeps the caller role reliably; about 3 times the audio cost. |
With an Azure OpenAI connection, the realtime model you pick needs its own deployment on that connection, or those scenarios fail.
Voices
The caller uses the voice of its voice connection, unless the scenario sets a voice override. In speech-to-speech mode the voice must be one of: alloy, ash, ballad, coral, echo, sage, shimmer, verse, marin or cedar. The persona's locale (like en-US or es-MX) sets the language the caller speaks.
When the call ends
Section 5 · When the call ends of the scenario sets the limits. Whatever happens, the call stops at the maximum duration.
| Hang up when | The caller hangs up… |
|---|---|
| Goal met or goodbye said | As soon as it reached its goal, or when someone says goodbye. The default. |
| Goodbye said | Only after a goodbye, even if the goal was reached earlier. |
| Max duration reached | Never on its own: the call runs until the time limit. |
- Max duration: from 30 seconds to 30 minutes; 6 minutes by default.
- Max silence: from 5 to 120 seconds without anyone speaking; 15 by default.
- Your agent can also end the call by closing the session.