TurnStartStrategies: set user and bot strategies defaults if None

This commit is contained in:
Aleix Conchillo Flaqué
2025-12-18 22:22:13 -08:00
parent d22e1f18bb
commit 9e56d1ac65
2 changed files with 24 additions and 14 deletions

View File

@@ -47,14 +47,7 @@ from pipecat.pipeline.base_task import BasePipelineTask, PipelineTaskParams
from pipecat.pipeline.pipeline import Pipeline, PipelineSink, PipelineSource from pipecat.pipeline.pipeline import Pipeline, PipelineSink, PipelineSource
from pipecat.pipeline.task_observer import TaskObserver from pipecat.pipeline.task_observer import TaskObserver
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor, FrameProcessorSetup 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.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.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
from pipecat.utils.tracing.turn_trace_observer import TurnTraceObserver from pipecat.utils.tracing.turn_trace_observer import TurnTraceObserver
@@ -295,10 +288,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(), TranscriptionUserTurnStartStrategy()],
bot=[TranscriptionBotTurnStartStrategy()],
)
self._finished = False self._finished = False
self._cancelled = False self._cancelled = False

View File

@@ -7,10 +7,17 @@
"""Turn start strategy configuration.""" """Turn start strategy configuration."""
from dataclasses import dataclass 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.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.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 @dataclass
@@ -20,12 +27,25 @@ class TurnStartStrategies:
This class groups the configured turn start strategies for both the user This class groups the configured turn start strategies for both the user
and the bot. 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: Attributes:
user: A list of user turn start strategies used to detect when the user: A list of user turn start strategies used to detect when the
user starts speaking. user starts speaking.
bot: A list of bot turn start strategies used to decide when the bot bot: A list of bot turn start strategies used to decide when the bot
should start speaking. should start speaking.
""" """
user: List[BaseUserTurnStartStrategy] user: Optional[List[BaseUserTurnStartStrategy]] = None
bot: List[BaseBotTurnStartStrategy] bot: Optional[List[BaseBotTurnStartStrategy]] = None
def __post_init__(self):
if not self.user:
self.user = [VADUserTurnStartStrategy(), TranscriptionUserTurnStartStrategy()]
if not self.bot:
self.bot = [TranscriptionBotTurnStartStrategy()]