v0.0.81

pipecat-ai/pipecatv0.0.81Aug 25, 2025by aconchillo

AI Summary

This release adds a voicemail detection module, Mistral LLM support, and performance optimizations for pipelines. It also introduces new frame types for idle timeout detection and allows custom pipeline processors.

Key Highlights

  • Added `pipecat.extensions.voicemail` for detecting voicemail vs. live conversation
  • Added `MistralLLMService` for chat completion
  • Added `enable_direct_mode` to `FrameProcessor` for performance
  • Added `TranscriptionFrame` and `UserStartedSpeakingFrame` to `idle_timeout_frames`

Breaking Changes

  • `FrameProcessor.wait_for_task()` deprecated
  • Watchdog timers removed

New Features

  • Voicemail detection module
  • `MistralLLMService`
  • `FrameProcessor` methods: `pause_processing_system_frames`, `resume_processing_system_frames`, `on_process_frame`, `entry_processor`
  • `processors`, `next`, `previous` properties
  • Retry timeout support for LLMs
  • ElevenLabs runtime model/language changes

Full Release Notes

### Added

- Added `pipecat.extensions.voicemail`, a module for detecting voicemail vs.  live conversation, primarily intended for use in outbound calling scenarios.  The voicemail module is optimized for text LLMs only.

- Added new frames to the `idle_timeout_frames` arg: `TranscriptionFrame`, `InterimTranscriptionFrame`, `UserStartedSpeakingFrame`, and `UserStoppedSpeakingFrame`. These additions serve as indicators of user activity in the pipeline idle detection logic.

- Allow passing custom pipeline sink and source processors to a `Pipeline`. Pipeline source and sink processors are used to know and control what's coming in and out of a `Pipeline` processor.

- Added `FrameProcessor.pause_processing_system_frames()` and `FrameProcessor.resume_processing_system_frames()`. These allow to pause and resume the processing of system frame.

- Added new `on_process_frame()` observer method which makes it possible to know when a frame is being processed.

- Added new `FrameProcessor.entry_processor()` method. This allows you to access the first non-compound processor in a pipeline.

- Added `FrameProcessor` properties `processors`, `next` and `previous`.

- `ElevenLabsTTSService` now supports additional runtime changes to the `model`, `language`, and `voice_settings` parameters.

- Added `apply_text_normalization` support to `ElevenLabsTTSService` and `ElevenLabsHttpTTSService`.

- Added `MistralLLMService`, using Mistral's chat completion API.

- Added the ability to retry executing a chat completion after a timeout period for `OpenAILLMService` and its subclasses, `AnthropicLLMService`, and `AWSBedrockLLMService`. The LLM services accept new args: `retry_timeout_secs` and `retry_on_timeout`. This feature is disabled by default.

### Changed

- Updated `daily-python` to 0.19.7.

### Deprecated

- `FrameProcessor.wait_for_task()` is deprecated. Use `await task` or `await asyncio.wait_for(task, timeout)` instead.

### Removed

- Watchdog timers have been removed. They were introduced in 0.0.72 to help diagnose pipeline freezes. Unfortunately, they proved ineffective since they required developers to use Pipecat-specific queues, iterators, and events to correctly reset the timer, which limited their usefulness and added friction.

- Removed unused `FrameProcessor.set_parent()` and `FrameProcessor.get_parent()`.

### Fixed

- Fixed an issue that would cause `PipelineRunner` and `PipelineTask` to not handle external asyncio task cancellation properly.

- Added `SpeechmaticsSTTService` exception handling on connection and sending.

- Replaced `asyncio.wait_for()` for `wait_for2.wait_for()` for Python < 3.12. because of issues regarding task cancellation (i.e. cancellation is never propagated).
  See https://bugs.python.org/issue42130

- Fixed an `AudioBufferProcessor` issues that would cause audio overlap when setting a max buffer size.

- Fixed an issue where `AsyncAITTSService` had very high latency in responding by adding `force=true` when sending the flush command.

### Performance

- Improve `PipelineTask` performance by using direct mode processors and by removing unnecessary tasks.

- Improve `ParallelPipeline` performance by using direct mode, by not creating a task for each frame and every sub-pipeline and also by removing other unnecessary tasks.

- `Pipeline` performance improvements by using direct mode.

### Other

- Added `14w-function-calling-mistal.py` using `MistralLLMService`.

- Added `13j-azure-transcription.py` using `AzureSTTService`.