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`.