Added
-
Added
HeyGenTransport. This is an integration for HeyGen Interactive Avatar. A video service that handles audio streaming and requests HeyGen to generate avatar video responses. (see https://www.heygen.com/). When used, the Pipecat bot joins the same virtual room as the HeyGen Avatar and the user. -
Added support to
TwilioFrameSerializerforregionandedgesettings. -
Added support for using universal
LLMContextwith:LLMLogObserverGatedLLMContextAggregator(formerlyGatedOpenAILLMContextAggregator)LangchainProcessorMem0MemoryService
-
Added
StrandsAgentProcessorwhich allows you to use the Strands Agents framework to build your voice agents.
See https://strandsagents.com -
Added
ElevenLabsSTTServicefor speech-to-text transcription. -
Added a peer connection monitor to the
SmallWebRTCConnectionthat automatically disconnects if the connection fails to establish within the timeout (1 minute by default). -
Added memory cleanup improvements to reduce memory peaks.
-
Added
on_before_process_frame,on_after_process_frame,on_before_push_frameandon_after_push_frame. These are synchronous events that get called before and after a frame is processed or pushed. Note that these events are synchrnous so they should ideally perform lightweight tasks in order to not block the pipeline. Seeexamples/foundational/45-before-and-after-events.py. -
Added
on_before_leavesynchronous event toDailyTransport. -
Added
on_before_disconnectsynchronous event toLiveKitTransport. -
It is now possible to register synchronous event handlers. By default, all event handlers are executed in a separate task. However, in some cases we want to guarantee order of execution, for example, executing something before disconnecting a transport.
self._register_event_handler("on_event_name", sync=True)
-
Added support for global location in
GoogleVertexLLMService. The service now supports both regional locations (e.g., "us-east4") and the "global" location for Vertex AI endpoints. When using "global" location, the service will useaiplatform.googleapis.comas the API host instead of the regional format. -
Added
on_pipeline_finishedevent toPipelineTask. This event will get fired when the pipeline is done running. This can be the result of aStopFrame,CancelFrameorEndFrame.@task.event_handler("on_pipeline_finished") async def on_pipeline_finished(task: PipelineTask, frame: Frame): ...
-
Added support for new RTVI
send-textevent, along with the ability to toggle the audio response off (skip tts) while handling the new context.
Changed
-
Updated
aiortcto 1.13.0. -
Updated
sentryto 2.38.0. -
BaseOutputTransportmethodswrite_audio_frameandwrite_video_framenow return a boolean to indicate if the transport implementation was able to write the given frame or not. -
Updated Silero VAD model to v6.
-
Updated
livekitto 1.0.13. -
torchandtorchaudioare no longer required for running Smart Turn locally. This avoids gigabytes of dependencies being installed. -
Updated
websocketsdependency to support version 15.0. Removed deprecated usage ofConnectionClosed.codeandConnectionClosed.reasonattributes inAWSTranscribeSTTServicefor compatibility. -
Refactored
pyproject.tomlto reduce websockets dependency repetition using self-referencing extras. All websockets-dependent services now reference a sharedwebsockets-baseextra.
Deprecated
-
GladiaSTTService'sconfidencearg is deprecated.confidenceis no longer needed to determine which transcription or translation frames to emit. -
PipelineTaskeventson_pipeline_stopped,on_pipeline_endedandon_pipeline_cancelledare now deprecated. Useon_pipeline_finishedinstead. -
Support for the RTVI
append-to-contextevent, in lieu of the newsend-textevent and making way for future events likesend-image.
Fixed
-
Fixed an issue where the pipeline could freeze if a task cancellation never completed because a third-party library swallowed asyncio.CancelledError. We now apply a timeout to task cancellations to prevent these freezes. If the timeout is reached, the system logs warnings and leaves dangling tasks behind, which can help diagnose where cancellation is being blocked.
-
Fixed an
AudioBufferProcessorissues that was causing user audio to be missing in stereo recordings causing bot and user overlaps. -
Fixed a
BaseOutputTransportissue that could produce large savedAudioBufferProcessorfiles when using an audio mixer. -
Fixed a
PipelineRunnerissue on Windows where setting up SIGINT and SIGTERM was raising an exception. -
Fixed an issue where multiple handlers for an event would not run in parallel.
-
Fixed
DailyTransport.sip_call_transfer()to automatically use the session ID from theon_dialin_connectedevent, when not explicitly provided. Now supports cold transfers (from incoming dial-in calls) by automatically tracking session IDs from connection events. -
Fixed a memory leak in
SmallWebRTCTransport. Inaiortc, when you receive aMediaStreamTrack(audio or video), frames are produced asynchronously. If the code never consumes these frames, they are queued in memory, causing a memory leak. -
Fixed an issue in
AsyncAITTSService, whereTTSTextFrameswere not being pushed. -
Fixed an issue that would cause
push_interruption_task_frame_and_wait()to not wait if a previous interruption had already happened. -
Fixed a couple of bugs in
ServiceSwitcher:- Using multiple
ServiceSwitchers in a pipeline would result in an error. ServiceSwitcherFrames (such asManuallySwitchServiceFrames) were having an effect too early, essentially "jumping the queue" in terms of pipeline frame ordering.
- Using multiple
-
Fixed a self-cancellation deadlock in
UserIdleProcessorwhen returningFalsefrom an idle callback. The task now terminates naturally instead of attempting to cancel itself. -
Fixed an issue in
AudioBufferProcessorwhere a recording is not created when a bot speaks and user input is blocked. -
Fixed a
FastAPIWebsocketTransportandSmallWebRTCTransportissue whereon_client_disconnectedwould be triggered when the bot ends the conversation. That is,on_client_disconnectedshould only be triggered when the remote client actually disconnects. -
Fixed an issue in
HeyGenVideoServicewhere theBotStartedSpeakingFramewas blocked from moving through the Pipeline.