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
, andUserStoppedSpeakingFrame
. 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 aPipeline
processor. -
Added
FrameProcessor.pause_processing_system_frames()
andFrameProcessor.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
propertiesprocessors
,next
andprevious
. -
ElevenLabsTTSService
now supports additional runtime changes to themodel
,language
, andvoice_settings
parameters. -
Added
apply_text_normalization
support toElevenLabsTTSService
andElevenLabsHttpTTSService
. -
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
, andAWSBedrockLLMService
. The LLM services accept new args:retry_timeout_secs
andretry_on_timeout
. This feature is disabled by default.
Changed
- Updated
daily-python
to 0.19.7.
Deprecated
FrameProcessor.wait_for_task()
is deprecated. Useawait task
orawait 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()
andFrameProcessor.get_parent()
.
Fixed
-
Fixed an issue that would cause
PipelineRunner
andPipelineTask
to not handle external asyncio task cancellation properly. -
Added
SpeechmaticsSTTService
exception handling on connection and sending. -
Replaced
asyncio.wait_for()
forwait_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 addingforce=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
usingMistralLLMService
. -
Added
13j-azure-transcription.py
usingAzureSTTService
.