LLMUserAggregator: broadcast user started/stopped speaking frames

This commit is contained in:
Aleix Conchillo Flaqué
2025-12-14 12:29:25 -08:00
parent 222ccbb471
commit a388ff927c

View File

@@ -402,8 +402,9 @@ class LLMUserAggregator(LLMContextAggregator):
if self._params.enable_user_speaking_frames:
logger.debug(f"User started speaking (user turn start strategy: {strategy})")
await self.push_frame(UserStartedSpeakingFrame())
await self.push_frame(InterruptionFrame())
# TODO(aleix): These frames should really come from the top of the pipeline.
await self.broadcast_frame(UserStartedSpeakingFrame, emulated=strategy is None)
await self.broadcast_frame(InterruptionFrame)
async def _trigger_bot_turn_start(self, strategy: BaseBotTurnStartStrategy):
if not self._user_speaking:
@@ -418,7 +419,8 @@ class LLMUserAggregator(LLMContextAggregator):
if self._params.enable_user_speaking_frames:
logger.debug(f"User stopped speaking (bot turn start strategy: {strategy})")
await self.push_frame(UserStoppedSpeakingFrame())
# TODO(aleix): This frame should really come from the top of the pipeline.
await self.broadcast_frame(UserStoppedSpeakingFrame, emulated=strategy is None)
# Always push context frame.
await self.push_aggregation()