Added
-
Added
ElevenLabsHttpTTSService
and the07d-interruptible-elevenlabs-http.py
foundational example. -
Introduced pipeline frame observers. Observers can view all the frames that go through the pipeline without the need to inject processors in the pipeline. This can be useful, for example, to implement frame loggers or debuggers among other things. The example
examples/foundational/30-observer.py
shows how to add an observer to a pipeline for debugging. -
Introduced heartbeat frames. The pipeline task can now push periodic heartbeats down the pipeline when
enable_heartbeats=True
. Heartbeats are system frames that are supposed to make it all the way to the end of the pipeline. When a heartbeat frame is received the traversing time (i.e. the time it took to go through the whole pipeline) will be displayed (with TRACE logging) otherwise a warning will be shown. The exampleexamples/foundational/31-heartbeats.py
shows how to enable heartbeats and forces warnings to be displayed. -
Added
LLMTextFrame
andTTSTextFrame
which should be pushed by LLM and TTS services respectively instead ofTextFrame
s. -
Added
OpenRouter
for OpenRouter integration with an OpenAI-compatible interface. Added foundational example14m-function-calling-openrouter.py
. -
Added a new
WebsocketService
based class for TTS services, containing base functions and retry logic. -
Added
DeepSeekLLMService
for DeepSeek integration with an OpenAI-compatible interface. Added foundational example14l-function-calling-deepseek.py
. -
Added
FunctionCallResultProperties
dataclass to provide a structured way to control function call behavior, including:run_llm
: Controls whether to trigger LLM completionon_context_updated
: Optional callback triggered after context update
-
Added a new foundational example
07e-interruptible-playht-http.py
for easy testing ofPlayHTHttpTTSService
. -
Added support for Google TTS Journey voices in
GoogleTTSService
. -
Added
29-livekit-audio-chat.py
, as a new foundational examples forLiveKitTransportLayer
. -
Added
enable_prejoin_ui
,max_participants
andstart_video_off
params toDailyRoomProperties
. -
Added
session_timeout
toFastAPIWebsocketTransport
andWebsocketServerTransport
for configuring session timeouts (in seconds). Triggerson_session_timeout
for custom timeout handling.
See examples/websocket-server/bot.py. -
Added the new modalities option and helper function to set Gemini output modalities.
-
Added
examples/foundational/26d-gemini-multimodal-live-text.py
which is using Gemini as TEXT modality and using another TTS provider for TTS process.
Changed
-
Modified
UserIdleProcessor
to start monitoring only after first conversation activity (UserStartedSpeakingFrame
orBotStartedSpeakingFrame
) instead of immediately. -
Modified
OpenAIAssistantContextAggregator
to support controlled completions and to emit context update callbacks viaFunctionCallResultProperties
. -
Added
aws_session_token
to thePollyTTSService
. -
Changed the default model for
PlayHTHttpTTSService
toPlay3.0-mini-http
. -
api_key
,aws_access_key_id
andregion
are no longer required parameters for the PollyTTSService (AWSTTSService) -
Added
session_timeout
example inexamples/websocket-server/bot.py
to handle session timeout event. -
Changed
InputParams
insrc/pipecat/services/gemini_multimodal_live/gemini.py
to support different modalities. -
Changed
DeepgramSTTService
to sendfinalize
event whenever VAD detectsUserStoppedSpeakingFrame
. This helps in faster transcriptions and clearing theDeepgram
audio buffer.
Fixed
-
Fixed an issue where
DeepgramSTTService
was not generating metrics using pipeline's VAD. -
Fixed
UserIdleProcessor
not properly propagatingEndFrame
s through the pipeline. -
Fixed an issue where websocket based TTS services could incorrectly terminate their connection due to a retry counter not resetting.
-
Fixed a
PipelineTask
issue that would cause a dangling task after stopping the pipeline with anEndFrame
. -
Fixed an import issue for
PlayHTHttpTTSService
. -
Fixed an issue where languages couldn't be used with the
PlayHTHttpTTSService
. -
Fixed an issue where
OpenAIRealtimeBetaLLMService
audio chunks were hitting an error when truncating audio content. -
Fixed an issue where setting the voice and model for
RimeHttpTTSService
wasn't working. -
Fixed an issue where
IdleFrameProcessor
andUserIdleProcessor
were getting initialized before the start of the pipeline.