Added
-
Added new frames
InputTransportMessageUrgentFrameandDailyInputTransportMessageUrgentFramefor transport messages received from external sources. -
Added
UserSpeakingFrame. This will be sent upstream and downstream while VAD detects the user is speaking. -
Expanded support for universal
LLMContextto more LLM services. Using the universalLLMContextand associatedLLMContextAggregatorPairis a pre-requisite for usingLLMSwitcherto switch between LLMs at runtime. Here are the newly-supported services:- Azure
- Cerebras
- Deepseek
- Fireworks AI
- Google Vertex AI
- Grok
- Groq
- Mistral
- NVIDIA NIM
- Ollama
- OpenPipe
- OpenRouter
- Perplexity
- Qwen
- SambaNova
- Together.ai
-
Added support for WhatsApp User-initiated Calls.
-
Added new audio filter
AICFilter, speech enhancement for improving VAD/STT performance, no ONNX dependency.
See https://ai-coustics.com/sdk/ -
Added a timeout around cancel input tasks to prevent indefinite hangs when cancellation is swallowed by third-party code.
-
Added
pipecat.extensions.ivrfor automated IVR system navigation with configurable goals and conversation handling. Supports DTMF input, verbal responses, and intelligent menu traversal.Basic usage:
from pipecat.extensions.ivr.ivr_navigator import IVRNavigator # Create IVR navigator with your goal ivr_navigator = IVRNavigator( llm=llm_service, ivr_prompt="Navigate to billing department to dispute a charge" ) # Handle different outcomes @ivr_navigator.event_handler("on_conversation_detected") async def on_conversation(processor, conversation_history): # Switch to normal conversation mode pass @ivr_navigator.event_handler("on_ivr_status_changed") async def on_ivr_status(processor, status): if status == IVRStatus.COMPLETED: # End pipeline, transfer call, or start bot conversation elif status == IVRStatus.STUCK: # Handle navigation failure
-
BaseOutputTransportnow implementswrite_dtmf()by loading DTMF audio and sending it through the transport. This makes sending DTMF generic across all output transports. -
Added new config parameters to
GladiaSTTService.- PreProcessingConfig >
audio_enhancerto enhance audio quality. - CustomVocabularyItem >
pronunciationsandlanguageto specify special pronunciations and in which language it will be pronounced.
- PreProcessingConfig >
Changed
-
UserStartedSpeakingFrameandUserStoppedSpeakingFrameare also pushed
upstream. -
ParallelPipelinenow waits forCancelFrameto finish in all branches before pushing it downstream. -
Added
sip_codecsto theDailyRoomSipParams. -
Updated the
configure()function inpipecat.runner.dailyto include new args to create SIP-enabled rooms. Additionally, added new args to control the room and token expiration durations. -
pipecat.frames.frames.KeypadEntryis deprecated and has been moved topipecat.audio.dtmf.types.KeypadEntry. -
Updated
RimeTTSService's flush_audio message to conform with Rime's official API. -
Updated the default model for
CerebrasLLMServiceto GPT-OSS-120B.
Removed
-
Remove
StopInterruptionFrame. This was a legacy frame that was not being used really anywhere and it didn't provide any useful meaning. It was only pushed afterUserStoppedSpeakingFrame, so developers can just useUserStoppedSpeakingFrame. -
DailyTransport.write_dtmf()has been removed in favor of the genericBaseOutputTransport.write_dtmf(). -
Remove deprecated
DailyTransport.send_dtmf().
Deprecated
-
Transports have been re-organized.
pipecat.transports.network.small_webrtc -> pipecat.transports.smallwebrtc.transport pipecat.transports.network.webrtc_connection -> pipecat.transports.smallwebrtc.connection pipecat.transports.network.websocket_client -> pipecat.transports.websocket.client pipecat.transports.network.websocket_server -> pipecat.transports.websocket.server pipecat.transports.network.fastapi_websocket -> pipecat.transports.websocket.fastapi pipecat.transports.services.daily -> pipecat.transports.daily.transport pipecat.transports.services.helpers.daily_rest -> pipecat.transports.daily.utils pipecat.transports.services.livekit -> pipecat.transports.livekit.transport pipecat.transports.services.tavus -> pipecat.transports.tavus.transport -
pipecat.frames.frames.KeypadEntryis deprecated usepipecat.audio.dtmf.types.KeypadEntryinstead.
Fixed
-
Fixed an issue where messages received from the transport were always being resent.
-
Fixed
SmallWebRTCTransportto not usemidto decide if the transceiver should besendrecvor not. -
Fixed an issue where Deepgram swallowed
asyncio.CancelledErrorduring disconnect, preventing tasks from being cancelled. -
Fixed an issue where
PipelineTaskwas not cleaning up the observers.
Performance
- Reduced latency and improved memory performance in
Mem0MemoryService.