Added
-
AzureSTTService
now pushes interim transcriptions. -
Added
voice_cloning_key
toGoogleTTSService
to support custom cloned voices. -
Added
speaking_rate
toGoogleTTSService.InputParams
to control the speaking rate. -
Added a
speed
arg toOpenAITTSService
to control the speed of the voice response. -
Added
FrameProcessor.push_interruption_task_frame_and_wait()
. Use this method to programatically interrupt the bot from any part of the pipeline. This guarantees that all the processors in the pipeline are interrupted in order (from upstream to downstream). Internally, this works by first pushing anInterruptionTaskFrame
upstream until it reaches the pipeline task. The pipeline task then generates anInterruptionFrame
, which flows downstream through all processors. Once theInterruptionFrame
has reaches the processor waiting for the interruption, the function returns and execution continues after the call. Think of it as sending an upstream request for interruption and waiting until the acknowledgment flows back downstream. -
Added new base
TaskFrame
(which is a system frame). This is the base class for all task frames (EndTaskFrame
,CancelTaskFrame
, etc.) that are meant to be pushed upstream to reach the pipeline task. -
Expanded support for universal
LLMContext
to the AWS Bedrock LLM service. Using the universalLLMContext
and associatedLLMContextAggregatorPair
is a pre-requisite for usingLLMSwitcher
to switch between LLMs at runtime. -
Added new fields to the development runner's
parse_telephony_websocket
method in support of providing dynamic data to a bot.- Twilio: Added a new
body
parameter, which parses the websocket message forcustomParameters
. Provide data via theParameter
nouns in your TwiML to use this feature. - Telnyx & Exotel: Both providers make the
to
andfrom
phone numbers available in the websocket messages. You can now access these numbers ascall_data["to"]
andcall_data["from"]
.
Note: Each telephony provider offers different features. Refer to the corresponding example in
pipecat-examples
to see how to pass custom data to your bot. - Twilio: Added a new
-
Added
body
to theWebsocketRunnerArguments
as an optional parameter. Custombody
information can be passed from the server into the bot file via thebot()
method using this new parameter. -
Added video streaming support to
LiveKitTransport
. -
Added
OpenAIRealtimeLLMService
andAzureRealtimeLLMService
which provide access to OpenAI Realtime.
Changed
pipeline.tests.utils.run_test()
now allows passingPipelineParams
instead of individual parameters.
Removed
- Remove
VisionImageRawFrame
in favor of context frames (LLMContextFrame
orOpenAILLMContextFrame
).
Deprecated
-
BotInterruptionFrame
is now deprecated, useInterruptionTaskFrame
instead. -
StartInterruptionFrame
is now deprected, useInterruptionFrame
instead. -
Deprecate
VisionImageFrameAggregator
becauseVisionImageRawFrame
has been removed. See the12*
examples for the new recommended replacement pattern. -
NoisereduceFilter
is now deprecated and will be removed in a future version. Use other audio filters likeKrispFilter
orAICFilter
. -
Deprecated
OpenAIRealtimeBetaLLMService
andAzureRealtimeBetaLLMService
. UseOpenAIRealtimeLLMService
andAzureRealtimeLLMService
, respectively. Each service will be removed in an upcoming version, 1.0.0.
Fixed
-
Fixed a
BaseOutputTransport
issue that caused incorrect detection of when the bot stopped talking while using an audio mixer. -
Fixed a
LiveKitTransport
issue where RTVI messages were not properly encoded. -
Add additional fixups to Mistral context messages to ensure they meet Mistral-specific requirements, avoiding Mistral "invalid request" errors.
-
Fixed
DailyTransport
transcription handling to gracefully handle missingrawResponse
field in transcription messages, preventing KeyError crashes.