alert-cartoon-13265
03/12/2026, 12:24 PMtall-airline-16756
03/12/2026, 12:24 PMtall-airline-16756
03/12/2026, 12:26 PMactivation_threshold to increase sensitivity.
• Reduce aggressive noise suppression: If users have tools like Krisp or other noise cancellation, try disabling it briefly to see if VAD detection improves.
• Allow a small user-side delay: If your flow expects immediate speech after connect, consider prompting users or adding a small preparation period so VAD has time to detect the first words.
• Monitor and ignore when expected: If the warning appears upon initial connection or long pauses, it’s safe to ignore; treat it as a normal informational message.
If you’d like, I can help further with one of these:
• Suggest specific VAD config values for your setup (share your current activation_threshold or vad_speech_pad_ms values).
• Show example code for adjusting Silero VAD sensitivity in your Python server.
• Help debug a specific user scenario (share a short timeline: when users join, when the warning appears, whether they use noise suppression, and sample audio levels).
Which of those would be most helpful?
Sources: Baseten STT plugin guide | LiveKit Documentation | Silero VAD plugin | LiveKit Documentation | Understanding "silence detected on local audio track" warning | Troubleshooting STT not picking up utterances | LiveKitalert-cartoon-13265
03/12/2026, 12:27 PMtall-airline-16756
03/12/2026, 12:28 PMsilero.VAD.load(...) or any vad= parameter when creating the AgentSession.
1. Disable audio input in the room options when starting the session:
from livekit.agents import AgentSession
from livekit.agents.voice import room_io
session = AgentSession(
stt=None, # or your chosen text-only config
llm=..., # your LLM plugin
tts=None, # optional
# no vad parameter here
)
await session.start(
agent=MyAgent(),
room=ctx.room,
room_options=room_io.RoomOptions(
audio_input=False, # disable expecting client audio
audio_output=False # set True only if you need TTS audio
)
)
Key points
• VAD only runs if you include a VAD instance in the session. Not passing one disables it.
• Setting audio_input=False ensures the agent does not expect or process incoming audio.
• With those two changes, you won’t see the “input speech hasn’t started yet…” warning since no VAD will be active.
If you want, tell me:
• Which version of the agents SDK you’re using, or
• Paste the snippet where you create the AgentSession and call start, and I’ll point out exactly what to change. Sources: Turns overview | LiveKit Documentation | How to build an agent with speech-to-text input and text-only output | Live...alert-cartoon-13265
03/12/2026, 12:34 PMtall-airline-16756
03/12/2026, 12:35 PMload_threshold (default 0.7).
• When load > threshold the worker is marked unavailable and stops taking new jobs; when load drops below it becomes available again.
• Your logs show the worker repeatedly crossing the threshold, so job assignment can be interrupted and latency/failed assignments can occur.
Why this is happening on your instance
• A 2 vCPU / 2 GB RAM instance is underpowered for typical voice/AI workloads the agent may run. LiveKit recommends larger instances (starting around 4 vCPU and more RAM) for stable performance.
• Burstable instance types (t3/t4) can also throttle CPU when credits deplete, causing spikes or inconsistent CPU availability.
Recommended actions (pick what fits your situation)
• Short-term: increase the threshold (quick tweak)
a. Increase load_threshold so the worker tolerates higher CPU before marking unavailable.
from livekit.agents import AgentServer
server = AgentServer(load_threshold=0.9)
1. Note: This reduces churn but doesn’t add real capacity — you may still see slowdowns under sustained load.
• Better: scale up the instance (recommended)
◦ Move to a non-burstable instance with more vCPUs and RAM (e.g., m5.large or c5.large, 4+ vCPU, 8 GB RAM recommended).
◦ This reduces CPU spikes and prevents throttling that causes the availability flips.
• Alternative: change how load is measured
◦ Use a custom load_fnc that measures concurrency (active jobs) rather than CPU, if that better matches your capacity model:
def compute_load(server: AgentServer) -> float:
return min(len(server.active_jobs) / 10.0, 1.0) # scale to [0,1]
server.load_fnc = compute_load
• This avoids short CPU bursts marking you unavailable but requires you to pick sensible scaling factors.
• Long-term / robust solution: horizontal scaling
◦ Run multiple agent workers under the same agent_name so jobs distribute across instances.
◦ This gives resilience: when one worker is busy the scheduler can route work to others.
• Operational tuning (additional)
◦ Avoid burstable instance types (t3/t4) for steady loads; prefer consistent CPU types.
◦ Monitor CPU and memory with a metrics tool to see whether spikes are CPU or memory bound.
◦ If you run heavy plugins (STT, TTS, or model inference), consider separating those onto dedicated workers or using larger instances for those tasks.
Quick checklist to act now
• If you need an immediate quick fix: raise load_threshold to 0.9.
• For stability and production: provision a larger non-burstable instance (≥4 vCPU, more RAM).
• For capacity/HA: add more workers and/or use a custom load function.
If you want, I can:
• Suggest a target AWS instance type based on expected concurrent sessions (tell me how many simultaneous sessions you expect).
• Show exactly where to change load_threshold or add a load_fnc in your current server code (paste your server startup snippet).
• Help you plan a multi-worker deployment for redundancy. Which would you prefer? Sources: Server options | LiveKit Documentation | Self-hosted deployments | LiveKit Documentation | Troubleshooting Latency and Timeout Errors with Turn Detection on AWS | Agents Framework | livekit/livekit_composite | DeepWikialert-cartoon-13265
03/12/2026, 12:38 PMtall-airline-16756
03/12/2026, 12:38 PMload_threshold (e.g., 0.85–0.9) to reduce churn if spikes are brief and you can tolerate higher utilization.
◦ Use a custom load_fnc based on concurrent TTS jobs instead of CPU, so short CPU bursts don’t mark the worker unavailable.
• Upgrade when needed:
◦ If your TTS is a neural model running locally or you expect multiple concurrent syntheses, move to a larger instance (4 vCPU, more RAM). This gives more consistent performance and avoids throttling.
◦ Avoid burstable instance families (t3/t4) for sustained or bursty TTS loads.
Suggested next steps
1. Tell me the TTS engine you’re using (cloud service vs local model) and the expected concurrent TTS requests.
2. I can recommend:
◦ Whether your current instance is likely sufficient,
◦ Specific load_threshold or load_fnc settings, or
◦ A target AWS instance type if you want to scale.
Which detail should we start with — your TTS engine or expected concurrency?