LLMUserAggregator: use TranscriptionUserTurnStartStrategy for emulated interruptions
This commit is contained in:
@@ -51,6 +51,9 @@ from pipecat.turns.bot.transcription_bot_turn_start_strategy import (
|
||||
TranscriptionBotTurnStartStrategy,
|
||||
)
|
||||
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.utils.asyncio.task_manager import BaseTaskManager, TaskManager, TaskManagerParams
|
||||
from pipecat.utils.tracing.setup import is_tracing_available
|
||||
@@ -293,7 +296,7 @@ class PipelineTask(BasePipelineTask):
|
||||
# Initialize default user and bot turn start strategies.
|
||||
if not self._params.turn_start_strategies:
|
||||
self._params.turn_start_strategies = TurnStartStrategies(
|
||||
user=[VADUserTurnStartStrategy()],
|
||||
user=[VADUserTurnStartStrategy(), TranscriptionUserTurnStartStrategy()],
|
||||
bot=[TranscriptionBotTurnStartStrategy()],
|
||||
)
|
||||
|
||||
|
||||
@@ -231,8 +231,6 @@ class LLMUserAggregator(LLMContextAggregator):
|
||||
super().__init__(context=context, role="user", **kwargs)
|
||||
self._params = params or LLMUserAggregatorParams()
|
||||
|
||||
self._user_speaking = False
|
||||
|
||||
async def cleanup(self):
|
||||
"""Clean up processor resources."""
|
||||
await super().cleanup()
|
||||
@@ -390,11 +388,6 @@ class LLMUserAggregator(LLMContextAggregator):
|
||||
await self.broadcast_frame(frame_cls, **kwargs)
|
||||
|
||||
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.
|
||||
if self.turn_start_strategies:
|
||||
for s in self.turn_start_strategies.user:
|
||||
@@ -407,11 +400,6 @@ class LLMUserAggregator(LLMContextAggregator):
|
||||
await self.broadcast_frame(InterruptionFrame)
|
||||
|
||||
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.
|
||||
if self.turn_start_strategies:
|
||||
for s in self.turn_start_strategies.bot:
|
||||
|
||||
Reference in New Issue
Block a user