Where the 1.8 seconds go
900 of the 1,800 ms are the LLM, and it is idle while you talk.
A turn runs four stages end to end and nothing overlaps. Speech-to-text emits a final transcript only after a short window of trailing audio, and the LLM subscribes to that transcript, so it does no work at all while you are still speaking.
turn_pipeline.py:41-88 · stt_stream.py:12-30
Where do you think most of it goes?
Text-to-speech takes 400 ms and starts the moment the first token lands. The LLM has not begun at all while you are talking, and that is where the slack is.
turn_pipeline.py:41-88 · stt_stream.py:12-30
leaves out: network time, barge-in
The LLM waits because the request is built from the final transcript. A partial transcript is available about 600 ms earlier and is good enough to start on, as long as an end-of-turn guard holds the answer until the sentence looks finished.
The LLM idles while you finish your sentence. Start it on the partial transcript and you save about 600 milliseconds.
turn_pipeline.py:41-88 · stt_stream.py:12-30 · end_of_turn.py:1-44