Skip to main content
The LiveKit Turn Detector uses a language model to predict turn completion from transcribed text combined with conversation history. It understands that incomplete sentences, addresses, and phone numbers are not finished turns — even when the caller pauses. Provider identifier: livekit_eos

Source Location


How It Works

  1. Final SpeechToTextPacket transcripts are accumulated into the current user turn
  2. The model builds a chat template from conversation history (user + assistant turns) + current text
  3. The tokenizer encodes the text and the ONNX model predicts an end-of-utterance probability
  4. If probability >= threshold → timer set to quick_timeout
  5. If probability < threshold → timer set to silence_timeout
  6. LLMResponseDonePacket events record assistant turns in conversation history for context-aware predictions
  7. Interim transcripts reset the timer to fallback_timeout

Parameters

The threshold range (0.001–0.1) is very different from Pipecat’s (0.1–0.9). These are different models with different probability distributions. Do not copy threshold values between providers.

Model Variants


Model Setup

Docker

All models are downloaded from Hugging Face and patched during the Docker build. No manual action required.

From Source

Download the models manually:
If you encounter ONNX opset errors, patch the models:
To override paths:
Requires ONNX Runtime (libonnxruntime) — same dependency as Silero/FireRed VAD.