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,
|
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()],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user