The three components
Every agent carries all three components, and you select each one separately on the Configure tab. Which of them run depends on how the customer reached the agent.
| Component | What it does | When it runs |
|---|---|---|
| Transcriber | Turns what the caller said into text. | Voice turns only |
| Model | Reads that text with your knowledge and your tools, and writes the reply. | Every turn |
| Voice | Speaks the reply back. | Voice turns only |
A text-only agent never reaches the transcriber or the voice, but Duvi keeps both saved on the agent. Switching it to voice later is a change of chat mode, not a reconfiguration.
Latency estimate
Studio adds the published latency of the three components you selected and shows the total above them. Treat the total as a floor. It counts the components and nothing else.
| Counted | Not counted |
|---|---|
| Transcriber, model and voice, as published by each provider. | Network time to and from the customer, orchestration, retrieval from knowledge, and any tool the model calls. |
A tool call is usually the largest single omission, because the agent is waiting on your API rather than on a model. If an answer feels slow and the estimate says otherwise, check what the agent is calling first.
Latency targets
Latency costs you where silence is expensive. On a phone call, every moment before the agent speaks is dead air the caller is sitting in. In a chat window nobody is watching a clock.
| Estimated total | On a call | In chat |
|---|---|---|
| Under 800 ms | Sounds like a person drawing breath. Nobody notices it. | Instant. |
| 800 ms to 1.5 s | A natural pause. Reads as the agent thinking, not stalling. | Instant. |
| 1.5 s to 3 s | The caller starts wondering whether it heard them. Some repeat themselves, which costs another turn. | Still comfortable. |
| Over 3 s | The caller talks over the agent, or hangs up. | Noticeable, rarely fatal. |
Aim under 1.5 seconds on any agent that takes calls, and leave room under that target. The estimate is a floor: network time and tool calls land on top of it, and a tool waiting on your API can add a second by itself.
In text you can spend that budget instead of protecting it. Two seconds in a chat window buys a stronger model at no cost to the customer.
Choose a model and a voice
Models carry an intelligence tier alongside their latency. The tier is a coarse ranking for picking between options, not a benchmark score.
| Tier | Use it when |
|---|---|
| Basic, Capable | Answers come from knowledge, the phrasing is simple, and the call needs to feel immediate. |
| Strong | Most agents. Handles tool use and multi-step questions without a noticeable pause. |
| Advanced, Frontier | Reasoning over long context, or text conversations where a pause costs nothing. |
Read the tier against the latency next to it. On a phone call, a Frontier model that takes two seconds to begin speaking sounds worse than a Capable one that starts in three hundred milliseconds, because the caller hears the silence. In text the same pause is invisible. The model you choose also sets the rate you pay. See Credits.
Voices list their accent and gender, and most carry a sample you can play before choosing. An agent that will take calls needs a voice: with a model but no voice, it answers and says nothing.
Chat mode
Chat mode decides which controls the website widget shows. It does not change what the agent knows or which tools it can call.
| Mode | What the widget shows |
|---|---|
| Text only | A message box. |
| Voice only | A call button. |
| Text and voice | A message box with a microphone. |
Chat mode applies to the website widget only. A connected phone number always arrives as voice and a WhatsApp number always arrives as text, whatever the mode says, so an agent on those channels needs the matching components configured.