calm-optician-60209
04/28/2026, 8:44 AMtall-airline-16756
04/28/2026, 8:44 AMtall-airline-16756
04/28/2026, 8:44 AMcalm-optician-60209
04/28/2026, 8:46 AMtall-airline-16756
04/28/2026, 8:46 AMcalm-optician-60209
04/28/2026, 9:10 AMtall-airline-16756
04/28/2026, 9:11 AMllm_node_ttft (time-to-first-token) is low (hundreds of ms) when streaming is active.
• Config check: you’re calling a streaming API or using a driver that supports streaming responses (and not waiting for a full response before forwarding to TTS).
TTS
• Indicator: audio playback begins before the full response text is available (audio arrives in chunks).
• Metric: time-to-first-audio (TTFA) is ~100–300 ms for streaming TTS.
• Config check: your TTS provider/API supports streaming synthesis and you’re using the streaming method (e.g., tts.stream() / chunked audio output), not batch synthesis to a full file.
Two quick diagnostics to run now
1. Trigger a short test turn and watch behavior:
◦ If you see interim STT events, then incremental LLM tokens, and audio starts before the final text, your pipeline is streaming end-to-end.
1. Inspect metrics/logs:
◦ Check llm_node_ttft, `tts_node_ttfb`/TTFA, and STT partial-event timestamps. Low TTFT/TTFA and early STT partials indicate streaming.
If you tell me which providers/models you’re using (Inference vs Plugins, and specific STT/LLM/TTS models), I’ll give exact config entries and the best commands/log locations to confirm streaming.
Sources: Sequential Pipeline Architecture for Voice Agents | LiveKit | AssemblyAI STT | LiveKit Documentation | Build a multilingual voice agent that automatically switches languages | Li... | Build Your First AI Voice Agent in Python: Complete Tutorial | LiveKit | Text-to-speech (TTS) models overview | LiveKit Documentation, with interactive elementscalm-optician-60209
04/28/2026, 10:33 AMtall-airline-16756
04/28/2026, 10:34 AMllm_node_ttft — a low TTFT (few hundred ms) indicates streaming.
• If your plugin waits for the full text response before emitting to TTS, the LLM is not streaming.
TTS — ElevenLabs
• What to watch: audio playback should begin before the full response text is received (audio arrives in chunks).
• Config: use ElevenLabs streaming/real-time synthesis API (not full-file synthesis endpoint).
• Metrics: time-to-first-audio (TTFA) around 100–300 ms suggests streaming.
• If ElevenLabs only returns a completed audio file after the text is done, it’s batch mode.
End-to-end check
1. Run a short test turn and observe sequence:
◦ Interim STT events → incremental LLM tokens → audio playback begins early.
◦ If this happens, your pipeline is streaming end-to-end.
1. Inspect timestamps/metrics:
◦ stt partial timestamp, llm_node_ttft, and `tts_node_ttfb`/TTFA. Low values and overlap confirm streaming.
1. If any stage blocks, identify which one by seeing where overlap stops:
◦ No STT partials → STT not streaming.
◦ LLM TTFT high or waits for full text → LLM not streaming.
◦ Audio only after full text → TTS not streaming.
If you want, share:
• the Deepgram client method you’re calling (WebSocket vs REST) and
• whether you’re calling ElevenLabs’ real-time/streaming API or the standard file synth endpoint.
I’ll give the exact config snippets and log locations to switch to streaming.
, with interactive elements