Updates per feedback; prewarm_fnc updates
This commit is contained in:
+2
-1
@@ -9,7 +9,8 @@ description = "Simple voice AI assistant built with LiveKit Agents for Python"
|
|||||||
requires-python = ">=3.9"
|
requires-python = ">=3.9"
|
||||||
|
|
||||||
dependencies = [
|
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",
|
"livekit-plugins-noise-cancellation~=0.2",
|
||||||
"python-dotenv",
|
"python-dotenv",
|
||||||
]
|
]
|
||||||
|
|||||||
+11
-26
@@ -7,12 +7,9 @@ from livekit.agents import (
|
|||||||
AgentSession,
|
AgentSession,
|
||||||
JobContext,
|
JobContext,
|
||||||
JobProcess,
|
JobProcess,
|
||||||
MetricsCollectedEvent,
|
|
||||||
RoomInputOptions,
|
|
||||||
WorkerOptions,
|
|
||||||
cli,
|
cli,
|
||||||
inference,
|
inference,
|
||||||
metrics,
|
room_io,
|
||||||
)
|
)
|
||||||
from livekit.plugins import noise_cancellation, silero
|
from livekit.plugins import noise_cancellation, silero
|
||||||
from livekit.plugins.turn_detector.multilingual import MultilingualModel
|
from livekit.plugins.turn_detector.multilingual import MultilingualModel
|
||||||
@@ -49,14 +46,15 @@ class Assistant(Agent):
|
|||||||
# return "sunny with a temperature of 70 degrees."
|
# return "sunny with a temperature of 70 degrees."
|
||||||
|
|
||||||
|
|
||||||
server = AgentServer()
|
|
||||||
|
|
||||||
|
|
||||||
@server.setup()
|
|
||||||
def prewarm(proc: JobProcess):
|
def prewarm(proc: JobProcess):
|
||||||
proc.userdata["vad"] = silero.VAD.load()
|
proc.userdata["vad"] = silero.VAD.load()
|
||||||
|
|
||||||
|
|
||||||
|
server = AgentServer(
|
||||||
|
setup_fnc = prewarm,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@server.rtc_session()
|
@server.rtc_session()
|
||||||
async def my_agent(ctx: JobContext):
|
async def my_agent(ctx: JobContext):
|
||||||
# Logging setup
|
# Logging setup
|
||||||
@@ -97,21 +95,6 @@ async def my_agent(ctx: JobContext):
|
|||||||
# llm=openai.realtime.RealtimeModel(voice="marin")
|
# 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
|
# # Add a virtual avatar to the session, if desired
|
||||||
# # For other providers, see https://docs.livekit.io/agents/models/avatar/
|
# # For other providers, see https://docs.livekit.io/agents/models/avatar/
|
||||||
# avatar = hedra.AvatarSession(
|
# avatar = hedra.AvatarSession(
|
||||||
@@ -124,9 +107,11 @@ async def my_agent(ctx: JobContext):
|
|||||||
await session.start(
|
await session.start(
|
||||||
agent=Assistant(),
|
agent=Assistant(),
|
||||||
room=ctx.room,
|
room=ctx.room,
|
||||||
room_input_options=RoomInputOptions(
|
room_options=room_io.RoomOptions(
|
||||||
# For telephony applications, use `BVCTelephony` for best results
|
audio_input=room_io.AudioInputOptions(
|
||||||
noise_cancellation=noise_cancellation.BVC(),
|
# For telephony applications, use `BVCTelephony` for best results
|
||||||
|
noise_cancellation=noise_cancellation.BVC(),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user