diff --git a/src/pipecat/pipeline/task.py b/src/pipecat/pipeline/task.py index 56cf7d2a1..17bb4f91e 100644 --- a/src/pipecat/pipeline/task.py +++ b/src/pipecat/pipeline/task.py @@ -47,14 +47,7 @@ from pipecat.pipeline.base_task import BasePipelineTask, PipelineTaskParams from pipecat.pipeline.pipeline import Pipeline, PipelineSink, PipelineSource from pipecat.pipeline.task_observer import TaskObserver from pipecat.processors.frame_processor import FrameDirection, FrameProcessor, FrameProcessorSetup -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 from pipecat.utils.tracing.turn_trace_observer import TurnTraceObserver @@ -295,10 +288,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(), TranscriptionUserTurnStartStrategy()], - bot=[TranscriptionBotTurnStartStrategy()], - ) + self._params.turn_start_strategies = TurnStartStrategies() self._finished = False self._cancelled = False diff --git a/src/pipecat/turns/turn_start_strategies.py b/src/pipecat/turns/turn_start_strategies.py index a3a344ef3..5ab4878fd 100644 --- a/src/pipecat/turns/turn_start_strategies.py +++ b/src/pipecat/turns/turn_start_strategies.py @@ -7,10 +7,17 @@ """Turn start strategy configuration.""" from dataclasses import dataclass -from typing import List +from typing import List, Optional from pipecat.turns.bot.base_bot_turn_start_strategy import BaseBotTurnStartStrategy +from pipecat.turns.bot.transcription_bot_turn_start_strategy import ( + TranscriptionBotTurnStartStrategy, +) from pipecat.turns.user.base_user_turn_start_strategy import BaseUserTurnStartStrategy +from pipecat.turns.user.transcription_user_turn_start_strategy import ( + TranscriptionUserTurnStartStrategy, +) +from pipecat.turns.user.vad_user_turn_start_strategy import VADUserTurnStartStrategy @dataclass @@ -20,12 +27,25 @@ class TurnStartStrategies: This class groups the configured turn start strategies for both the user and the bot. + If no strategies are specified for the user or the bot, the following + defaults are used: + + user: [VADUserTurnStartStrategy, TranscriptionUserTurnStartStrategy] + bot: [TranscriptionBotTurnStartStrategy] + Attributes: user: A list of user turn start strategies used to detect when the user starts speaking. bot: A list of bot turn start strategies used to decide when the bot should start speaking. + """ - user: List[BaseUserTurnStartStrategy] - bot: List[BaseBotTurnStartStrategy] + user: Optional[List[BaseUserTurnStartStrategy]] = None + bot: Optional[List[BaseBotTurnStartStrategy]] = None + + def __post_init__(self): + if not self.user: + self.user = [VADUserTurnStartStrategy(), TranscriptionUserTurnStartStrategy()] + if not self.bot: + self.bot = [TranscriptionBotTurnStartStrategy()]