big-controller-60015
07/28/2025, 6:13 AMtall-airline-16756
07/28/2025, 6:13 AMtall-airline-16756
07/28/2025, 6:14 AMfrom livekit.agents.voice import AgentSession
session = AgentSession(
turn_detection="vad", # or custom model
min_endpointing_delay=0.5, # High confidence delay (default: 0.5s)
max_endpointing_delay=6.0 # Low confidence delay (default: 6.0s)
)
Turn Detection Modes:
• "vad" - Uses VAD silence detection (default fallback)
• "stt" - Uses speech-to-text end-of-speech signals
• "realtime_llm" - Uses server-side detection from realtime models
• Custom model - Uses specialized EOU detection models
Custom Turn Detector Implementation:
from livekit.plugins.turn_detector.multilingual import MultilingualModel
from livekit.agents import llm
class CustomTurnDetector:
def __init__(self, userdata=None):
self._model = MultilingualModel()
self.last_eou_probability = None
self.userdata = userdata
async def predict_end_of_turn(self, chat_ctx: llm.ChatContext) -> float:
probability = await self._model.predict_end_of_turn(chat_ctx)
self.last_eou_probability = probability
print(f"EOU Probability: {probability * 100:.3f}%")
return probability
from livekit.agents.voice import Agent
from livekit.plugins import openai, silero, gladia
class SimpleAgent(Agent):
def __init__(self, userdata=None):
self.custom_turn_detector = CustomTurnDetector(userdata)
super().__init__(
instructions="You are a helpful agent.",
stt=gladia.STT(languages=["en", "fr", "de", "pt", "zh", "ja", "ko"]),
llm=openai.LLM(model="gpt-4o-mini"),
tts=openai.TTS(),
vad=silero.VAD.load(),
turn_detection=self.custom_turn_detector
)
Advanced AudioRecognition Configuration:
from livekit.agents.voice.audio_recognition import AudioRecognition
audio_recognition = AudioRecognition(
min_endpointing_delay=0.5, # Minimum delay before responding
max_endpointing_delay=6.0, # Maximum delay for low confidence
turn_detection_mode="vad" # or "stt", "realtime_llm", "manual"
)
These configurations allow you to fine-tune the responsiveness and accuracy of your voice agent's turn-taking behavior based on your specific use case requirements.
Sources: metrics/metrics_stt.py | livekit-plugins/livekit-plugins-turn-detector/livekit/plugins/turn_detector... | How does end-of-utterance detection work in conversations?