Updates per feedback; prewarm_fnc updates

This commit is contained in:
Kat Ahn
2025-11-16 20:59:27 -08:00
parent e397f1d05a
commit 56b28e369c
2 changed files with 13 additions and 27 deletions
+2 -1
View File
@@ -9,7 +9,8 @@ description = "Simple voice AI assistant built with LiveKit Agents for Python"
requires-python = ">=3.9"
dependencies = [
"livekit-agents[silero,turn-detector]~=1.3.0rc1",
"livekit-agents[turn-detector]~=1.3.0rc2",
"livekit-plugins-silero~=1.3.0rc1",
"livekit-plugins-noise-cancellation~=0.2",
"python-dotenv",
]
+11 -26
View File
@@ -7,12 +7,9 @@ from livekit.agents import (
AgentSession,
JobContext,
JobProcess,
MetricsCollectedEvent,
RoomInputOptions,
WorkerOptions,
cli,
inference,
metrics,
room_io,
)
from livekit.plugins import noise_cancellation, silero
from livekit.plugins.turn_detector.multilingual import MultilingualModel
@@ -49,14 +46,15 @@ class Assistant(Agent):
# return "sunny with a temperature of 70 degrees."
server = AgentServer()
@server.setup()
def prewarm(proc: JobProcess):
proc.userdata["vad"] = silero.VAD.load()
server = AgentServer(
setup_fnc = prewarm,
)
@server.rtc_session()
async def my_agent(ctx: JobContext):
# Logging setup
@@ -97,21 +95,6 @@ async def my_agent(ctx: JobContext):
# llm=openai.realtime.RealtimeModel(voice="marin")
# )
# Metrics collection, to measure pipeline performance
# For more information, see https://docs.livekit.io/agents/build/metrics/
usage_collector = metrics.UsageCollector()
@session.on("metrics_collected")
def _on_metrics_collected(ev: MetricsCollectedEvent):
metrics.log_metrics(ev.metrics)
usage_collector.collect(ev.metrics)
async def log_usage():
summary = usage_collector.get_summary()
logger.info(f"Usage: {summary}")
ctx.add_shutdown_callback(log_usage)
# # Add a virtual avatar to the session, if desired
# # For other providers, see https://docs.livekit.io/agents/models/avatar/
# avatar = hedra.AvatarSession(
@@ -124,9 +107,11 @@ async def my_agent(ctx: JobContext):
await session.start(
agent=Assistant(),
room=ctx.room,
room_input_options=RoomInputOptions(
# For telephony applications, use `BVCTelephony` for best results
noise_cancellation=noise_cancellation.BVC(),
room_options=room_io.RoomOptions(
audio_input=room_io.AudioInputOptions(
# For telephony applications, use `BVCTelephony` for best results
noise_cancellation=noise_cancellation.BVC(),
),
),
)