From ba86fc2f08d5d9d1eb02521905af7b6c31aae919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Tue, 30 Dec 2025 14:27:23 -0800 Subject: [PATCH] LLMUserAggregator: use queue_task_frame() to push user speaking frames --- .../processors/aggregators/llm_response_universal.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/pipecat/processors/aggregators/llm_response_universal.py b/src/pipecat/processors/aggregators/llm_response_universal.py index 339b52553..6a726875d 100644 --- a/src/pipecat/processors/aggregators/llm_response_universal.py +++ b/src/pipecat/processors/aggregators/llm_response_universal.py @@ -561,12 +561,10 @@ class LLMUserAggregator(LLMContextAggregator): await s.reset() if params.enable_user_speaking_frames: - # TODO(aleix): This frame should really come from the top of the pipeline. - await self.broadcast_frame(UserStartedSpeakingFrame) + await self.queue_task_frame(UserStartedSpeakingFrame()) if params.enable_interruptions and self._allow_interruptions: - # TODO(aleix): This frame should really come from the top of the pipeline. - await self.broadcast_frame(InterruptionFrame) + await self.queue_task_frame(InterruptionFrame()) await self._call_event_handler("on_user_turn_started", strategy) @@ -588,8 +586,7 @@ class LLMUserAggregator(LLMContextAggregator): await s.reset() if params.enable_user_speaking_frames: - # TODO(aleix): This frame should really come from the top of the pipeline. - await self.broadcast_frame(UserStoppedSpeakingFrame) + await self.queue_task_frame(UserStoppedSpeakingFrame()) await self._call_event_handler("on_user_turn_stopped", strategy)