Added
-
In order to create tasks in Pipecat frame processors it is now recommended to use
FrameProcessor.create_task()
(which uses the newutils.asyncio.create_task()
). It takes care of uncaught exceptions, task cancellation handling and task management. To cancel or wait for a task there isFrameProcessor.cancel_task()
andFrameProcessor.wait_for_task()
. All of Pipecat processors have been updated accordingly. Also, when a pipeline runner finishes, a warning about dangling tasks might appear, which indicates if any of the created tasks was never cancelled or awaited for (using these new functions). -
It is now possible to specify the period of the
PipelineTask
heartbeat frames withheartbeats_period_secs
. -
Added
DailyMeetingTokenProperties
andDailyMeetingTokenParams
Pydantic models for meeting token creation inget_token
method ofDailyRESTHelper
. -
Added
enable_recording
andgeo
parameters toDailyRoomProperties
. -
Added
RecordingsBucketConfig
toDailyRoomProperties
to upload recordings to a custom AWS bucket.
Changed
-
Enhanced
UserIdleProcessor
with retry functionality and control over idle monitoring via new callback signature(processor, retry_count) -> bool
. Updated the17-detect-user-idle.py
to show how to use theretry_count
. -
Add defensive error handling for
OpenAIRealtimeBetaLLMService
's audio truncation. Audio truncation errors during interruptions now log a warning and allow the session to continue instead of throwing an exception. -
Modified
TranscriptProcessor
to use TTS text frames for more accurate assistant transcripts. Assistant messages are now aggregated based on bot speaking boundaries rather than LLM context, providing better handling of interruptions and partial utterances. -
Updated foundational examples
28a-transcription-processor-openai.py
,28b-transcript-processor-anthropic.py
, and28c-transcription-processor-gemini.py
to use the updatedTranscriptProcessor
.
Fixed
-
Fixed an
GeminiMultimodalLiveLLMService
issue that was preventing the user to push initial LLM assistant messages (usingLLMMessagesAppendFrame
). -
Added missing
FrameProcessor.cleanup()
calls toPipeline
,ParallelPipeline
andUserIdleProcessor
. -
Fixed a type error when using
voice_settings
inElevenLabsHttpTTSService
. -
Fixed an issue where
OpenAIRealtimeBetaLLMService
function calling resulted in an error. -
Fixed an issue in
AudioBufferProcessor
where the last audio buffer was not being processed, in cases where the_user_audio_buffer
was smaller than the buffer size.
Performance
- Replaced audio resampling library
resampy
withsoxr
. Resampling a 2:21s audio file from 24KHz to 16KHz took 1.41s withresampy
and 0.031s withsoxr
with similar audio quality.
Other
- Added initial unit test infrastructure.