update cosmetic changelog updates for 0.0.99

This commit is contained in:
Aleix Conchillo Flaqué
2026-01-13 16:59:46 -08:00
parent 4531d517da
commit 7e1b4a4e90

View File

@@ -15,13 +15,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
turn starts or stops. In conversational agents, these are often referred to turn starts or stops. In conversational agents, these are often referred to
as start/stop speaking or turn-taking plans or policies. as start/stop speaking or turn-taking plans or policies.
User turn start strategies indicate when the user starts speaking (e.g. User turn start strategies indicate when the user starts speaking (e.g.
using VAD events or when a user says one or more words). using VAD events or when a user says one or more words).
User turn stop strategies indicate when the user stops speaking (e.g. using User turn stop strategies indicate when the user stops speaking (e.g. using
an end-of-turn detection model or by observing incoming transcriptions). an end-of-turn detection model or by observing incoming transcriptions).
A list of strategies can be specified for both strategies; strategies are A list of strategies can be specified for both strategies; strategies are
evaluated in order until one evaluates to true. evaluated in order until one evaluates to true.
Available user turn start strategies: Available user turn start strategies:
@@ -40,7 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- start: [VADUserTurnStartStrategy, TranscriptionUserTurnStartStrategy] - start: [VADUserTurnStartStrategy, TranscriptionUserTurnStartStrategy]
- stop: [TranscriptionUserTurnStopStrategy] - stop: [TranscriptionUserTurnStopStrategy]
Turn strategies are configured when setting up `LLMContextAggregatorPair`. urn strategies are configured when setting up `LLMContextAggregatorPair`.
For example: For example:
```python ```python
@@ -58,13 +58,13 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
) )
``` ```
In order to use the user turn strategies you must update to the new In order to use the user turn strategies you must update to the new
universal `LLMContext` and `LLMContextAggregatorPair`. universal `LLMContext` and `LLMContextAggregatorPair`.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- Added `RNNoiseFilter` for real-time noise suppression using RNNoise neural - Added `RNNoiseFilter` for real-time noise suppression using RNNoise neural
network via pyrnnoise library. network via pyrnnoise library.
(PR [#3205](https://github.com/pipecat-ai/pipecat/pull/3205)) (PR [#3205](https://github.com/pipecat-ai/pipecat/pull/3205))
- Added `GrokRealtimeLLMService` for xAI's Grok Voice Agent API with real-time - Added `GrokRealtimeLLMService` for xAI's Grok Voice Agent API with real-time
voice conversations: voice conversations:
@@ -75,31 +75,31 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
- Built-in tools support: web_search, x_search, file_search - Built-in tools support: web_search, x_search, file_search
- Custom function calling with standard Pipecat tools schema - Custom function calling with standard Pipecat tools schema
- Configurable audio formats (PCM at 8kHz-48kHz) - Configurable audio formats (PCM at 8kHz-48kHz)
(PR [#3267](https://github.com/pipecat-ai/pipecat/pull/3267)) (PR [#3267](https://github.com/pipecat-ai/pipecat/pull/3267))
- Added an approximation of TTFB for Ultravox. - Added an approximation of TTFB for Ultravox.
(PR [#3268](https://github.com/pipecat-ai/pipecat/pull/3268)) (PR [#3268](https://github.com/pipecat-ai/pipecat/pull/3268))
- Added a new `AudioContextTTSService` to the TTS service base classes. The - Added a new `AudioContextTTSService` to the TTS service base classes. The
`AudioContextWordTTSService` now inherits from `AudioContextTTSService` and `AudioContextWordTTSService` now inherits from `AudioContextTTSService` and
`WebsocketWordTTSService`. `WebsocketWordTTSService`.
(PR [#3289](https://github.com/pipecat-ai/pipecat/pull/3289)) (PR [#3289](https://github.com/pipecat-ai/pipecat/pull/3289))
- `LLMUserAggregator` now exposes the following events: - `LLMUserAggregator` now exposes the following events:
- `on_user_turn_started`: triggered when a user turn starts - `on_user_turn_started`: triggered when a user turn starts
- `on_user_turn_stopped`: triggered when a user turn ends - `on_user_turn_stopped`: triggered when a user turn ends
- `on_user_turn_stop_timeout`: triggered when a user turn does not stop - `on_user_turn_stop_timeout`: triggered when a user turn does not stop
and times out and times out
(PR [#3291](https://github.com/pipecat-ai/pipecat/pull/3291)) (PR [#3291](https://github.com/pipecat-ai/pipecat/pull/3291))
- Introducing user mute strategies. User mute strategies indicate when user - Introducing user mute strategies. User mute strategies indicate when user
input should be muted based on the current system state. input should be muted based on the current system state.
In conversational agents, user mute strategies are used to prevent user In conversational agents, user mute strategies are used to prevent user
input from interrupting bot speech, tool execution, or other critical system input from interrupting bot speech, tool execution, or other critical system
operations. operations.
A list of strategies can be specified; all strategies are evaluated for A list of strategies can be specified; all strategies are evaluated for
every frame so that each strategy can maintain its internal state. A user every frame so that each strategy can maintain its internal state. A user
frame is muted if any of the configured strategies indicates it should be frame is muted if any of the configured strategies indicates it should be
muted. muted.
@@ -111,10 +111,10 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
* `AlwaysUserMuteStrategy` * `AlwaysUserMuteStrategy`
* `FunctionCallUserMuteStrategy` * `FunctionCallUserMuteStrategy`
User mute strategies replace the legacy `STTMuteFilter` and provide a more User mute strategies replace the legacy `STTMuteFilter` and provide a more
flexible and composable approach to muting user input. flexible and composable approach to muting user input.
User mute strategies are configured when setting up the User mute strategies are configured when setting up the
`LLMContextAggregatorPair`. For example: `LLMContextAggregatorPair`. For example:
```python ```python
@@ -128,35 +128,35 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
) )
``` ```
In order to use user mute strategies you should update to the new universal In order to use user mute strategies you should update to the new universal
`LLMContext` and `LLMContextAggregatorPair`. `LLMContext` and `LLMContextAggregatorPair`.
(PR [#3292](https://github.com/pipecat-ai/pipecat/pull/3292)) (PR [#3292](https://github.com/pipecat-ai/pipecat/pull/3292))
- Added `use_ssl` parameter to `NvidiaSTTService`, `NvidiaSegmentedSTTService` - Added `use_ssl` parameter to `NvidiaSTTService`, `NvidiaSegmentedSTTService`
and `NvidiaTTSService`. and `NvidiaTTSService`.
(PR [#3300](https://github.com/pipecat-ai/pipecat/pull/3300)) (PR [#3300](https://github.com/pipecat-ai/pipecat/pull/3300))
- Added `enable_interruptions` constructor argument to all user turn - Added `enable_interruptions` constructor argument to all user turn
strategies. This tells the `LLMUserAggregator` to push or not push an strategies. This tells the `LLMUserAggregator` to push or not push an
`InterruptionFrame`. `InterruptionFrame`.
(PR [#3316](https://github.com/pipecat-ai/pipecat/pull/3316)) (PR [#3316](https://github.com/pipecat-ai/pipecat/pull/3316))
- Added `split_sentences` parameter to `SpeechmaticsSTTService` to control - Added `split_sentences` parameter to `SpeechmaticsSTTService` to control
sentence splitting behavior for finals on sentence boundaries. sentence splitting behavior for finals on sentence boundaries.
(PR [#3328](https://github.com/pipecat-ai/pipecat/pull/3328)) (PR [#3328](https://github.com/pipecat-ai/pipecat/pull/3328))
- Added word-level timestamp support to `AzureTTSService` for accurate - Added word-level timestamp support to `AzureTTSService` for accurate
text-to-audio synchronization. text-to-audio synchronization.
(PR [#3334](https://github.com/pipecat-ai/pipecat/pull/3334)) (PR [#3334](https://github.com/pipecat-ai/pipecat/pull/3334))
- Added `pronunciation_dict_id` parameter to `CartesiaTTSService.InputParams` - Added `pronunciation_dict_id` parameter to `CartesiaTTSService.InputParams`
and `CartesiaHttpTTSService.InputParams` to support Cartesia's pronunciation and `CartesiaHttpTTSService.InputParams` to support Cartesia's pronunciation
dictionary feature for custom pronunciations. dictionary feature for custom pronunciations.
(PR [#3346](https://github.com/pipecat-ai/pipecat/pull/3346)) (PR [#3346](https://github.com/pipecat-ai/pipecat/pull/3346))
- Added support for using the HeyGen LiveAvatar API with the `HeyGenTransport` - Added support for using the HeyGen LiveAvatar API with the `HeyGenTransport`
(see https://www.liveavatar.com/). (see https://www.liveavatar.com/).
(PR [#3357](https://github.com/pipecat-ai/pipecat/pull/3357)) (PR [#3357](https://github.com/pipecat-ai/pipecat/pull/3357))
- Added image support to `OpenAIRealtimeLLMService` via `InputImageRawFrame`: - Added image support to `OpenAIRealtimeLLMService` via `InputImageRawFrame`:
- New `start_video_paused` parameter to control initial video input state - New `start_video_paused` parameter to control initial video input state
@@ -166,37 +166,37 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
parameter. parameter.
- `set_video_input_paused()` method to pause/resume video input at runtime - `set_video_input_paused()` method to pause/resume video input at runtime
- `set_video_frame_detail()` method to adjust video frame quality - `set_video_frame_detail()` method to adjust video frame quality
dynamically dynamically
- Automatic rate limiting (1 frame per second) to prevent API overload - Automatic rate limiting (1 frame per second) to prevent API overload
(PR [#3360](https://github.com/pipecat-ai/pipecat/pull/3360)) (PR [#3360](https://github.com/pipecat-ai/pipecat/pull/3360))
- Added `UserTurnProcessor`, a frame processor built on `UserTurnController` - Added `UserTurnProcessor`, a frame processor built on `UserTurnController`
that pushes `UserStartedSpeakingFrame` and `UserStoppedSpeakingFrame` frames that pushes `UserStartedSpeakingFrame` and `UserStoppedSpeakingFrame` frames
and interruptions based on the controller's user turn strategies. and interruptions based on the controller's user turn strategies.
(PR [#3372](https://github.com/pipecat-ai/pipecat/pull/3372)) (PR [#3372](https://github.com/pipecat-ai/pipecat/pull/3372))
- Added `UserTurnController` to manage user turns. It emits - Added `UserTurnController` to manage user turns. It emits
`on_user_turn_started`, `on_user_turn_stopped`, and `on_user_turn_started`, `on_user_turn_stopped`, and
`on_user_turn_stop_timeout` events, and can be integrated into processors to `on_user_turn_stop_timeout` events, and can be integrated into processors to
detect and handle user turns. `LLMUserAggregator` and `UserTurnProcessor` are detect and handle user turns. `LLMUserAggregator` and `UserTurnProcessor` are
implemented using this controller. implemented using this controller.
(PR [#3372](https://github.com/pipecat-ai/pipecat/pull/3372)) (PR [#3372](https://github.com/pipecat-ai/pipecat/pull/3372))
- Added `should_interrupt` property to `DeepgramFluxSTTService`, - Added `should_interrupt` property to `DeepgramFluxSTTService`,
`DeepgramSTTService`, and `SpeechmaticsSTTService` to configure whether the `DeepgramSTTService`, and `SpeechmaticsSTTService` to configure whether the
bot should be interrupted when the external service detects user speech. bot should be interrupted when the external service detects user speech.
(PR [#3374](https://github.com/pipecat-ai/pipecat/pull/3374)) (PR [#3374](https://github.com/pipecat-ai/pipecat/pull/3374))
- `LLMAssistantAggregator` now exposes the following events: - `LLMAssistantAggregator` now exposes the following events:
- `on_assistant_turn_started`: triggered when the assistant turn starts - `on_assistant_turn_started`: triggered when the assistant turn starts
- `on_assistant_turn_stopped`: triggered when the assistant turn ends - `on_assistant_turn_stopped`: triggered when the assistant turn ends
- `on_assistant_thought`: triggered when there's an assistant thought - `on_assistant_thought`: triggered when there's an assistant thought
available available
(PR [#3385](https://github.com/pipecat-ai/pipecat/pull/3385)) (PR [#3385](https://github.com/pipecat-ai/pipecat/pull/3385))
- Added `KrispVivaTurn` analyzer for end of turn detection using the Krisp VIVA - Added `KrispVivaTurn` analyzer for end of turn detection using the Krisp VIVA
SDK (requires `krisp_audio`). SDK (requires `krisp_audio`).
(PR [#3391](https://github.com/pipecat-ai/pipecat/pull/3391)) (PR [#3391](https://github.com/pipecat-ai/pipecat/pull/3391))
- Added support for setting up a pipeline task from external files. You can now - Added support for setting up a pipeline task from external files. You can now
register custom pipeline task setup files by setting the register custom pipeline task setup files by setting the
@@ -209,30 +209,30 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
async def setup_pipeline_task(task: PipelineTask): async def setup_pipeline_task(task: PipelineTask):
... ...
``` ```
(PR [#3397](https://github.com/pipecat-ai/pipecat/pull/3397)) (PR [#3397](https://github.com/pipecat-ai/pipecat/pull/3397))
- Added a keepalive task for `InworldTTSService` to keep the service connected - Added a keepalive task for `InworldTTSService` to keep the service connected
in the event of no generations for longer periods of time. in the event of no generations for longer periods of time.
(PR [#3403](https://github.com/pipecat-ai/pipecat/pull/3403)) (PR [#3403](https://github.com/pipecat-ai/pipecat/pull/3403))
- Added `enable_vad` to `Params` for use in the `GladiaSTTService`. When - Added `enable_vad` to `Params` for use in the `GladiaSTTService`. When
enabled, `GladiaSTTService` acts as the turn controller, emitting enabled, `GladiaSTTService` acts as the turn controller, emitting
`UserStartedSpeakingFrame`, `UserStoppedSpeakingFrame`, and optionally `UserStartedSpeakingFrame`, `UserStoppedSpeakingFrame`, and optionally
`InterruptionFrame`. `InterruptionFrame`.
(PR [#3404](https://github.com/pipecat-ai/pipecat/pull/3404)) (PR [#3404](https://github.com/pipecat-ai/pipecat/pull/3404))
- Added `should_interrupt` property to `GladiaSTTService` to configure whether - Added `should_interrupt` property to `GladiaSTTService` to configure whether
the bot should be interrupted when the external service detects user speech. the bot should be interrupted when the external service detects user speech.
(PR [#3404](https://github.com/pipecat-ai/pipecat/pull/3404)) (PR [#3404](https://github.com/pipecat-ai/pipecat/pull/3404))
- Added `VonageFrameSerializer` for the Vonage Video API Audio Connector - Added `VonageFrameSerializer` for the Vonage Video API Audio Connector
WebSocket protocol. WebSocket protocol.
(PR [#3410](https://github.com/pipecat-ai/pipecat/pull/3410)) (PR [#3410](https://github.com/pipecat-ai/pipecat/pull/3410))
- Added `append_trailing_space` parameter to `TTSService` to automatically - Added `append_trailing_space` parameter to `TTSService` to automatically
append a trailing space to text before sending to TTS, helping prevent some append a trailing space to text before sending to TTS, helping prevent some
services from vocalizing trailing punctuation. services from vocalizing trailing punctuation.
(PR [#3424](https://github.com/pipecat-ai/pipecat/pull/3424)) (PR [#3424](https://github.com/pipecat-ai/pipecat/pull/3424))
### Changed ### Changed
@@ -244,16 +244,13 @@ turn_analyzer=LocalSmartTurnAnalyzerV3(params=SmartTurnParams())
include_language_detection=True include_language_detection=True
) )
``` ```
(PR [#3216](https://github.com/pipecat-ai/pipecat/pull/3216)) (PR [#3216](https://github.com/pipecat-ai/pipecat/pull/3216))
- Updated `SpeechmaticsSTTService` to use new Python Voice SDK with improved - Updated `SpeechmaticsSTTService` to use new Python Voice SDK with improved
VAD, VAD, Smart Turn capabilities, and brings dramatic improvements to latency
Smart Turn capabilities, and brings dramatic improvements to latency without any impact on accuracy. Use the `turn_detection_mode` parameter to control
without the endpointing of speech, with `TurnDetectionMode.EXTERNAL` (default),
any impact on accuracy. Use the `turn_detection_mode` parameter to control `TurnDetectionMode.ADAPTIVE`, or `TurnDetectionMode.SMART_TURN`.
the
endpointing of speech, with `TurnDetectionMode.EXTERNAL` (default),
`TurnDetectionMode.ADAPTIVE`, or `TurnDetectionMode.SMART_TURN`.
```python ```python
stt = SpeechmaticsSTTService( stt = SpeechmaticsSTTService(
api_key=os.getenv("SPEECHMATICS_API_KEY"), api_key=os.getenv("SPEECHMATICS_API_KEY"),
@@ -264,126 +261,119 @@ turn_detection_mode=SpeechmaticsSTTService.TurnDetectionMode.ADAPTIVE,
), ),
) )
``` ```
(PR [#3225](https://github.com/pipecat-ai/pipecat/pull/3225)) (PR [#3225](https://github.com/pipecat-ai/pipecat/pull/3225))
- `daily-python` updated to 0.23.0. - `daily-python` updated to 0.23.0.
(PR [#3257](https://github.com/pipecat-ai/pipecat/pull/3257)) (PR [#3257](https://github.com/pipecat-ai/pipecat/pull/3257))
- `TranscriptionFrame` and `InterimTranscriptionFrame` produced by - `TranscriptionFrame` and `InterimTranscriptionFrame` produced by
`DailyTransport` now include the transport source (i.e., the originating `DailyTransport` now include the transport source (i.e., the originating
audio track). audio track).
(PR [#3257](https://github.com/pipecat-ai/pipecat/pull/3257)) (PR [#3257](https://github.com/pipecat-ai/pipecat/pull/3257))
- Updates to Inworld TTS services: - Updates to Inworld TTS services:
- Improved `InworldTTSService`'s websocket implementation to better flush - Improved `InworldTTSService`'s websocket implementation to better flush
and and close context to better handle long inputs.
close context to better handle long inputs.
- Improved docstrings for `InworldTTSService` and `InworldHttpTTSService`. - Improved docstrings for `InworldTTSService` and `InworldHttpTTSService`.
(PR [#3288](https://github.com/pipecat-ai/pipecat/pull/3288)) (PR [#3288](https://github.com/pipecat-ai/pipecat/pull/3288))
- Updated `DeepgramSTTService` to push user started/stopped speaking and - Updated `DeepgramSTTService` to push user started/stopped speaking and
interruption frames when `vad_enabled` is set to true. This centralizes the interruption frames when `vad_enabled` is set to true. This centralizes the
frames into the service, removing the need to have your application code frames into the service, removing the need to have your application code
handle Deepgram's events and push these frames. handle Deepgram's events and push these frames.
(PR [#3314](https://github.com/pipecat-ai/pipecat/pull/3314)) (PR [#3314](https://github.com/pipecat-ai/pipecat/pull/3314))
- Added encoding validation to `DeepgramTTSService` to prevent unsupported - Added encoding validation to `DeepgramTTSService` to prevent unsupported
encodings from reaching the API. The service now raises `ValueError` at encodings from reaching the API. The service now raises `ValueError` at
initialization with a clear error message. initialization with a clear error message.
(PR [#3329](https://github.com/pipecat-ai/pipecat/pull/3329)) (PR [#3329](https://github.com/pipecat-ai/pipecat/pull/3329))
- Updated `read_audio_frame` & `read_video_frame` methods in - Updated `read_audio_frame` & `read_video_frame` methods in
`SmallWebRTCClient` to check if the track is enabled before logging a `SmallWebRTCClient` to check if the track is enabled before logging a
warning. warning.
(PR [#3336](https://github.com/pipecat-ai/pipecat/pull/3336)) (PR [#3336](https://github.com/pipecat-ai/pipecat/pull/3336))
- Updated `CartesiaTTSService` to support setting `language=None`, resulting in - Updated `CartesiaTTSService` to support setting `language=None`, resulting in
Cartesia auto-detecting the language of the conversation. Cartesia auto-detecting the language of the conversation.
(PR [#3366](https://github.com/pipecat-ai/pipecat/pull/3366)) (PR [#3366](https://github.com/pipecat-ai/pipecat/pull/3366))
- The bundled Smart Turn weights are now updated to v3.2, which has better - The bundled Smart Turn weights are now updated to v3.2, which has better
handling of short utterances, and is more robust against background handling of short utterances, and is more robust against background noise.
noise. (PR [#3367](https://github.com/pipecat-ai/pipecat/pull/3367))
(PR [#3367](https://github.com/pipecat-ai/pipecat/pull/3367))
- Updated `SpeechmaticsSTTService` dependency to - Updated `SpeechmaticsSTTService` dependency to `speechmatics-voice[smart]>=0.2.6`
`speechmatics-voice[smart]>=0.2.6` (PR [#3371](https://github.com/pipecat-ai/pipecat/pull/3371))
(PR [#3371](https://github.com/pipecat-ai/pipecat/pull/3371))
- Smart Turn now takes into account `vad_start_seconds` when buffering audio, - Smart Turn now takes into account `vad_start_seconds` when buffering audio,
meaning that the start of the turn audio is not cut off. This improves meaning that the start of the turn audio is not cut off. This improves
accuracy for short utterances. accuracy for short utterances.
- The default value of `pre_speech_ms` is now set to 500ms for Smart Turn.
- The default value of `pre_speech_ms` is now set to 500ms for Smart Turn. (PR [#3377](https://github.com/pipecat-ai/pipecat/pull/3377))
(PR [#3377](https://github.com/pipecat-ai/pipecat/pull/3377))
- Improved Krisp SDK management to allow `KrispVivaTurn` and `KrispVivaFilter` - Improved Krisp SDK management to allow `KrispVivaTurn` and `KrispVivaFilter`
to share a single SDK instance within the same process. to share a single SDK instance within the same process.
(PR [#3391](https://github.com/pipecat-ai/pipecat/pull/3391)) (PR [#3391](https://github.com/pipecat-ai/pipecat/pull/3391))
- Updated default model for `GroqTTSService` to `canopylabs/orpheus-v1-english` - Updated default model for `GroqTTSService` to `canopylabs/orpheus-v1-english`
and voice ID to `autumn`. and voice ID to `autumn`.
(PR [#3399](https://github.com/pipecat-ai/pipecat/pull/3399)) (PR [#3399](https://github.com/pipecat-ai/pipecat/pull/3399))
- Enhanced `FastAPIWebsocketTransport` with optional protocol-level audio - Enhanced `FastAPIWebsocketTransport` with optional protocol-level audio
packetization via the `fixed_audio_packet_size` parameter to support media packetization via the `fixed_audio_packet_size` parameter to support media
endpoints requiring strict framing and real-time pacing. endpoints requiring strict framing and real-time pacing.
(PR [#3410](https://github.com/pipecat-ai/pipecat/pull/3410)) (PR [#3410](https://github.com/pipecat-ai/pipecat/pull/3410))
- `DeepgramTTSService` and `RimeTTSService` now set `append_trailing_space` to - `DeepgramTTSService` and `RimeTTSService` now set `append_trailing_space` to
`True` to prevent punctuation (e.g., “dot”) from being pronounced. `True` to prevent punctuation (e.g., “dot”) from being pronounced.
(PR [#3424](https://github.com/pipecat-ai/pipecat/pull/3424)) (PR [#3424](https://github.com/pipecat-ai/pipecat/pull/3424))
- Updated `GeminiLiveLLMService` to push `LLMThoughtStartFrame`, - Updated `GeminiLiveLLMService` to push `LLMThoughtStartFrame`,
`LLMThoughtTextFrame`, and `LLMThoughtEndFrame` when the model returns `LLMThoughtTextFrame`, and `LLMThoughtEndFrame` when the model returns
thought content. thought content.
(PR [#3431](https://github.com/pipecat-ai/pipecat/pull/3431)) (PR [#3431](https://github.com/pipecat-ai/pipecat/pull/3431))
### Deprecated ### Deprecated
- `pipecat.audio.interruptions.MinWordsInterruptionStrategy` is deprecated. Use - `pipecat.audio.interruptions.MinWordsInterruptionStrategy` is deprecated. Use
`pipecat.turns.user_start.MinWordsUserTurnStartStrategy` with `pipecat.turns.user_start.MinWordsUserTurnStartStrategy` with
`LLMUserAggregator`'s new `user_turn_strategies` parameter instead. `LLMUserAggregator`'s new `user_turn_strategies` parameter instead.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- `FrameProcessor.interruption_strategies` is deprecated, use - `FrameProcessor.interruption_strategies` is deprecated, use
`LLMUserAggregator`'s new `user_turn_strategies` parameter instead. `LLMUserAggregator`'s new `user_turn_strategies` parameter instead.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- The `LLMUserAggregatorParams` and `LLMAssistantAggregatorParams` classes in - The `LLMUserAggregatorParams` and `LLMAssistantAggregatorParams` classes in
`pipecat.processors.aggregators.llm_response` are now deprecated. Use the new `pipecat.processors.aggregators.llm_response` are now deprecated. Use the new
universal `LLMContext` and `LLMContextAggregatorPair` instead. universal `LLMContext` and `LLMContextAggregatorPair` instead.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- Deprecated the `emulated` field in the `UserStartedSpeakingFrame` and - Deprecated the `emulated` field in the `UserStartedSpeakingFrame` and
`UserStoppedSpeakingFrame` frames. `UserStoppedSpeakingFrame` frames.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- `EmulateUserStartedSpeakingFrame` and `EmulateUserStoppedSpeakingFrame` - `EmulateUserStartedSpeakingFrame` and `EmulateUserStoppedSpeakingFrame`
frames are deprecated. frames are deprecated.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- ⚠️ `TransportParams.turn_analyzer` is deprecated and might result in - ⚠️ `TransportParams.turn_analyzer` is deprecated and might result in
unexpected behavior, use `LLMUserAggregator`'s new `user_turn_strategies` unexpected behavior, use `LLMUserAggregator`'s new `user_turn_strategies`
parameter instead. parameter instead.
(PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045)) (PR [#3045](https://github.com/pipecat-ai/pipecat/pull/3045))
- For `SpeechmaticsSTTService`, the `end_of_utterance_mode` parameter is - For `SpeechmaticsSTTService`, the `end_of_utterance_mode` parameter is
deprecated. deprecated. Use the new `turn_detection_mode` parameter instead, with
Use the new `turn_detection_mode` parameter instead, with `TurnDetectionMode.EXTERNAL`,`TurnDetectionMode.ADAPTIVE`, or
`TurnDetectionMode.EXTERNAL`, `TurnDetectionMode.SMART_TURN`. The `enable_vad` parameter is also
`TurnDetectionMode.ADAPTIVE`, or `TurnDetectionMode.SMART_TURN`. The deprecated and is inferred from the `turn_detection_mode`.
`enable_vad` (PR [#3225](https://github.com/pipecat-ai/pipecat/pull/3225))
parameter is also deprecated and is inferred from the
`turn_detection_mode`.
(PR [#3225](https://github.com/pipecat-ai/pipecat/pull/3225))
- `OpenAILLMContext` and its associated things (context aggregators, etc.) are - `OpenAILLMContext` and its associated things (context aggregators, etc.) are
now deprecated in favor of the universal `LLMContext` and its associated now deprecated in favor of the universal `LLMContext` and its associated
things. things.
From the developer's point of view, switching to using `LLMContext` From the developer's point of view, switching to using `LLMContext`
machinery will usually be a matter of going from this: machinery will usually be a matter of going from this:
```python ```python
@@ -397,15 +387,15 @@ turn_detection_mode=SpeechmaticsSTTService.TurnDetectionMode.ADAPTIVE,
context = LLMContext(messages, tools) context = LLMContext(messages, tools)
context_aggregator = LLMContextAggregatorPair(context) context_aggregator = LLMContextAggregatorPair(context)
``` ```
(PR [#3263](https://github.com/pipecat-ai/pipecat/pull/3263)) (PR [#3263](https://github.com/pipecat-ai/pipecat/pull/3263))
- `STTMuteFilter` is deprecated and will be removed in a future version. Use - `STTMuteFilter` is deprecated and will be removed in a future version. Use
`LLMUserAggregator`'s new `user_mute_strategies` instead. `LLMUserAggregator`'s new `user_mute_strategies` instead.
(PR [#3292](https://github.com/pipecat-ai/pipecat/pull/3292)) (PR [#3292](https://github.com/pipecat-ai/pipecat/pull/3292))
- `FrameProcessor.interruptions_allowed` is now deprecated, use - `FrameProcessor.interruptions_allowed` is now deprecated, use
`LLMUserAggregator`'s new parameter `user_mute_strategies` instead. `LLMUserAggregator`'s new parameter `user_mute_strategies` instead.
(PR [#3297](https://github.com/pipecat-ai/pipecat/pull/3297)) (PR [#3297](https://github.com/pipecat-ai/pipecat/pull/3297))
- `PipelineParams.allow_interruptions` is now deprecated, use - `PipelineParams.allow_interruptions` is now deprecated, use
`LLMUserAggregator`'s new parameter `user_turn_strategies` instead. For `LLMUserAggregator`'s new parameter `user_turn_strategies` instead. For
@@ -421,95 +411,95 @@ start=[TranscriptionUserTurnStartStrategy(enable_interruptions=False)],
), ),
) )
``` ```
(PR [#3297](https://github.com/pipecat-ai/pipecat/pull/3297)) (PR [#3297](https://github.com/pipecat-ai/pipecat/pull/3297))
- `TranscriptProcessor` and related data classes and frames - `TranscriptProcessor` and related data classes and frames
(`TranscriptionMessage`, `ThoughtTranscriptionMessage`, (`TranscriptionMessage`, `ThoughtTranscriptionMessage`,
`TranscriptionUpdateFrame`) are deprecated. Use `LLMUserAggregator`'s and `TranscriptionUpdateFrame`) are deprecated. Use `LLMUserAggregator`'s and
`LLMAssistantAggregator`'s new events (`on_user_turn_stopped` and `LLMAssistantAggregator`'s new events (`on_user_turn_stopped` and
`on_assistant_turn_stopped`) instead. `on_assistant_turn_stopped`) instead.
(PR [#3385](https://github.com/pipecat-ai/pipecat/pull/3385)) (PR [#3385](https://github.com/pipecat-ai/pipecat/pull/3385))
- Deprecated support for the `vad_events` `LiveOptions` in - Deprecated support for the `vad_events` `LiveOptions` in
`DeepgramSTTService`. Instead, use a local Silero VAD for VAD events. `DeepgramSTTService`. Instead, use a local Silero VAD for VAD events.
Additionally, deprecated `should_interrupt` which will be removed along with Additionally, deprecated `should_interrupt` which will be removed along with
`vad_events` support in a future release. `vad_events` support in a future release.
(PR [#3386](https://github.com/pipecat-ai/pipecat/pull/3386)) (PR [#3386](https://github.com/pipecat-ai/pipecat/pull/3386))
- Loading external observers from files is deprecated, use the new pipeline - Loading external observers from files is deprecated, use the new pipeline
task setup files and `PIPECAT_SETUP_FILES` environment variable instead. task setup files and `PIPECAT_SETUP_FILES` environment variable instead.
(PR [#3397](https://github.com/pipecat-ai/pipecat/pull/3397)) (PR [#3397](https://github.com/pipecat-ai/pipecat/pull/3397))
### Fixed ### Fixed
- Improved error handling in `ElevenLabsRealtimeSTTService` - Improved error handling in `ElevenLabsRealtimeSTTService`
- Fixed an issue in `ElevenLabsRealtimeSTTService` causing an infinite loop - Fixed an issue in `ElevenLabsRealtimeSTTService` causing an infinite loop
that blocks the process if the websocket disconnects due to an error that blocks the process if the websocket disconnects due to an error
(PR [#3233](https://github.com/pipecat-ai/pipecat/pull/3233)) (PR [#3233](https://github.com/pipecat-ai/pipecat/pull/3233))
- Fixed a bug in `STTMuteFilter` where the user was not always muted during - Fixed a bug in `STTMuteFilter` where the user was not always muted during
function calls, especially when there were multiple simultaneous calls. function calls, especially when there were multiple simultaneous calls.
(PR [#3292](https://github.com/pipecat-ai/pipecat/pull/3292)) (PR [#3292](https://github.com/pipecat-ai/pipecat/pull/3292))
- Fixed a `RNNoiseFilter` issue that would cause a "[Errno 12] Cannot allocate - Fixed a `RNNoiseFilter` issue that would cause a "[Errno 12] Cannot allocate
memory" error when processing silence audio frames. memory" error when processing silence audio frames.
(PR [#3322](https://github.com/pipecat-ai/pipecat/pull/3322)) (PR [#3322](https://github.com/pipecat-ai/pipecat/pull/3322))
- Updated `SpeechmaticsSTTService` for version `0.0.99+`: - Updated `SpeechmaticsSTTService` for version `0.0.99+`:
- Fixed `SpeechmaticsSTTService` to listen for - Fixed `SpeechmaticsSTTService` to listen for `VADUserStoppedSpeakingFrame`
`VADUserStoppedSpeakingFrame` in order to finalize transcription. in order to finalize transcription.
- Default to `TurnDetectionMode.FIXED` for Pipecat-controlled end of turn - Default to `TurnDetectionMode.FIXED` for Pipecat-controlled end of turn
detection. detection.
- Only emit VAD + interruption frames if VAD is enabled within the plugin - Only emit VAD + interruption frames if VAD is enabled within the plugin
(modes other than `TurnDetectionMode.FIXED` or `TurnDetectionMode.EXTERNAL`). (modes other than `TurnDetectionMode.FIXED` or `TurnDetectionMode.EXTERNAL`).
(PR [#3328](https://github.com/pipecat-ai/pipecat/pull/3328)) (PR [#3328](https://github.com/pipecat-ai/pipecat/pull/3328))
- Fixed an issue with function calling where a handler failing to invoke its - Fixed an issue with function calling where a handler failing to invoke its
result callback could leave the context stuck in IN_PROGRESS, causing LLM result callback could leave the context stuck in IN_PROGRESS, causing LLM
inference for subsequent function call results to block while waiting on the inference for subsequent function call results to block while waiting on the
unresolved call. unresolved call.
(PR [#3343](https://github.com/pipecat-ai/pipecat/pull/3343)) (PR [#3343](https://github.com/pipecat-ai/pipecat/pull/3343))
- Fixed an issue with DeepgramTTSService where the model would output "Dot" - Fixed an issue with DeepgramTTSService where the model would output "Dot"
instead of a period in some circumstances. instead of a period in some circumstances.
(PR [#3345](https://github.com/pipecat-ai/pipecat/pull/3345)) (PR [#3345](https://github.com/pipecat-ai/pipecat/pull/3345))
- Fixed an issue in `traced_stt` where `model_name` in OpenTelemetry appears as - Fixed an issue in `traced_stt` where `model_name` in OpenTelemetry appears as
`unknown`. `unknown`.
(PR [#3351](https://github.com/pipecat-ai/pipecat/pull/3351)) (PR [#3351](https://github.com/pipecat-ai/pipecat/pull/3351))
- Fixed an issue in GeminiLiveLLMService where TranscriptionFrames were - Fixed an issue in GeminiLiveLLMService where TranscriptionFrames were
occasionally not pushed. occasionally not pushed.
(PR [#3356](https://github.com/pipecat-ai/pipecat/pull/3356)) (PR [#3356](https://github.com/pipecat-ai/pipecat/pull/3356))
- Fixed potential memory leaks and initialization issues in `KrispVivaFilter` - Fixed potential memory leaks and initialization issues in `KrispVivaFilter`
by improving SDK lifecycle management. by improving SDK lifecycle management.
(PR [#3391](https://github.com/pipecat-ai/pipecat/pull/3391)) (PR [#3391](https://github.com/pipecat-ai/pipecat/pull/3391))
- Fixed timing issue in `BaseOutputTransport` where the bot speaking flag was - Fixed timing issue in `BaseOutputTransport` where the bot speaking flag was
set after awaiting, allowing the event loop to re-enter the method before the set after awaiting, allowing the event loop to re-enter the method before the
guard was set. guard was set.
(PR [#3400](https://github.com/pipecat-ai/pipecat/pull/3400)) (PR [#3400](https://github.com/pipecat-ai/pipecat/pull/3400))
- Fixed an issue in `traced_llm` where `model_name` in OpenTelemetry appears as - Fixed an issue in `traced_llm` where `model_name` in OpenTelemetry appears as
`unknown`. `unknown`.
(PR [#3422](https://github.com/pipecat-ai/pipecat/pull/3422)) (PR [#3422](https://github.com/pipecat-ai/pipecat/pull/3422))
- Fixed an issue in `traced_tts`, `traced_gemini_live`, and - Fixed an issue in `traced_tts`, `traced_gemini_live`, and
`traced_openai_realtime` where `model_name` in OpenTelemetry appears as `traced_openai_realtime` where `model_name` in OpenTelemetry appears as
`unknown`. `unknown`.
(PR [#3428](https://github.com/pipecat-ai/pipecat/pull/3428)) (PR [#3428](https://github.com/pipecat-ai/pipecat/pull/3428))
- Fixed `request_image_frame` (for backwards compatibility) and restored - Fixed `request_image_frame` (for backwards compatibility) and restored
function-callrelated fields in `UserImageRequestFrame` and function-callrelated fields in `UserImageRequestFrame` and
`UserImageRawFrame`, preventing a case where adding a non-LLM message to the `UserImageRawFrame`, preventing a case where adding a non-LLM message to the
context could trigger duplicate LLM inferences (on image arrival and on context could trigger duplicate LLM inferences (on image arrival and on
function-call result), potentially causing an infinite inference loop. function-call result), potentially causing an infinite inference loop.
(PR [#3430](https://github.com/pipecat-ai/pipecat/pull/3430)) (PR [#3430](https://github.com/pipecat-ai/pipecat/pull/3430))
- Fixed `LLMContext.create_audio_message()` by correcting an internal helper - Fixed `LLMContext.create_audio_message()` by correcting an internal helper
that was incorrectly declared async while being run in `asyncio.to_thread()`. that was incorrectly declared async while being run in `asyncio.to_thread()`.
(PR [#3435](https://github.com/pipecat-ai/pipecat/pull/3435)) (PR [#3435](https://github.com/pipecat-ai/pipecat/pull/3435))
### Other ### Other
@@ -518,16 +508,16 @@ start=[TranscriptionUserTurnStartStrategy(enable_interruptions=False)],
bot is not interruptible: as the user continues speaking, English bot is not interruptible: as the user continues speaking, English
transcriptions are queued, and the bot continuously translates and speaks transcriptions are queued, and the bot continuously translates and speaks
each queued sentence in Spanish without being interrupted by new user speech. each queued sentence in Spanish without being interrupted by new user speech.
(PR [#3316](https://github.com/pipecat-ai/pipecat/pull/3316)) (PR [#3316](https://github.com/pipecat-ai/pipecat/pull/3316))
- Added a new foundational example `53-concurrent-llm-evaluation.py` that shows - Added a new foundational example `53-concurrent-llm-evaluation.py` that shows
how to use `UserTurnProcessor`. how to use `UserTurnProcessor`.
(PR [#3372](https://github.com/pipecat-ai/pipecat/pull/3372)) (PR [#3372](https://github.com/pipecat-ai/pipecat/pull/3372))
- Added a new foundational example `28-user-assistant-turns.py` that shows how - Added a new foundational example `28-user-assistant-turns.py` that shows how
to use the new `LLMUserAggregator` and `LLMAssistantAggregator` events to to use the new `LLMUserAggregator` and `LLMAssistantAggregator` events to
gather a conversation transcript. gather a conversation transcript.
(PR [#3385](https://github.com/pipecat-ai/pipecat/pull/3385)) (PR [#3385](https://github.com/pipecat-ai/pipecat/pull/3385))
## [0.0.98] - 2025-12-17 ## [0.0.98] - 2025-12-17