diff --git a/CHANGELOG.md b/CHANGELOG.md index ce2bdef9f..1d70f0682 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,129 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [0.0.100] - 2026-01-20 + +### Added + +- Added Hathora service to support Hathora-hosted TTS and STT models (only + non-streaming) + (PR [#3169](https://github.com/pipecat-ai/pipecat/pull/3169)) + +- Added `CambTTSService`, using Camb.ai's TTS integration with MARS models + (mars-flash, mars-pro, mars-instruct) for high-quality text-to-speech + synthesis. + (PR [#3349](https://github.com/pipecat-ai/pipecat/pull/3349)) + +- Added the `additional_headers` param to `WebsocketClientParams`, allowing + `WebsocketClientTransport` to send custom headers on connect, for cases such + as authentication. + (PR [#3461](https://github.com/pipecat-ai/pipecat/pull/3461)) + +- Added `UserIdleController` for detecting user idle state, integrated into + `LLMUserAggregator` and `UserTurnProcessor` via optional `user_idle_timeout` + parameter. Emits `on_user_turn_idle` event for application-level handling. + Deprecated `UserIdleProcessor` in favor of the new compositional approach. + (PR [#3482](https://github.com/pipecat-ai/pipecat/pull/3482)) + +- Added `on_user_mute_started` and `on_user_mute_stopped` event handlers to + `LLMUserAggregator` for tracking user mute state changes. + (PR [#3490](https://github.com/pipecat-ai/pipecat/pull/3490)) + +### Changed + +- Enhanced interruption handling in `AsyncAITTSService` by supporting + multi-context WebSocket sessions for more robust context management. + (PR [#3287](https://github.com/pipecat-ai/pipecat/pull/3287)) + +- Throttle `UserSpeakingFrame` to broadcast at most every 200ms instead of on + every audio chunk, reducing frame processing overhead during user speech. + (PR [#3483](https://github.com/pipecat-ai/pipecat/pull/3483)) + +### Deprecated + +- For consistency with other package names, we just deprecated + `pipecat.turns.mute` (introduced in Pipecat 0.0.99) in favor of + `pipecat.turns.user_mute`. + (PR [#3479](https://github.com/pipecat-ai/pipecat/pull/3479)) + +### Fixed + +- Corrected TTFB metric calculation in `AsyncAIHttpTTSService`. + (PR [#3287](https://github.com/pipecat-ai/pipecat/pull/3287)) + +- Fixed an issue where the "bot-llm-text" RTVI event would not fire for + realtime (speech-to-speech) services: + + - `AWSNovaSonicLLMService` + - `GeminiLiveLLMService` + - `OpenAIRealtimeLLMService` + - `GrokRealtimeLLMService` + + The issue was that these services weren't pushing `LLMTextFrame`s. Now + they do. + (PR [#3446](https://github.com/pipecat-ai/pipecat/pull/3446)) + +- Fixed an issue where `on_user_turn_stop_timeout` could fire while a user is + talking when using `ExternalUserTurnStrategies`. + (PR [#3454](https://github.com/pipecat-ai/pipecat/pull/3454)) + +- Fixed an issue where user turn start strategies were not being reset after a + user turn started, causing incorrect strategy behavior. + (PR [#3455](https://github.com/pipecat-ai/pipecat/pull/3455)) + +- Fixed `MinWordsUserTurnStartStrategy` to not aggregate transcriptions, + preventing incorrect turn starts when words are spoken with pauses between + them. + (PR [#3462](https://github.com/pipecat-ai/pipecat/pull/3462)) + +- Fixed an issue where Grok Realtime would error out when running with + SmallWebRTC transport. + (PR [#3480](https://github.com/pipecat-ai/pipecat/pull/3480)) + +- Fixed a `Mem0MemoryService` issue where passing `async_mode: true` was + causing an error. See + https://docs.mem0.ai/platform/features/async-mode-default-change. + (PR [#3484](https://github.com/pipecat-ai/pipecat/pull/3484)) + +- Fixed `AWSNovaSonicLLMService.reset_conversation()`, which would previously + error out. Now it successfully reconnects and "rehydrates" from the context + object. + (PR [#3486](https://github.com/pipecat-ai/pipecat/pull/3486)) + +- Fixed `AzureTTSService` transcript formatting issues: + - Punctuation now appears without extra spaces (e.g., "Hello!" instead of + "Hello !") + - CJK languages (Chinese, Japanese, Korean) no longer have unwanted spaces + between characters + (PR [#3489](https://github.com/pipecat-ai/pipecat/pull/3489)) + +- Fixed an issue where `UninterruptibleFrame` frames would not be preserved in + some cases. + (PR [#3494](https://github.com/pipecat-ai/pipecat/pull/3494)) + +- Fixed memory leak in `LiveKitTransport` when `video_in_enabled` is `False`. + (PR [#3499](https://github.com/pipecat-ai/pipecat/pull/3499)) + +- Fixed an issue in `AIService` where unhandled exceptions in `start()`, + `stop()`, or `cancel()` implementations would prevent `process_frame()` to + continue and therefore `StartFrame`, `EndFrame`, or `CancelFrame` from being + pushed downstream, causing the pipeline to not start or stop properly. + (PR [#3503](https://github.com/pipecat-ai/pipecat/pull/3503)) + +- Moved `NVIDIATTSService` and `NVIDIASTTService` client initialization from + constructor to `start()` for better error handling. + (PR [#3504](https://github.com/pipecat-ai/pipecat/pull/3504)) + +- Optimized `NVIDIATTSService` to process incoming audio frames immediately. + (PR [#3509](https://github.com/pipecat-ai/pipecat/pull/3509)) + +- Optimized `NVIDIASTTService` by removing unnecessary queue and task. + (PR [#3509](https://github.com/pipecat-ai/pipecat/pull/3509)) + +- Fixed a `CambTTSService` issue where client was being initialized in the + constructor which wouldn't allow for proper Pipeline error handling. + (PR [#3511](https://github.com/pipecat-ai/pipecat/pull/3511)) + ## [0.0.99] - 2026-01-13 ### Added diff --git a/changelog/3169.added.md b/changelog/3169.added.md deleted file mode 100644 index d9e4bb9b9..000000000 --- a/changelog/3169.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added Hathora service to support Hathora-hosted TTS and STT models (only non-streaming) \ No newline at end of file diff --git a/changelog/3287.changed.md b/changelog/3287.changed.md deleted file mode 100644 index f0df82966..000000000 --- a/changelog/3287.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Enhanced interruption handling in `AsyncAITTSService` by supporting multi-context WebSocket sessions for more robust context management. \ No newline at end of file diff --git a/changelog/3287.fixed.md b/changelog/3287.fixed.md deleted file mode 100644 index 30ce0b13b..000000000 --- a/changelog/3287.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Corrected TTFB metric calculation in `AsyncAIHttpTTSService`. \ No newline at end of file diff --git a/changelog/3349.added.md b/changelog/3349.added.md deleted file mode 100644 index a5b282ec8..000000000 --- a/changelog/3349.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `CambTTSService`, using Camb.ai's TTS integration with MARS models (mars-flash, mars-pro, mars-instruct) for high-quality text-to-speech synthesis. diff --git a/changelog/3446.fixed.md b/changelog/3446.fixed.md deleted file mode 100644 index 64cc3cb32..000000000 --- a/changelog/3446.fixed.md +++ /dev/null @@ -1,8 +0,0 @@ -- Fixed an issue where the "bot-llm-text" RTVI event would not fire for realtime (speech-to-speech) services: - - - `AWSNovaSonicLLMService` - - `GeminiLiveLLMService` - - `OpenAIRealtimeLLMService` - - `GrokRealtimeLLMService` - - The issue was that these services weren't pushing `LLMTextFrame`s. Now they do. diff --git a/changelog/3454.fixed.md b/changelog/3454.fixed.md deleted file mode 100644 index 0269370d7..000000000 --- a/changelog/3454.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue where `on_user_turn_stop_timeout` could fire while a user is talking when using `ExternalUserTurnStrategies`. diff --git a/changelog/3455.fixed.md b/changelog/3455.fixed.md deleted file mode 100644 index 1dba5838a..000000000 --- a/changelog/3455.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue where user turn start strategies were not being reset after a user turn started, causing incorrect strategy behavior. diff --git a/changelog/3461.added.md b/changelog/3461.added.md deleted file mode 100644 index e0bc27d83..000000000 --- a/changelog/3461.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added the `additional_headers` param to `WebsocketClientParams`, allowing `WebsocketClientTransport` to send custom headers on connect, for cases such as authentication. diff --git a/changelog/3462.fixed.md b/changelog/3462.fixed.md deleted file mode 100644 index f9ede6a53..000000000 --- a/changelog/3462.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `MinWordsUserTurnStartStrategy` to not aggregate transcriptions, preventing incorrect turn starts when words are spoken with pauses between them. diff --git a/changelog/3479.deprecated.md b/changelog/3479.deprecated.md deleted file mode 100644 index 7c58a9d89..000000000 --- a/changelog/3479.deprecated.md +++ /dev/null @@ -1 +0,0 @@ -- For consistency with other package names, we just deprecated `pipecat.turns.mute` (introduced in Pipecat 0.0.99) in favor of `pipecat.turns.user_mute`. diff --git a/changelog/3480.fixed.md b/changelog/3480.fixed.md deleted file mode 100644 index 9d04545ec..000000000 --- a/changelog/3480.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue where Grok Realtime would error out when running with SmallWebRTC transport. diff --git a/changelog/3482.added.md b/changelog/3482.added.md deleted file mode 100644 index 465d409f4..000000000 --- a/changelog/3482.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `UserIdleController` for detecting user idle state, integrated into `LLMUserAggregator` and `UserTurnProcessor` via optional `user_idle_timeout` parameter. Emits `on_user_turn_idle` event for application-level handling. Deprecated `UserIdleProcessor` in favor of the new compositional approach. diff --git a/changelog/3483.changed.md b/changelog/3483.changed.md deleted file mode 100644 index 97bb10371..000000000 --- a/changelog/3483.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Throttle `UserSpeakingFrame` to broadcast at most every 200ms instead of on every audio chunk, reducing frame processing overhead during user speech. diff --git a/changelog/3484.fixed.md b/changelog/3484.fixed.md deleted file mode 100644 index 9f2823a3e..000000000 --- a/changelog/3484.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed a `Mem0MemoryService` issue where passing `async_mode: true` was causing an error. See https://docs.mem0.ai/platform/features/async-mode-default-change. diff --git a/changelog/3486.fixed.md b/changelog/3486.fixed.md deleted file mode 100644 index a02427e6e..000000000 --- a/changelog/3486.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `AWSNovaSonicLLMService.reset_conversation()`, which would previously error out. Now it successfully reconnects and "rehydrates" from the context object. diff --git a/changelog/3489.fixed.md b/changelog/3489.fixed.md deleted file mode 100644 index c61b25444..000000000 --- a/changelog/3489.fixed.md +++ /dev/null @@ -1,3 +0,0 @@ -- Fixed `AzureTTSService` transcript formatting issues: - - Punctuation now appears without extra spaces (e.g., "Hello!" instead of "Hello !") - - CJK languages (Chinese, Japanese, Korean) no longer have unwanted spaces between characters diff --git a/changelog/3490.added.md b/changelog/3490.added.md deleted file mode 100644 index 905d35b34..000000000 --- a/changelog/3490.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `on_user_mute_started` and `on_user_mute_stopped` event handlers to `LLMUserAggregator` for tracking user mute state changes. diff --git a/changelog/3494.fixed.md b/changelog/3494.fixed.md deleted file mode 100644 index 41fbfa74e..000000000 --- a/changelog/3494.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue where `UninterruptibleFrame` frames would not be preserved in some cases. diff --git a/changelog/3499.fixed.md b/changelog/3499.fixed.md deleted file mode 100644 index ae893c13d..000000000 --- a/changelog/3499.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed memory leak in `LiveKitTransport` when `video_in_enabled` is `False`. diff --git a/changelog/3503.fixed.md b/changelog/3503.fixed.md deleted file mode 100644 index 4218f8781..000000000 --- a/changelog/3503.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed an issue in `AIService` where unhandled exceptions in `start()`, `stop()`, or `cancel()` implementations would prevent `process_frame()` to continue and therefore `StartFrame`, `EndFrame`, or `CancelFrame` from being pushed downstream, causing the pipeline to not start or stop properly. diff --git a/changelog/3504.fixed.md b/changelog/3504.fixed.md deleted file mode 100644 index 2d675547a..000000000 --- a/changelog/3504.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Moved `NVIDIATTSService` and `NVIDIASTTService` client initialization from constructor to `start()` for better error handling. diff --git a/changelog/3509.fixed.2.md b/changelog/3509.fixed.2.md deleted file mode 100644 index 68053011b..000000000 --- a/changelog/3509.fixed.2.md +++ /dev/null @@ -1 +0,0 @@ -- Optimized `NVIDIATTSService` to process incoming audio frames immediately. diff --git a/changelog/3509.fixed.md b/changelog/3509.fixed.md deleted file mode 100644 index 153060b46..000000000 --- a/changelog/3509.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Optimized `NVIDIASTTService` by removing unnecessary queue and task. diff --git a/changelog/3511.fixed.md b/changelog/3511.fixed.md deleted file mode 100644 index 1f4f429ac..000000000 --- a/changelog/3511.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed a `CambTTSService` issue where client was being initialized in the constructor which wouldn't allow for proper Pipeline error handling.