v0.0.72

pipecat-ai/pipecatv0.0.72Jun 26, 2025by aconchillo

AI Summary

Major release introducing watchdog timers for pipeline freeze detection, new SambaNova services, frame pausing/resuming functionality, and extensive improvements to error handling and logging.

Key Highlights

  • Added watchdog timers to detect if Pipecat tasks are taking longer than expected
  • Introduced new services: SambaNovaLLMService and SambaNovaTTSService
  • Added FrameProcessorPauseFrame and FrameProcessorResumeFrame for pausing/resuming frame processing
  • Changed HeartbeatFrame to be a control frame for easier freeze detection

Breaking Changes

  • TavusTransport and TavusVideoService now send audio via WebRTC instead of app-messages over WebSocket
  • PipelineParams.allow_interruptions now defaults to True
  • DailyTransport now uses custom microphone audio tracks instead of virtual microphones
  • PollyTTSService parameter user_continuos_stream is deprecated
  • AudioBufferProcessor parameter user_continuos_stream is deprecated

New Features

  • Watchdog timers with configurable timeout and logging
  • FrameProcessorPauseFrame and FrameProcessorResumeFrame
  • SambaNovaLLMService and SambaNovaTTSService
  • TurnTrackingObserver now ends a turn upon observing EndFrame or CancelFrame
  • Polish support to AWSTranscribeSTTService
  • lexicon_names parameter to AWSPollyTTSService.InputParams

Full Release Notes

### Added

- Added logging and improved error handling to help diagnose and prevent potential Pipeline freezes.

- Added `WatchdogQueue`, `WatchdogPriorityQueue`, `WatchdogEvent` and `WatchdogAsyncIterator`. These helper utilities reset watchdog timers appropriately before they expire. When watchdog timers are disabled, the utilities behave as standard counterparts without side effects.

- Introduce task watchdog timers. Watchdog timers are used to detect if a Pipecat task is taking longer than expected (by default 5 seconds). Watchdog timers are disabled by default and can be enabled globally by passing `enable_watchdog_timers` argument to `PipelineTask` constructor. It is possible to change the default watchdog timer timeout by using the `watchdog_timeout` argument. You can also log how long it takes to reset the watchdog timers which is done with the `enable_watchdog_logging`. You can control all these settings per each frame processor or even per task. That is, you can set `enable_watchdog_timers`, `enable_watchdog_logging` and `watchdog_timeout` when creating any frame processor through their constructor arguments or when you create a task with `FrameProcessor.create_task()`. Note that watchdog timers only work with Pipecat tasks and will not work if you use `asycio.create_task()` or similar.

- Added `lexicon_names` parameter to `AWSPollyTTSService.InputParams`.

- Added reconnection logic and audio buffer management to `GladiaSTTService`.

- The `TurnTrackingObserver` now ends a turn upon observing an `EndFrame` or `CancelFrame`.

- Added Polish support to `AWSTranscribeSTTService`.

- Added new frames `FrameProcessorPauseFrame` and `FrameProcessorResumeFrame` which allow pausing and resuming frame processing for a given frame processor. These are control frames, so they are ordered. Pausing frame processor will keep old frames in the internal queues until resume takes place. Frames being pushed while a frame processor is paused will be pushed to the queues. When frame processing is resumed all queued frames will be processed in order. Also added `FrameProcessorPauseUrgentFrame` and `FrameProcessorResumeUrgentFrame` which are system frames and therefore they have high priority.

- Added a property called `has_function_calls_in_progress` in `LLMAssistantContextAggregator` that exposes whether a function call is in progress.

- Added `SambaNovaLLMService` which provides llm api integration with an OpenAI-compatible interface.

- Added `SambaNovaTTSService` which provides speech-to-text functionality using SambaNovas's (whisper) API.

- Add fundational examples for function calling and transcription `14s-function-calling-sambanova.py`, `13g-sambanova-transcription.py`

### Changed

- `HeartbeatFrame`s are now control frames. This will make it easier to detect pipeline freezes. Previously, heartbeat frames were system frames which meant they were not get queued with other frames, making it difficult to detect pipeline stalls.

- Updated `OpenAIRealtimeBetaLLMService` to accept `language` in the `InputAudioTranscription` class for all models.

- Updated the default model for `OpenAIRealtimeBetaLLMService` to `gpt-4o-realtime-preview-2025-06-03`.

- The `PipelineParams` arg `allow_interruptions` now defaults to `True`.

- `TavusTransport` and `TavusVideoService` now send audio to Tavus using WebRTC audio tracks instead of `app-messages` over WebSocket. This should improve the overall audio quality.

- Upgraded `daily-python` to 0.19.3.

### Fixed

- Fixed an issue that would cause heartbeat frames to be sent before processors were started.

- Fixed an event loop blocking issue when using `SentryMetrics`.

- Fixed an issue in `FastAPIWebsocketClient` to ensure proper disconnection when the websocket is already closed.

- Fixed an issue where the `UserStoppedSpeakingFrame` was not received if the transport was not receiving new audio frames.

- Fixed an edge case where if the user interrupted the bot but no new aggregation was received, the bot would not resume speaking.

- Fixed an issue with `TelnyxFrameSerializer` where it would throw an exception when the user hung up the call.

- Fixed an issue with `ElevenLabsTTSService` where the context was not being closed.

- Fixed function calling in `AWSNovaSonicLLMService`.

- Fixed an issue that would cause multiple `PipelineTask.on_idle_timeout` events to be triggered repeatedly.

- Fixed an issue that was causing user and bot speech to not be synchronized during recordings.

- Fixed an issue where voice settings weren't applied to ElevenLabsTTSService.

- Fixed an issue with `GroqTTSService` where it was not properly parsing the WAV file header.

- Fixed an issue with `GoogleSTTService` where it was constantly reconnecting before starting to receive audio from the user.

- Fixed an issue where `GoogleLLMService`'s TTFB value was incorrect.

### Deprecated

- `AudioBufferProcessor` parameter `user_continuos_stream` is deprecated.

### Other

- Rename `14e-function-calling-gemini.py` to `14e-function-calling-google.py`.