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.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

View File

@@ -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()]