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
PipelineTaskheartbeat frames withheartbeats_period_secs. -
Added
DailyMeetingTokenPropertiesandDailyMeetingTokenParamsPydantic models for meeting token creation inget_tokenmethod ofDailyRESTHelper. -
Added
enable_recordingandgeoparameters toDailyRoomProperties. -
Added
RecordingsBucketConfigtoDailyRoomPropertiesto upload recordings to a custom AWS bucket.
Changed
-
Enhanced
UserIdleProcessorwith retry functionality and control over idle monitoring via new callback signature(processor, retry_count) -> bool. Updated the17-detect-user-idle.pyto 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
TranscriptProcessorto 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.pyto use the updatedTranscriptProcessor.
Fixed
-
Fixed an
GeminiMultimodalLiveLLMServiceissue that was preventing the user to push initial LLM assistant messages (usingLLMMessagesAppendFrame). -
Added missing
FrameProcessor.cleanup()calls toPipeline,ParallelPipelineandUserIdleProcessor. -
Fixed a type error when using
voice_settingsinElevenLabsHttpTTSService. -
Fixed an issue where
OpenAIRealtimeBetaLLMServicefunction calling resulted in an error. -
Fixed an issue in
AudioBufferProcessorwhere the last audio buffer was not being processed, in cases where the_user_audio_bufferwas smaller than the buffer size.
Performance
- Replaced audio resampling library
resampywithsoxr. Resampling a 2:21s audio file from 24KHz to 16KHz took 1.41s withresampyand 0.031s withsoxrwith similar audio quality.
Other
- Added initial unit test infrastructure.