diff --git a/CHANGELOG.md b/CHANGELOG.md index b97203a9d..019cafd58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to **Pipecat** will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.73] - 2025-06-26 + +### Fixed + +- Fixed an issue introduced in 0.0.72 that would cause `ElevenLabsTTSService`, + `GladiaSTTService`, `NeuphonicTTSService` and `OpenAIRealtimeBetaLLMService` + to throw an error. + ## [0.0.72] - 2025-06-26 ### Added diff --git a/src/pipecat/pipeline/task.py b/src/pipecat/pipeline/task.py index d17e8c771..0cf294b05 100644 --- a/src/pipecat/pipeline/task.py +++ b/src/pipecat/pipeline/task.py @@ -463,7 +463,7 @@ class PipelineTask(BasePipelineTask): self._process_push_queue(), f"{self}::_process_push_queue" ) - await self._observer.start(self._enable_watchdog_timers) + await self._observer.start() return self._process_push_task diff --git a/src/pipecat/pipeline/task_observer.py b/src/pipecat/pipeline/task_observer.py index db03a73d1..40f4c953c 100644 --- a/src/pipecat/pipeline/task_observer.py +++ b/src/pipecat/pipeline/task_observer.py @@ -77,7 +77,7 @@ class TaskObserver(BaseObserver): if observer in self._observers: self._observers.remove(observer) - async def start(self, watchdog_timers_enabled: bool = False): + async def start(self): """Starts all proxy observer tasks.""" self._proxies = self._create_proxies(self._observers) diff --git a/src/pipecat/services/elevenlabs/tts.py b/src/pipecat/services/elevenlabs/tts.py index 3b1a3a20c..2e04bd1b1 100644 --- a/src/pipecat/services/elevenlabs/tts.py +++ b/src/pipecat/services/elevenlabs/tts.py @@ -428,7 +428,7 @@ class ElevenLabsTTSService(AudioContextWordTTSService): self._cumulative_time = word_times[-1][1] async def _keepalive_task_handler(self): - KEEPALIVE_SLEEP = 10 if self.watchdog_timers_enabled else 3 + KEEPALIVE_SLEEP = 10 if self.task_manager.task_watchdog_enabled else 3 while True: self.reset_watchdog() await asyncio.sleep(KEEPALIVE_SLEEP) diff --git a/src/pipecat/services/gladia/stt.py b/src/pipecat/services/gladia/stt.py index 27b6ff1d9..0aa144fda 100644 --- a/src/pipecat/services/gladia/stt.py +++ b/src/pipecat/services/gladia/stt.py @@ -485,7 +485,7 @@ class GladiaSTTService(STTService): async def _keepalive_task_handler(self): """Send periodic empty audio chunks to keep the connection alive.""" try: - KEEPALIVE_SLEEP = 20 if self.watchdog_timers_enabled else 3 + KEEPALIVE_SLEEP = 20 if self.task_manager.task_watchdog_enabled else 3 while self._connection_active: self.reset_watchdog() # Send keepalive (Gladia times out after 30 seconds) diff --git a/src/pipecat/services/neuphonic/tts.py b/src/pipecat/services/neuphonic/tts.py index 079a29420..b92e5966c 100644 --- a/src/pipecat/services/neuphonic/tts.py +++ b/src/pipecat/services/neuphonic/tts.py @@ -233,7 +233,7 @@ class NeuphonicTTSService(InterruptibleTTSService): await self.push_frame(frame) async def _keepalive_task_handler(self): - KEEPALIVE_SLEEP = 10 if self.watchdog_timers_enabled else 3 + KEEPALIVE_SLEEP = 10 if self.task_manager.task_watchdog_enabled else 3 while True: self.reset_watchdog() await asyncio.sleep(KEEPALIVE_SLEEP) diff --git a/src/pipecat/services/openai_realtime_beta/frames.py b/src/pipecat/services/openai_realtime_beta/frames.py index c28c9212f..25e7c409c 100644 --- a/src/pipecat/services/openai_realtime_beta/frames.py +++ b/src/pipecat/services/openai_realtime_beta/frames.py @@ -7,9 +7,12 @@ """Custom frame types for OpenAI Realtime API integration.""" from dataclasses import dataclass +from typing import TYPE_CHECKING from pipecat.frames.frames import DataFrame, FunctionCallResultFrame -from pipecat.services.openai_realtime_beta.context import OpenAIRealtimeLLMContext + +if TYPE_CHECKING: + from pipecat.services.openai_realtime_beta.context import OpenAIRealtimeLLMContext @dataclass