Added
-
Added track-specific audio event
on_track_audio_datatoAudioBufferProcessorfor accessing separate input and output audio tracks. -
Pipecat version will now be logged on every application startup. This will help us identify what version we are running in case of any issues.
-
Added a new
StopFramewhich can be used to stop a pipeline task while keeping the frame processors running. The frame processors could then be used in a different pipeline. The difference between aStopFrameand aStopTaskFrameis that, as withEndFrameandEndTaskFrame, theStopFrameis pushed from the task and theStopTaskFrameis pushed upstream inside the pipeline by any processor. -
Added a new
PipelineTaskparameterobserversthat replaces the previousPipelineParams.observers. -
Added a new
PipelineTaskparametercheck_dangling_tasksto enable or disable checking for frame processors' dangling tasks when the Pipeline finishes running. -
Added new
on_completion_timeoutevent for LLM services (all OpenAI-based services, Anthropic and Google). Note that this event will only get triggered if LLM timeouts are setup and if the timeout was reached. It can be useful to retrigger another completion and see if the timeout was just a blip. -
Added new log observers
LLMLogObserverandTranscriptionLogObserverthat can be useful for debugging your pipelines. -
Added
room_urlproperty toDailyTransport. -
Added
addonsargument toDeepgramSTTService. -
Added
exponential_backoff_time()toutils.networkmodule.
Changed
-
⚠️
PipelineTasknow requires keyword arguments (except for the first one for the pipeline). -
Updated
PlayHTHttpTTSServiceto take avoice_engineandprotocolinput in the constructor. The previous method of providing avoice_engineinput that contains the engine and protocol is deprecated by PlayHT. -
The base
TTSServiceclass now strips leading newlines before sending text to the TTS provider. This change is to solve issues where some TTS providers, like Azure, would not output text due to newlines. -
GrokLLMSServicenow usesgrok-2as the default model. -
AnthropicLLMServicenow usesclaude-3-7-sonnet-20250219as the default model. -
RimeHttpTTSServiceneeds anaiohttp.ClientSessionto be passed to the constructor as all the other HTTP-based services. -
RimeHttpTTSServicedoesn't use a default voice anymore. -
DeepgramSTTServicenow uses the newnova-3model by default. If you want to use the previous model you can passLiveOptions(model="nova-2-general").
(see https://deepgram.com/learn/introducing-nova-3-speech-to-text-api)
stt = DeepgramSTTService(..., live_options=LiveOptions(model="nova-2-general"))Deprecated
PipelineParams.observersis now deprecated, you the newPipelineTaskparameterobservers.
Removed
- Remove
TransportParams.audio_out_is_livesince it was not being used at all.
Fixed
-
Fixed a
GoogleLLMServicethat was causing an exception when sending inline audio in some cases. -
Fixed an
AudioContextWordTTSServiceissue that would cause anEndFrameto disconnect from the TTS service before audio from all the contexts was received. This affected services like Cartesia and Rime. -
Fixed an issue that was not allowing to pass an
OpenAILLMContextto createGoogleLLMService's context aggregators. -
Fixed a
ElevenLabsTTSService,FishAudioTTSService,LMNTTTSServiceandPlayHTTTSServiceissue that was resulting in audio requested before an interruption being played after an interruption. -
Fixed
match_endofsentencesupport for ellipses. -
Fixed an issue that would cause undesired interruptions via
EmulateUserStartedSpeakingFramewhen only interim transcriptions (i.e. no final transcriptions) where received. -
Fixed an issue where
EndTaskFramewas not triggeringon_client_disconnectedor closing the WebSocket in FastAPI. -
Fixed an issue in
DeepgramSTTServicewhere thesample_ratepassed to theLiveOptionswas not being used, causing the service to use the default sample rate of pipeline. -
Fixed a context aggregator issue that would not append the LLM text response to the context if a function call happened in the same LLM turn.
-
Fixed an issue that was causing HTTP TTS services to push
TTSStoppedFramemore than once. -
Fixed a
FishAudioTTSServiceissue whereTTSStoppedFramewas not being pushed. -
Fixed an issue that
start_callbackwas not invoked for some LLM services. -
Fixed an issue that would cause
DeepgramSTTServiceto stop working after an error occurred (e.g. sudden network loss). If the network recovered we would not reconnect. -
Fixed a
STTMuteFilterissue that would not mute user audio frames causing transcriptions to be generated by the STT service.
Other
-
Added Gemini support to
examples/phone-chatbot. -
Added foundational example
34-audio-recording.pyshowing how to use theAudioBufferProcessorcallbacks to save merged and track recordings.