Skip to main content
End of Speech (EOS) detection determines when a caller has finished their turn and the assistant should begin responding. It runs downstream of VAD and STT — it receives speech activity signals, interim transcripts, and final transcripts, then decides when to fire the EndOfSpeechPacket that triggers LLM inference.

EOS Interface

Every provider implements the EndOfSpeech interface:
The Analyze method receives multiple packet types:

Factory Function

The factory reads microphone.eos.provider from the assistant’s audio options. If no provider is set, Silence-Based EOS is used as the default.

Provider Identifiers


Model Files

Silence-Based EOS needs no model. Pipecat and LiveKit models are downloaded from Hugging Face during the Docker build and bundled into the runtime image.

Docker

The Dockerfile handles all model downloads automatically:

From Source

When running from source, models must be downloaded manually into the correct directories. The providers resolve paths relative to their Go package directory using runtime.Caller. Pipecat Smart Turn:
LiveKit Turn Detector:
The LiveKit and Pipecat ONNX models may need opset patching for ONNX Runtime compatibility. The Dockerfile handles this automatically with a Python onnx script. If you encounter opset errors during local development, install the onnx Python package and run the patching commands from the Dockerfile.
To override model paths, set environment variables:

CGO Dependencies


Providers

See the EOS concepts guide for detailed parameter tuning guidance and use-case recommendations.