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