Turn-taking is the agent deciding when to speak and when to stop. Reply too early and it cuts callers off mid-thought; reply too late and the call feels slow. Tried combines a voice activity detector, a turn detector model and two settings you control: Responsiveness and Interruption Sensitivity, both under Speech Settings.
How the end of a turn is decided#
- A voice activity detector notices that the caller stopped speaking.
- The transcriber finalises the words (25 ms after silence in speed mode, 100 ms in accuracy mode).
- A turn detector model reads the transcript and judges whether the sentence is complete. "I'd like to book for" looks unfinished; "I'd like to book for Tuesday" looks finished.
- The agent waits between a minimum and a maximum delay set by Responsiveness. A finished sentence ends the turn near the minimum. An unfinished one extends the wait up to the maximum, so a caller who pauses to think is not interrupted.
The turn detector is multilingual by default. The platform operator can switch it to an English-only model, an audio-based model, or off (silence timing only) with TRIED_TURN_DETECTOR.
Responsiveness#
Responsiveness (responsiveness, 0 to 1, default 1) sets how quickly the agent replies after the caller stops. The slider runs from Slower to Faster.
responsiveness |
Minimum wait | Maximum wait |
|---|---|---|
| 1 (default) | 0.3 s | 2.0 s |
| 0.75 | 0.6 s | 2.9 s |
| 0.5 | 0.9 s | 3.75 s |
| 0.25 | 1.2 s | 4.6 s |
| 0 | 1.5 s | 5.5 s |
The formula is minimum 0.3 + (1 - r) × 1.2 seconds and maximum 2.0 + (1 - r) × 3.5 seconds.
Below 1, a turtle icon appears on the slider and the Latency estimate in the header gains a Response wait time row.
Lower it when callers give long answers with pauses: reading out a card number, describing a problem, older callers. Keep it at 1 for quick question-and-answer calls.
Dynamic responsiveness#
Dynamic responsiveness (enable_dynamic_responsiveness) adapts the wait to each caller during the call:
- When the caller starts talking again within 1.5 seconds after the agent decided their turn was over, the agent treats it as a pause it misjudged and lowers responsiveness by 0.15, so it waits longer next time. The total drop is capped at 0.6.
- Each turn that ends cleanly gives back 0.03, so a caller who speaks in complete sentences returns to your setting.
Use it when callers vary a lot, for example a general inbound line.
Interruption Sensitivity#
Interruption Sensitivity (interruption_sensitivity, 0 to 1, default 0.9) sets how easily the caller can talk over the agent. The slider runs from Low to High.
| Sensitivity | Speech needed to interrupt | Words needed |
|---|---|---|
| 1 | 0.2 s | none |
| 0.9 (default) | 0.33 s | none |
| 0.5 | 0.85 s | 1 |
| 0.2 | 1.24 s | 2 |
| 0.1 | 1.37 s | 3 |
| 0 | Interruptions off |
The duration is 0.2 + (1 - s) × 1.3 seconds. Words needed is 0 at 0.8 and above, 1 from 0.5, 2 from 0.2, and 3 below that.
When the agent stops for something that turns out to be noise (no real speech follows within 1.5 seconds), it resumes what it was saying.
Lower it for noisy environments or when callers say "mm-hmm" while the agent speaks. Set it to 0 for messages that must be heard in full, such as a legal disclosure, ideally only on that flow node.
Keypad interruptions#
A key press can also interrupt the agent when Keypad input interrupts the agent is on. See DTMF.
Latency techniques#
These run on every call and need no settings:
| Technique | Effect |
|---|---|
| Preemptive generation | The LLM starts on the interim transcript before the turn is confirmed, hiding part of the wait. Speech audio is only synthesised once the turn is confirmed, so no audio is wasted, and functions only run on the confirmed turn. |
| Fast finalisation | Speed mode finalises the transcript 25 ms after the caller stops. |
| Warm connections | STT, LLM and TTS connections open while the phone rings, and a warm-up request fills the LLM prompt cache. |
| Streaming speech | The voice starts on the first clause of the reply. |
For more speed, see Fast tier and Ultrafast on LLM options and the voice model trade-offs on Voice.
Fields#
| Field | Type | Default |
|---|---|---|
responsiveness |
number 0 to 1 | 1 |
enable_dynamic_responsiveness |
boolean | not set (off) |
interruption_sensitivity |
number 0 to 1 | 0.9 |
allow_dtmf_interruption |
boolean | not set (off) |
curl -X PATCH https://api.tried.com.au/update-agent/agent_3f1c9a7b2d4e6f8091a2b3c4 \
-H "Authorization: Bearer $TRIED_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "responsiveness": 0.8, "enable_dynamic_responsiveness": true, "interruption_sensitivity": 0.7 }'Change them during a call#
- Conversation flows: nodes can override
responsivenessandinterruption_sensitivitywhile active. See Conversation flow. - Custom LLM: your server can send an
update_agentmessage withresponsiveness,interruption_sensitivity,reminder_trigger_msandreminder_max_count. See Custom LLM.
Measure it#
Each call stores per-turn latency percentiles in latency.e2e, latency.asr, latency.llm and latency.tts (p50, p90, p95, p99, min, max). Compare them before and after a change in Call History or Analytics.