@@ -92,9 +92,9 @@ class LLMUserAggregatorParams:
9292 user_mute_strategies: List of user mute strategies.
9393 user_turn_stop_timeout: Time in seconds to wait before considering the
9494 user's turn finished.
95- user_idle_timeout: Optional timeout in seconds for detecting user idle state.
96- If set, the aggregator will emit an `on_user_turn_idle` event when the user
97- has been idle (not speaking) for this duration. Set to None to disable
95+ user_idle_timeout: Timeout in seconds for detecting user idle state.
96+ The aggregator will emit an `on_user_turn_idle` event when the user
97+ has been idle (not speaking) for this duration. Set to 0 to disable
9898 idle detection.
9999 vad_analyzer: Voice Activity Detection analyzer instance.
100100 filter_incomplete_user_turns: Whether to filter out incomplete user turns.
@@ -109,7 +109,7 @@ class LLMUserAggregatorParams:
109109 user_turn_strategies : Optional [UserTurnStrategies ] = None
110110 user_mute_strategies : List [BaseUserMuteStrategy ] = field (default_factory = list )
111111 user_turn_stop_timeout : float = 5.0
112- user_idle_timeout : Optional [ float ] = None
112+ user_idle_timeout : float = 0
113113 vad_analyzer : Optional [VADAnalyzer ] = None
114114 filter_incomplete_user_turns : bool = False
115115 user_turn_completion_config : Optional [UserTurnCompletionConfig ] = None
@@ -404,15 +404,10 @@ def __init__(
404404 "on_user_turn_stop_timeout" , self ._on_user_turn_stop_timeout
405405 )
406406
407- # Optional user idle controller
408- self ._user_idle_controller : Optional [UserIdleController ] = None
409- if self ._params .user_idle_timeout :
410- self ._user_idle_controller = UserIdleController (
411- user_idle_timeout = self ._params .user_idle_timeout
412- )
413- self ._user_idle_controller .add_event_handler (
414- "on_user_turn_idle" , self ._on_user_turn_idle
415- )
407+ self ._user_idle_controller = UserIdleController (
408+ user_idle_timeout = self ._params .user_idle_timeout
409+ )
410+ self ._user_idle_controller .add_event_handler ("on_user_turn_idle" , self ._on_user_turn_idle )
416411
417412 # VAD controller
418413 self ._vad_controller : Optional [VADController ] = None
@@ -489,8 +484,7 @@ async def process_frame(self, frame: Frame, direction: FrameDirection):
489484
490485 await self ._user_turn_controller .process_frame (frame )
491486
492- if self ._user_idle_controller :
493- await self ._user_idle_controller .process_frame (frame )
487+ await self ._user_idle_controller .process_frame (frame )
494488
495489 async def push_aggregation (self ) -> str :
496490 """Push the current aggregation."""
@@ -507,8 +501,7 @@ async def push_aggregation(self) -> str:
507501 async def _start (self , frame : StartFrame ):
508502 await self ._user_turn_controller .setup (self .task_manager )
509503
510- if self ._user_idle_controller :
511- await self ._user_idle_controller .setup (self .task_manager )
504+ await self ._user_idle_controller .setup (self .task_manager )
512505
513506 for s in self ._params .user_mute_strategies :
514507 await s .setup (self .task_manager )
@@ -541,9 +534,7 @@ async def _cancel(self, frame: CancelFrame):
541534
542535 async def _cleanup (self ):
543536 await self ._user_turn_controller .cleanup ()
544-
545- if self ._user_idle_controller :
546- await self ._user_idle_controller .cleanup ()
537+ await self ._user_idle_controller .cleanup ()
547538
548539 for s in self ._params .user_mute_strategies :
549540 await s .cleanup ()
@@ -689,8 +680,7 @@ async def _on_user_turn_started(
689680 if params .enable_user_speaking_frames :
690681 await self .broadcast_frame (UserStartedSpeakingFrame )
691682
692- if self ._user_idle_controller :
693- await self ._user_idle_controller .process_frame (UserStartedSpeakingFrame ())
683+ await self ._user_idle_controller .process_frame (UserStartedSpeakingFrame ())
694684
695685 if params .enable_interruptions and self ._allow_interruptions :
696686 await self .push_interruption_task_frame_and_wait ()
@@ -708,8 +698,7 @@ async def _on_user_turn_stopped(
708698 if params .enable_user_speaking_frames :
709699 await self .broadcast_frame (UserStoppedSpeakingFrame )
710700
711- if self ._user_idle_controller :
712- await self ._user_idle_controller .process_frame (UserStoppedSpeakingFrame ())
701+ await self ._user_idle_controller .process_frame (UserStoppedSpeakingFrame ())
713702
714703 await self ._maybe_emit_user_turn_stopped (strategy )
715704
0 commit comments