Consistently slow first response

Hey Retell team,

Can you guys take please take a look at this agent agent_a6bf28cddd5a60502fc280fbce. We’re consistently getting a very slow response on the first real LLM-generated agent turn, e.g. see this call call_fa8313aece77de9992a3ced0582:

2026-08-25 14:43:13.383 call_fa8313aece77de9992a3ced0582 info: Latency for response_id: 1 - e2e: 4220 asr: 264 llm: 704 tts: 79

The STT + LLM + STT pipeline seems to have run in ~1 sec but the overall e2e time is ~4.2 sec. This happens 100% of the time for this bot (across a few dozen tests) and regardless of what TTS provider is chosen.

Hello @plamen Thanks for sharing your CallID. Let me check this with the team, and I’ll get back to you with an update.

Hello @plamen from the looks of it, on this agent that residual is driven by the custom STT path (AssemblyAI streaming) + noise-cancellation denoiser + endpointingMs=300. Turn 1 pays the session/warm-up cost once and every later turn drops back to baseline.

Please try the following:

  1. Switch sttMode from custom (AssemblyAI) to the default managed Deepgram STT — kills the custom-provider first-utterance warm-up.
  2. Lower customSttConfig.endpointingMs (300 → 100–150) if you’re willing to trade some transcript accuracy for a faster commit.
  3. Turn off denoisingMode: noise-cancellation if the input is already clean — removes first-frame denoiser cost.

LLM (gpt-4.1 HP cascading, TTFT ~700ms on a 4.3k-token prompt) and TTS (Cartesia sonic-3.5 ~80ms) look good, so nothing to action on them.

Thank You

@Shah-Fazal switching to Deepgram helped but why are we getting this “warm-up” issue with AssemblyAI and not Deepgram? Which model from assemblyAI is used on the backend?

@Shah-Fazal

This seems to only happen when the customer says a specific first sentence E.g. if you answer the name question with “Hi, I’m John” this consistently results in 3-4 seconds first turn, if you just say “John”, it’s consistently ~1sec. It does only happen with AssemblyAI though - do you use AssemblyAI’s turn-taking decisions instead of your turn-taking model or a combination or both? Also you use universal-3.5-pro as the STT model, right?

Here are some examples.
Answer only with the name:

  • call_1e07e71510d55b5e9219421d684 - e2e: 992 asr: 134 llm: 664 tts: 112
  • call_45bfe0610259662363c48cf8117 - e2e: 1091 asr: 155 llm: 602 tts: 86
  • call_e9236ec5ce77cf9c104ff610d57 - e2e: 939 asr: 124 llm: 667 tts: 119

And replying with “Hi, I’m ”:

  • call_4a03b2550c0f757174147bba1ff - e2e: 3364 asr: 260 llm: 556 tts: 79
  • call_4912a9f7146608765c6a2991929 - e2e: 3745 asr: 347 llm: 791 tts: 76
  • call_77716730b199a7a08c4618e16e0 - e2e: 3534 asr: 284 llm: 600 tts: 81

Reproducible 100% of the time, can you guys take a deeper look?

@plamen Escalated with the team

Hello @plamen Team have pushed a fix for this issue, let me know if it’s still happening.

Thank You