diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d70f0682..cdb00fe34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,258 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [0.0.101] - 2026-01-30 + +### Added + +- Additions for `AICFilter` and `AICVADAnalyzer`: + - Added model downloading support to `AICFilter` with `model_id` and + `model_download_dir` parameters. + - Added `model_path` parameter to `AICFilter` for loading local `.aicmodel` + files. + - Added unit tests for `AICFilter` and `AICVADAnalyzer`. + (PR [#3408](https://github.com/pipecat-ai/pipecat/pull/3408)) + +- Added handling for `server_content.interrupted` signal in the Gemini Live + service for faster interruption response in the case where there isn't + already turn tracking in the pipeline, e.g. local VAD + context aggregators. + When there is already turn tracking in the pipeline, the additional + interruption does no harm. + (PR [#3429](https://github.com/pipecat-ai/pipecat/pull/3429)) + +- Added new `GenesysFrameSerializer` for the Genesys AudioHook WebSocket + protocol, enabling bidirectional audio streaming between Pipecat pipelines + and Genesys Cloud contact center. + (PR [#3500](https://github.com/pipecat-ai/pipecat/pull/3500)) + +- Added `reached_upstream_types` and `reached_downstream_types` read-only + properties to `PipelineTask` for inspecting current frame filters. + (PR [#3510](https://github.com/pipecat-ai/pipecat/pull/3510)) + +- Added `add_reached_upstream_filter()` and `add_reached_downstream_filter()` + methods to `PipelineTask` for appending frame types. + (PR [#3510](https://github.com/pipecat-ai/pipecat/pull/3510)) + +- Added `UserTurnCompletionLLMServiceMixin` for LLM services to detect and + filter incomplete user turns. When enabled via `filter_incomplete_user_turns` + in `LLMUserAggregatorParams`, the LLM outputs a turn completion marker at the + start of each response: ✓ (complete), ○ (incomplete short), or ◐ (incomplete + long). Incomplete turns are suppressed, and configurable timeouts + automatically re-prompt the user. + (PR [#3518](https://github.com/pipecat-ai/pipecat/pull/3518)) + +- Added `FrameProcessor.broadcast_frame_instance(frame)` method to broadcast a + frame instance by extracting its fields and creating new instances for each + direction. + (PR [#3519](https://github.com/pipecat-ai/pipecat/pull/3519)) + +- `PipelineTask` now automatically adds `RTVIProcessor` and registers + `RTVIObserver` when `enable_rtvi=True` (default), simplifying pipeline setup. + (PR [#3519](https://github.com/pipecat-ai/pipecat/pull/3519)) + +- Added `RTVIProcessor.create_rtvi_observer()` factory method for creating RTVI + observers. + (PR [#3519](https://github.com/pipecat-ai/pipecat/pull/3519)) + +- Added `video_out_codec` parameter to `TransportParams` allowing configuration + of the preferred video codec (e.g., `"VP8"`, `"H264"`, `"H265"`) for video + output in `DailyTransport`. + (PR [#3520](https://github.com/pipecat-ai/pipecat/pull/3520)) + +- Added `location` parameter to Google TTS services (`GoogleHttpTTSService`, + `GoogleTTSService`, `GeminiTTSService`) for regional endpoint support. + (PR [#3523](https://github.com/pipecat-ai/pipecat/pull/3523)) + +- Added new `PIPECAT_SMART_TURN_LOG_DATA` environment variable, which causes + Smart Turn input data to be saved to disk + (PR [#3525](https://github.com/pipecat-ai/pipecat/pull/3525)) + +- Added `result_callback` parameter to `UserImageRequestFrame` to support + deferred function call results. + (PR [#3571](https://github.com/pipecat-ai/pipecat/pull/3571)) + +- Added `function_call_timeout_secs` parameter to `LLMService` to configure + timeout for deferred function calls (defaults to 10.0 seconds). + (PR [#3571](https://github.com/pipecat-ai/pipecat/pull/3571)) + +- Added `vad_analyzer` parameter to `LLMUserAggregatorParams`. VAD analysis is + now handled inside the `LLMUserAggregator` rather than in the transport, + keeping voice activity detection closer to where it is consumed. The + `vad_analyzer` on `BaseInputTransport` is now deprecated. + + ```python + context_aggregator = LLMContextAggregatorPair( + context, + user_params=LLMUserAggregatorParams( + vad_analyzer=SileroVADAnalyzer(), + ), + ) + ``` + (PR [#3583](https://github.com/pipecat-ai/pipecat/pull/3583)) + +- Added `VADProcessor` for detecting speech in audio streams within a pipeline. + Pushes `VADUserStartedSpeakingFrame`, `VADUserStoppedSpeakingFrame`, and + `UserSpeakingFrame` downstream based on VAD state changes. + (PR [#3583](https://github.com/pipecat-ai/pipecat/pull/3583)) + +- Added `VADController` for managing voice activity detection state and + emitting speech events independently of transport or pipeline processors. + (PR [#3583](https://github.com/pipecat-ai/pipecat/pull/3583)) + +- Added local `PiperTTSService` for offline text-to-speech using Piper voice + models. The existing HTTP-based service has been renamed to + `PiperHttpTTSService`. + (PR [#3585](https://github.com/pipecat-ai/pipecat/pull/3585)) + +- `main()` in `pipecat.runner.run` now accepts an optional + `argparse.ArgumentParser`, allowing bots to define custom CLI arguments + accessible via `runner_args.cli_args`. + (PR [#3590](https://github.com/pipecat-ai/pipecat/pull/3590)) + +- Added `KokoroTTSService` for local text-to-speech synthesis using the + Kokoro-82M model. + (PR [#3595](https://github.com/pipecat-ai/pipecat/pull/3595)) + +### Changed + +- Updated `AICFilter` and `AICVADAnalyzer` to use aic-sdk ~= 2.0.1. + (PR [#3408](https://github.com/pipecat-ai/pipecat/pull/3408)) + +- Improved the STT TTFB (Time To First Byte) measurement, reporting the delay + between when the user stops speaking and when the final transcription is + received. Note: Unlike traditional TTFB which measures from a discrete + request, STT services receive continuous audio input—so we measure from + speech end to final transcript, which captures the latency that matters for + voice AI applications. In support of this change, added `finalized` field to + `TranscriptionFrame` to indicate when a transcript is the final result for an + utterance. + (PR [#3495](https://github.com/pipecat-ai/pipecat/pull/3495)) + +- `SarvamSTTService` now defaults `vad_signals` and `high_vad_sensitivity` to + `None` (omitted from connection parameters), improving latency by ~300ms + compared to the previous defaults. + (PR [#3495](https://github.com/pipecat-ai/pipecat/pull/3495)) + +- Changed frame filter storage from tuples to sets in `PipelineTask`. + (PR [#3510](https://github.com/pipecat-ai/pipecat/pull/3510)) + +- Changed default Inworld TTS model from `inworld-tts-1` to + `inworld-tts-1.5-max`. + (PR [#3531](https://github.com/pipecat-ai/pipecat/pull/3531)) + +- `FrameSerializer` now subclasses from `BaseObject` to enable event support. + (PR [#3560](https://github.com/pipecat-ai/pipecat/pull/3560)) + +- Added support for TTFS in `SpeechmaticsSTTService` and set the default mode + to `EXTERNAL` to support Pipecat-controlled VAD. + - Changed dependency to `speechmatics-voice[smart]>=0.2.8` + (PR [#3562](https://github.com/pipecat-ai/pipecat/pull/3562)) + +- ⚠️ Changed function call handling to use timeout-based completion instead of + immediate callback execution. + - Function calls that defer their results (e.g., `UserImageRequestFrame`) + now use a timeout mechanism + - The `result_callback` is invoked automatically when the deferred + operation completes or after timeout + - This change affects examples using `UserImageRequestFrame` - the + `result_callback` should now be passed to the frame instead of being called + immediately + (PR [#3571](https://github.com/pipecat-ai/pipecat/pull/3571)) + +- Pipecat runner now uses `DAILY_ROOM_URL` instead of `DAILY_SAMPLE_ROOM_URL`. + (PR [#3582](https://github.com/pipecat-ai/pipecat/pull/3582)) + +- Updates to `GradiumSTTService`: + - Now flushes pending transcriptions when VAD detects the user stopped + speaking, improving response latency. + - `GradiumSTTService` now supports `InputParams` for configuring `language` + and `delay_in_frames` settings. + (PR [#3587](https://github.com/pipecat-ai/pipecat/pull/3587)) + +### Deprecated + +- ⚠️ Deprecated `vad_analyzer` parameter on `BaseInputTransport`. Pass + `vad_analyzer` to `LLMUserAggregatorParams` instead or use `VADProcessor` in + the pipeline. + (PR [#3583](https://github.com/pipecat-ai/pipecat/pull/3583)) + +### Removed + +- Removed deprecated `AICFilter` parameters: `enhancement_level`, `voice_gain`, + `noise_gate_enable`. + (PR [#3408](https://github.com/pipecat-ai/pipecat/pull/3408)) + +### Fixed + +- Fixed an issue where if you were using `OpenRouterLLMService` with a Gemini + model, it wouldn't handle multiple `"system"` messages as expected (and as we + do in `GoogleLLMService`), which is to convert subsequent ones into `"user"` + messages. Instead, the latest `"system"` message would overwrite the previous + ones. + (PR [#3406](https://github.com/pipecat-ai/pipecat/pull/3406)) + +- Transports now properly broadcast `InputTransportMessageFrame` frames both + upstream and downstream instead of only pushing downstream. + (PR [#3519](https://github.com/pipecat-ai/pipecat/pull/3519)) + +- Fixed `FrameProcessor.broadcast_frame()` to deep copy kwargs, preventing + shared mutable references between the downstream and upstream frame + instances. + (PR [#3519](https://github.com/pipecat-ai/pipecat/pull/3519)) + +- Fixed OpenAI LLM services to emit `ErrorFrame` on completion timeout, + enabling proper error handling and LLMSwitcher failover. + (PR [#3529](https://github.com/pipecat-ai/pipecat/pull/3529)) + +- Fixed a logging issue where non-ASCII characters (e.g., Japanese, Chinese, + etc.) were being unnecessarily escaped to Unicode sequences when function + call occurred. + (PR [#3536](https://github.com/pipecat-ai/pipecat/pull/3536)) + +- Fixed how audio tracks are synchronized inside the `AudioBufferProcessor` to + fix timing issues where silence and audio were misaligned between user and + bot buffers. + (PR [#3541](https://github.com/pipecat-ai/pipecat/pull/3541)) + +- Fixed race condition in `OpenAIRealtimeBetaLLMService` that could cause an + error when truncating the conversation. + (PR [#3567](https://github.com/pipecat-ai/pipecat/pull/3567)) + +- Fixed an infinite loop in `WebsocketService` that blocked the event loop when + a remote server closed the connection gracefully. + (PR [#3574](https://github.com/pipecat-ai/pipecat/pull/3574)) + +- Fixed `LLMUserAggregator` and `LLMAssistantAggregator` not emitting pending + transcripts via `on_user_turn_stopped` and `on_assistant_turn_stopped` events + when the conversation ends (`EndFrame`) or is cancelled (`CancelFrame`). + (PR [#3575](https://github.com/pipecat-ai/pipecat/pull/3575)) + +- Added missing `LiveKitRunnerArguments` and `LiveKitTransport` support in + runner utilities to enable LiveKit transport configuration. + (PR [#3580](https://github.com/pipecat-ai/pipecat/pull/3580)) + +- Fixed race condition in `OpenAIRealtimeLLMService` that could cause an error + when truncating the conversation. + (PR [#3581](https://github.com/pipecat-ai/pipecat/pull/3581)) + +- Fixed `PiperHttpTTSService` (olf `PiperTTSService`) to resample audio output + based on the model's sample rate parsed from the WAV header. + (PR [#3585](https://github.com/pipecat-ai/pipecat/pull/3585)) + +- Fixed `UserTurnController` to reset user turn timeout when interim + transcriptions are received. + (PR [#3594](https://github.com/pipecat-ai/pipecat/pull/3594)) + +- Fixed an issue in the `IVRNavigator` where the `TextFrame`s pushed had + incorrect spacing. Now, the internal `IVRProcessor` pushes + `AggregatedTextFrame`s when in conversation mode. This allows for controlling + spacing of the outputted, aggregated text. + (PR [#3604](https://github.com/pipecat-ai/pipecat/pull/3604)) + +- Fixed `GeminiLiveLLMService` transcription timeout handler not being + scheduled by yielding to the event loop after task creation. + (PR [#3605](https://github.com/pipecat-ai/pipecat/pull/3605)) + ## [0.0.100] - 2026-01-20 ### Added diff --git a/changelog/3406.fixed.md b/changelog/3406.fixed.md deleted file mode 100644 index b4eae4548..000000000 --- a/changelog/3406.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue where if you were using `OpenRouterLLMService` with a Gemini model, it wouldn't handle multiple `"system"` messages as expected (and as we do in `GoogleLLMService`), which is to convert subsequent ones into `"user"` messages. Instead, the latest `"system"` message would overwrite the previous ones. diff --git a/changelog/3408.added.md b/changelog/3408.added.md deleted file mode 100644 index 04f1311cc..000000000 --- a/changelog/3408.added.md +++ /dev/null @@ -1,4 +0,0 @@ -- Additions for `AICFilter` and `AICVADAnalyzer`: - - Added model downloading support to `AICFilter` with `model_id` and `model_download_dir` parameters. - - Added `model_path` parameter to `AICFilter` for loading local `.aicmodel` files. - - Added unit tests for `AICFilter` and `AICVADAnalyzer`. diff --git a/changelog/3408.changed.md b/changelog/3408.changed.md deleted file mode 100644 index 9436b6074..000000000 --- a/changelog/3408.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Updated `AICFilter` and `AICVADAnalyzer` to use aic-sdk ~= 2.0.1. diff --git a/changelog/3408.removed.md b/changelog/3408.removed.md deleted file mode 100644 index f578bf5d0..000000000 --- a/changelog/3408.removed.md +++ /dev/null @@ -1 +0,0 @@ -- Removed deprecated `AICFilter` parameters: `enhancement_level`, `voice_gain`, `noise_gate_enable`. diff --git a/changelog/3429.added.md b/changelog/3429.added.md deleted file mode 100644 index 905dcac78..000000000 --- a/changelog/3429.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added handling for `server_content.interrupted` signal in the Gemini Live service for faster interruption response in the case where there isn't already turn tracking in the pipeline, e.g. local VAD + context aggregators. When there is already turn tracking in the pipeline, the additional interruption does no harm. diff --git a/changelog/3495.changed.2.md b/changelog/3495.changed.2.md deleted file mode 100644 index cf1f526b8..000000000 --- a/changelog/3495.changed.2.md +++ /dev/null @@ -1 +0,0 @@ -- `SarvamSTTService` now defaults `vad_signals` and `high_vad_sensitivity` to `None` (omitted from connection parameters), improving latency by ~300ms compared to the previous defaults. diff --git a/changelog/3495.changed.md b/changelog/3495.changed.md deleted file mode 100644 index c690ebc09..000000000 --- a/changelog/3495.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Improved the STT TTFB (Time To First Byte) measurement, reporting the delay between when the user stops speaking and when the final transcription is received. Note: Unlike traditional TTFB which measures from a discrete request, STT services receive continuous audio input—so we measure from speech end to final transcript, which captures the latency that matters for voice AI applications. In support of this change, added `finalized` field to `TranscriptionFrame` to indicate when a transcript is the final result for an utterance. diff --git a/changelog/3500.added.md b/changelog/3500.added.md deleted file mode 100644 index 64881e91b..000000000 --- a/changelog/3500.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added new `GenesysFrameSerializer` for the Genesys AudioHook WebSocket protocol, enabling bidirectional audio streaming between Pipecat pipelines and Genesys Cloud contact center. \ No newline at end of file diff --git a/changelog/3510.added.2.md b/changelog/3510.added.2.md deleted file mode 100644 index e03b81ee3..000000000 --- a/changelog/3510.added.2.md +++ /dev/null @@ -1 +0,0 @@ -- Added `add_reached_upstream_filter()` and `add_reached_downstream_filter()` methods to `PipelineTask` for appending frame types. \ No newline at end of file diff --git a/changelog/3510.added.md b/changelog/3510.added.md deleted file mode 100644 index 93d9ef179..000000000 --- a/changelog/3510.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `reached_upstream_types` and `reached_downstream_types` read-only properties to `PipelineTask` for inspecting current frame filters. \ No newline at end of file diff --git a/changelog/3510.changed.3.md b/changelog/3510.changed.3.md deleted file mode 100644 index ac299f143..000000000 --- a/changelog/3510.changed.3.md +++ /dev/null @@ -1 +0,0 @@ -- Changed frame filter storage from tuples to sets in `PipelineTask`. diff --git a/changelog/3518.added.md b/changelog/3518.added.md deleted file mode 100644 index b9740f024..000000000 --- a/changelog/3518.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `UserTurnCompletionLLMServiceMixin` for LLM services to detect and filter incomplete user turns. When enabled via `filter_incomplete_user_turns` in `LLMUserAggregatorParams`, the LLM outputs a turn completion marker at the start of each response: ✓ (complete), ○ (incomplete short), or ◐ (incomplete long). Incomplete turns are suppressed, and configurable timeouts automatically re-prompt the user. diff --git a/changelog/3519.added.2.md b/changelog/3519.added.2.md deleted file mode 100644 index 03e2372ad..000000000 --- a/changelog/3519.added.2.md +++ /dev/null @@ -1 +0,0 @@ -- Added `RTVIProcessor.create_rtvi_observer()` factory method for creating RTVI observers. diff --git a/changelog/3519.added.3.md b/changelog/3519.added.3.md deleted file mode 100644 index 7ea1e638c..000000000 --- a/changelog/3519.added.3.md +++ /dev/null @@ -1 +0,0 @@ -- Added `FrameProcessor.broadcast_frame_instance(frame)` method to broadcast a frame instance by extracting its fields and creating new instances for each direction. diff --git a/changelog/3519.added.md b/changelog/3519.added.md deleted file mode 100644 index 5ed2bd522..000000000 --- a/changelog/3519.added.md +++ /dev/null @@ -1 +0,0 @@ -- `PipelineTask` now automatically adds `RTVIProcessor` and registers `RTVIObserver` when `enable_rtvi=True` (default), simplifying pipeline setup. diff --git a/changelog/3519.fixed.2.md b/changelog/3519.fixed.2.md deleted file mode 100644 index bcd384f7f..000000000 --- a/changelog/3519.fixed.2.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `FrameProcessor.broadcast_frame()` to deep copy kwargs, preventing shared mutable references between the downstream and upstream frame instances. diff --git a/changelog/3519.fixed.md b/changelog/3519.fixed.md deleted file mode 100644 index cabaa5a3e..000000000 --- a/changelog/3519.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Transports now properly broadcast `InputTransportMessageFrame` frames both upstream and downstream instead of only pushing downstream. diff --git a/changelog/3520.added.md b/changelog/3520.added.md deleted file mode 100644 index 6e3c37e9f..000000000 --- a/changelog/3520.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `video_out_codec` parameter to `TransportParams` allowing configuration of the preferred video codec (e.g., `"VP8"`, `"H264"`, `"H265"`) for video output in `DailyTransport`. diff --git a/changelog/3523.added.md b/changelog/3523.added.md deleted file mode 100644 index c6a0acc42..000000000 --- a/changelog/3523.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `location` parameter to Google TTS services (`GoogleHttpTTSService`, `GoogleTTSService`, `GeminiTTSService`) for regional endpoint support. \ No newline at end of file diff --git a/changelog/3525.added.md b/changelog/3525.added.md deleted file mode 100644 index e34b5e3d5..000000000 --- a/changelog/3525.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added new `PIPECAT_SMART_TURN_LOG_DATA` environment variable, which causes Smart Turn input data to be saved to disk diff --git a/changelog/3529.fixed.md b/changelog/3529.fixed.md deleted file mode 100644 index 91c9eeda0..000000000 --- a/changelog/3529.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed OpenAI LLM services to emit `ErrorFrame` on completion timeout, enabling proper error handling and LLMSwitcher failover. diff --git a/changelog/3531.changed.md b/changelog/3531.changed.md deleted file mode 100644 index 326d8d4d1..000000000 --- a/changelog/3531.changed.md +++ /dev/null @@ -1,2 +0,0 @@ -- Changed default Inworld TTS model from `inworld-tts-1` to - `inworld-tts-1.5-max`. diff --git a/changelog/3536.fixed.md b/changelog/3536.fixed.md deleted file mode 100644 index f70bd62b6..000000000 --- a/changelog/3536.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed a logging issue where non-ASCII characters (e.g., Japanese, Chinese, etc.) were being unnecessarily escaped to Unicode sequences when function call occurred. diff --git a/changelog/3541.fixed.md b/changelog/3541.fixed.md deleted file mode 100644 index ac5b59529..000000000 --- a/changelog/3541.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed how audio tracks are synchronized inside the `AudioBufferProcessor` to fix timing issues where silence and audio were misaligned between user and bot buffers. diff --git a/changelog/3560.changed.md b/changelog/3560.changed.md deleted file mode 100644 index b4ba6aa8b..000000000 --- a/changelog/3560.changed.md +++ /dev/null @@ -1 +0,0 @@ -- `FrameSerializer` now subclasses from `BaseObject` to enable event support. diff --git a/changelog/3562.changed.md b/changelog/3562.changed.md deleted file mode 100644 index 533f37b2f..000000000 --- a/changelog/3562.changed.md +++ /dev/null @@ -1,2 +0,0 @@ -- Added support for TTFS in `SpeechmaticsSTTService` and set the default mode to `EXTERNAL` to support Pipecat-controlled VAD. -- Changed dependency to `speechmatics-voice[smart]>=0.2.8` diff --git a/changelog/3567.fixed.md b/changelog/3567.fixed.md deleted file mode 100644 index 92ecabeca..000000000 --- a/changelog/3567.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed race condition in `OpenAIRealtimeBetaLLMService` that could cause an error when truncating the conversation. diff --git a/changelog/3571.added.2.md b/changelog/3571.added.2.md deleted file mode 100644 index f9af8dde0..000000000 --- a/changelog/3571.added.2.md +++ /dev/null @@ -1 +0,0 @@ -- Added `function_call_timeout_secs` parameter to `LLMService` to configure timeout for deferred function calls (defaults to 10.0 seconds). diff --git a/changelog/3571.added.md b/changelog/3571.added.md deleted file mode 100644 index 927bbcbc4..000000000 --- a/changelog/3571.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `result_callback` parameter to `UserImageRequestFrame` to support deferred function call results. diff --git a/changelog/3571.changed.md b/changelog/3571.changed.md deleted file mode 100644 index eb44cae0a..000000000 --- a/changelog/3571.changed.md +++ /dev/null @@ -1,4 +0,0 @@ -- ⚠️ Changed function call handling to use timeout-based completion instead of immediate callback execution. - - Function calls that defer their results (e.g., `UserImageRequestFrame`) now use a timeout mechanism - - The `result_callback` is invoked automatically when the deferred operation completes or after timeout - - This change affects examples using `UserImageRequestFrame` - the `result_callback` should now be passed to the frame instead of being called immediately diff --git a/changelog/3574.fixed.md b/changelog/3574.fixed.md deleted file mode 100644 index 187f172b7..000000000 --- a/changelog/3574.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an infinite loop in `WebsocketService` that blocked the event loop when a remote server closed the connection gracefully. \ No newline at end of file diff --git a/changelog/3575.fixed.md b/changelog/3575.fixed.md deleted file mode 100644 index 03c42b1ad..000000000 --- a/changelog/3575.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `LLMUserAggregator` and `LLMAssistantAggregator` not emitting pending transcripts via `on_user_turn_stopped` and `on_assistant_turn_stopped` events when the conversation ends (`EndFrame`) or is cancelled (`CancelFrame`). diff --git a/changelog/3580.fixed.md b/changelog/3580.fixed.md deleted file mode 100644 index 47f4aa6a2..000000000 --- a/changelog/3580.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Added missing `LiveKitRunnerArguments` and `LiveKitTransport` support in runner utilities to enable LiveKit transport configuration. diff --git a/changelog/3581.fixed.md b/changelog/3581.fixed.md deleted file mode 100644 index 688bbcfbe..000000000 --- a/changelog/3581.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed race condition in `OpenAIRealtimeLLMService` that could cause an error when truncating the conversation. \ No newline at end of file diff --git a/changelog/3582.changed.md b/changelog/3582.changed.md deleted file mode 100644 index 8581fc6cf..000000000 --- a/changelog/3582.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Pipecat runner now uses `DAILY_ROOM_URL` instead of `DAILY_SAMPLE_ROOM_URL`. diff --git a/changelog/3583.added.2.md b/changelog/3583.added.2.md deleted file mode 100644 index f0c5c7d1e..000000000 --- a/changelog/3583.added.2.md +++ /dev/null @@ -1 +0,0 @@ -- Added `VADController` for managing voice activity detection state and emitting speech events independently of transport or pipeline processors. diff --git a/changelog/3583.added.3.md b/changelog/3583.added.3.md deleted file mode 100644 index f5da90407..000000000 --- a/changelog/3583.added.3.md +++ /dev/null @@ -1 +0,0 @@ -- Added `VADProcessor` for detecting speech in audio streams within a pipeline. Pushes `VADUserStartedSpeakingFrame`, `VADUserStoppedSpeakingFrame`, and `UserSpeakingFrame` downstream based on VAD state changes. diff --git a/changelog/3583.added.md b/changelog/3583.added.md deleted file mode 100644 index 47048e226..000000000 --- a/changelog/3583.added.md +++ /dev/null @@ -1,10 +0,0 @@ -- Added `vad_analyzer` parameter to `LLMUserAggregatorParams`. VAD analysis is now handled inside the `LLMUserAggregator` rather than in the transport, keeping voice activity detection closer to where it is consumed. The `vad_analyzer` on `BaseInputTransport` is now deprecated. - - ```python - context_aggregator = LLMContextAggregatorPair( - context, - user_params=LLMUserAggregatorParams( - vad_analyzer=SileroVADAnalyzer(), - ), - ) - ``` diff --git a/changelog/3583.deprecated.md b/changelog/3583.deprecated.md deleted file mode 100644 index d4ea492eb..000000000 --- a/changelog/3583.deprecated.md +++ /dev/null @@ -1 +0,0 @@ -- ⚠️ Deprecated `vad_analyzer` parameter on `BaseInputTransport`. Pass `vad_analyzer` to `LLMUserAggregatorParams` instead or use `VADProcessor` in the pipeline. diff --git a/changelog/3585.added.md b/changelog/3585.added.md deleted file mode 100644 index 7335d2c18..000000000 --- a/changelog/3585.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added local `PiperTTSService` for offline text-to-speech using Piper voice models. The existing HTTP-based service has been renamed to `PiperHttpTTSService`. diff --git a/changelog/3585.fixed.md b/changelog/3585.fixed.md deleted file mode 100644 index 4993ed2f7..000000000 --- a/changelog/3585.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `PiperHttpTTSService` (olf `PiperTTSService`) to resample audio output based on the model's sample rate parsed from the WAV header. diff --git a/changelog/3587.changed.md b/changelog/3587.changed.md deleted file mode 100644 index 94ccd7020..000000000 --- a/changelog/3587.changed.md +++ /dev/null @@ -1,3 +0,0 @@ -- Updates to `GradiumSTTService`: - - Now flushes pending transcriptions when VAD detects the user stopped speaking, improving response latency. - - `GradiumSTTService` now supports `InputParams` for configuring `language` and `delay_in_frames` settings. diff --git a/changelog/3590.added.md b/changelog/3590.added.md deleted file mode 100644 index 80e0c3dba..000000000 --- a/changelog/3590.added.md +++ /dev/null @@ -1 +0,0 @@ -- `main()` in `pipecat.runner.run` now accepts an optional `argparse.ArgumentParser`, allowing bots to define custom CLI arguments accessible via `runner_args.cli_args`. diff --git a/changelog/3594.fixed.md b/changelog/3594.fixed.md deleted file mode 100644 index 1c47ff490..000000000 --- a/changelog/3594.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `UserTurnController` to reset user turn timeout when interim transcriptions are received. diff --git a/changelog/3595.added.md b/changelog/3595.added.md deleted file mode 100644 index 7f3213eb1..000000000 --- a/changelog/3595.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `KokoroTTSService` for local text-to-speech synthesis using the Kokoro-82M model. diff --git a/changelog/3604.fixed.md b/changelog/3604.fixed.md deleted file mode 100644 index 257e1c630..000000000 --- a/changelog/3604.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue in the `IVRNavigator` where the `TextFrame`s pushed had incorrect spacing. Now, the internal `IVRProcessor` pushes `AggregatedTextFrame`s when in conversation mode. This allows for controlling spacing of the outputted, aggregated text. \ No newline at end of file diff --git a/changelog/3605.fixed.md b/changelog/3605.fixed.md deleted file mode 100644 index 405dc4db2..000000000 --- a/changelog/3605.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `GeminiLiveLLMService` transcription timeout handler not being scheduled by yielding to the event loop after task creation.