LLMUserAggregator: use TranscriptionUserTurnStartStrategy for emulated interruptions

This commit is contained in:
Aleix Conchillo Flaqué
2025-12-15 14:16:47 -08:00
parent 2cdf207227
commit dff6b5402a
2 changed files with 4 additions and 13 deletions

View File

@@ -51,6 +51,9 @@ from pipecat.turns.bot.transcription_bot_turn_start_strategy import (
TranscriptionBotTurnStartStrategy, TranscriptionBotTurnStartStrategy,
) )
from pipecat.turns.turn_start_strategies import TurnStartStrategies from pipecat.turns.turn_start_strategies import TurnStartStrategies
from pipecat.turns.user.transcription_user_turn_start_strategy import (
TranscriptionUserTurnStartStrategy,
)
from pipecat.turns.user.vad_user_turn_start_strategy import VADUserTurnStartStrategy from pipecat.turns.user.vad_user_turn_start_strategy import VADUserTurnStartStrategy
from pipecat.utils.asyncio.task_manager import BaseTaskManager, TaskManager, TaskManagerParams from pipecat.utils.asyncio.task_manager import BaseTaskManager, TaskManager, TaskManagerParams
from pipecat.utils.tracing.setup import is_tracing_available from pipecat.utils.tracing.setup import is_tracing_available
@@ -293,7 +296,7 @@ class PipelineTask(BasePipelineTask):
# Initialize default user and bot turn start strategies. # Initialize default user and bot turn start strategies.
if not self._params.turn_start_strategies: if not self._params.turn_start_strategies:
self._params.turn_start_strategies = TurnStartStrategies( self._params.turn_start_strategies = TurnStartStrategies(
user=[VADUserTurnStartStrategy()], user=[VADUserTurnStartStrategy(), TranscriptionUserTurnStartStrategy()],
bot=[TranscriptionBotTurnStartStrategy()], bot=[TranscriptionBotTurnStartStrategy()],
) )

View File

@@ -231,8 +231,6 @@ class LLMUserAggregator(LLMContextAggregator):
super().__init__(context=context, role="user", **kwargs) super().__init__(context=context, role="user", **kwargs)
self._params = params or LLMUserAggregatorParams() self._params = params or LLMUserAggregatorParams()
self._user_speaking = False
async def cleanup(self): async def cleanup(self):
"""Clean up processor resources.""" """Clean up processor resources."""
await super().cleanup() await super().cleanup()
@@ -390,11 +388,6 @@ class LLMUserAggregator(LLMContextAggregator):
await self.broadcast_frame(frame_cls, **kwargs) await self.broadcast_frame(frame_cls, **kwargs)
async def _trigger_user_turn_start(self, strategy: BaseUserTurnStartStrategy): async def _trigger_user_turn_start(self, strategy: BaseUserTurnStartStrategy):
if self._user_speaking:
return
self._user_speaking = True
# Reset all user turn start strategies to start fresh. # Reset all user turn start strategies to start fresh.
if self.turn_start_strategies: if self.turn_start_strategies:
for s in self.turn_start_strategies.user: for s in self.turn_start_strategies.user:
@@ -407,11 +400,6 @@ class LLMUserAggregator(LLMContextAggregator):
await self.broadcast_frame(InterruptionFrame) await self.broadcast_frame(InterruptionFrame)
async def _trigger_bot_turn_start(self, strategy: BaseBotTurnStartStrategy): async def _trigger_bot_turn_start(self, strategy: BaseBotTurnStartStrategy):
if not self._user_speaking:
return
self._user_speaking = False
# Reset all bot turn start strategies to start fresh. # Reset all bot turn start strategies to start fresh.
if self.turn_start_strategies: if self.turn_start_strategies:
for s in self.turn_start_strategies.bot: for s in self.turn_start_strategies.bot: