From fb42a7dcf32193b8c2f8a75ce218f5527c94cb7c Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Thu, 30 Apr 2026 09:45:16 -0400 Subject: [PATCH] Add changelog for #4390 --- changelog/4390.added.md | 1 + changelog/4390.changed.2.md | 1 + changelog/4390.changed.md | 1 + changelog/4390.fixed.2.md | 1 + changelog/4390.fixed.3.md | 1 + changelog/4390.fixed.md | 1 + 6 files changed, 6 insertions(+) create mode 100644 changelog/4390.added.md create mode 100644 changelog/4390.changed.2.md create mode 100644 changelog/4390.changed.md create mode 100644 changelog/4390.fixed.2.md create mode 100644 changelog/4390.fixed.3.md create mode 100644 changelog/4390.fixed.md diff --git a/changelog/4390.added.md b/changelog/4390.added.md new file mode 100644 index 000000000..8c7cb4a99 --- /dev/null +++ b/changelog/4390.added.md @@ -0,0 +1 @@ +- Added a `max_buffer_delay_ms` constructor argument to `CartesiaTTSService` for controlling Cartesia's server-side text buffering. When unset, Pipecat picks a sensible default based on `text_aggregation_mode`: `0` in `SENTENCE` mode (custom buffering — avoids stacking client-side aggregation on top of Cartesia's default 3000ms server buffer) and unset in `TOKEN` mode (Cartesia's managed buffering applies). Pass an explicit value (0–5000ms) to override. diff --git a/changelog/4390.changed.2.md b/changelog/4390.changed.2.md new file mode 100644 index 000000000..70018745e --- /dev/null +++ b/changelog/4390.changed.2.md @@ -0,0 +1 @@ +- Default `cartesia_version` for `CartesiaTTSService` bumped from `2025-04-16` to `2026-03-01`, matching `CartesiaHttpTTSService` and unlocking the `use_normalized_timestamps` and `max_buffer_delay_ms` fields. diff --git a/changelog/4390.changed.md b/changelog/4390.changed.md new file mode 100644 index 000000000..cfc9840f8 --- /dev/null +++ b/changelog/4390.changed.md @@ -0,0 +1 @@ +- ⚠️ `CartesiaTTSService` now sends `use_normalized_timestamps: true` instead of the deprecated `use_original_timestamps` field. Word timestamps now reflect what was actually spoken (post text-normalization and pronunciation-dictionary substitution), matching the convention Pipecat uses for ElevenLabs. This is a behavior change for `sonic-3` users, who were previously receiving timestamps tied to the input transcript. diff --git a/changelog/4390.fixed.2.md b/changelog/4390.fixed.2.md new file mode 100644 index 000000000..cc0f62057 --- /dev/null +++ b/changelog/4390.fixed.2.md @@ -0,0 +1 @@ +- Fixed `CartesiaHttpTTSService` pushing two `ErrorFrame`s on a non-200 response — one with the API's error text and a second, less informative "Unknown error" frame from the outer exception handler. It now pushes a single frame that includes the HTTP status code and returns cleanly. diff --git a/changelog/4390.fixed.3.md b/changelog/4390.fixed.3.md new file mode 100644 index 000000000..6de9fd130 --- /dev/null +++ b/changelog/4390.fixed.3.md @@ -0,0 +1 @@ +- Fixed Cartesia tag helpers (`SPELL`, `EMOTION_TAG`, `PAUSE_TAG`, `VOLUME_TAG`, `SPEED_TAG`) raising `TypeError` when called on an instance (e.g. `tts.SPELL("hi")`). They're now `@staticmethod` and callable from both the class and an instance. diff --git a/changelog/4390.fixed.md b/changelog/4390.fixed.md new file mode 100644 index 000000000..4cc9afb3f --- /dev/null +++ b/changelog/4390.fixed.md @@ -0,0 +1 @@ +- Fixed `CartesiaTTSService` surfacing `flush_done` messages from Cartesia as `ErrorFrame`s. The latest API emits a `flush_done` per transcript when server-side buffering is disabled; Pipecat now consumes them silently since each turn already has its own `context_id`.