v0.0.107
pipecat-ai/pipecatv0.0.107Mar 24, 2026by aconchillo
AI Summary
This release adds support for the OpenAI Responses API and introduces new pipeline synchronization options like `frame_order` for `SyncParallelPipeline`. It also enhances the Daily transport with DTMF support and fixes critical frame ordering issues.
Key Highlights
- Added `OpenAIResponsesLLMService` for the new OpenAI API.
- Added `SyncParallelPipeline` with `frame_order` and synchronized audio/image output.
- Added DTMF input support to the Daily transport.
- Refactored tracing spans to align with OpenTelemetry GenAI conventions.
- Fixed TTS frame ordering and DeepgramSageMaker audio routing.
Breaking Changes
- DeepgramSageMakerTTSService now routes audio via `append_to_audio_context()`.
- GradiumTTSService now sends a per-context setup message.
- SarvamTTSService audio and error frames now route via `append_to_audio_context()`.
New Features
- OpenAIResponsesLLMService with streaming and function calling.
- frame_order parameter for pipeline frame sequencing.
- sync_with_audio field for synchronized image playback.
- audio_out_auto_silence parameter for transport settings.
Full Release Notes
### Added - Added `frame_order` parameter to `SyncParallelPipeline`. Set `frame_order=FrameOrder.PIPELINE` to push synchronized output frames in pipeline definition order (all frames from the first pipeline, then the second, etc.) instead of the default arrival order. (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) - Added `sync_with_audio` field to `OutputImageRawFrame`. When set to `True`, the output transport queues image frames with audio so they are displayed only after all preceding audio has been sent, enabling synchronized audio/image playback. (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) - Added `OpenAIResponsesLLMService`, a new LLM service that uses the OpenAI Responses API. Supports streaming text, function calling, usage metrics, and out-of-band inference. Works with the universal `LLMContext` and `LLMContextAggregatorPair`. See `examples/foundational/07-interruptible-openai-responses.py` and `14-function-calling-openai-responses.py`. (PR [#4074](https://github.com/pipecat-ai/pipecat/pull/4074)) - Added `audio_out_auto_silence` parameter to `TransportParams` (defaults to `True`). When set to `False`, the transport waits for audio data instead of inserting silence when the output queue is empty, which is useful for scenarios that require uninterrupted audio playback without artificial gaps. (PR [#4104](https://github.com/pipecat-ai/pipecat/pull/4104)) ### Changed - Renamed tracing span attributes to align with OpenTelemetry GenAI semantic conventions: `gen_ai.system` to `gen_ai.provider.name`, `system` to `gen_ai.system_instructions`, `gen_ai.usage.cache_read_input_tokens` to `gen_ai.usage.cache_read.input_tokens`, and `gen_ai.usage.cache_creation_input_tokens` to `gen_ai.usage.cache_creation.input_tokens`. (PR [#3449](https://github.com/pipecat-ai/pipecat/pull/3449)) - `DeepgramSageMakerTTSService` now correctly routes audio through the base `TTSService` audio context queue. Audio frames are delivered via `append_to_audio_context()` instead of being pushed directly, enabling proper ordering, interruption handling, and start/stop frame lifecycle management. Interruptions now trigger a `Clear` message to Deepgram (flushing its text buffer) at the right time via `on_audio_context_interrupted`. (PR [#4083](https://github.com/pipecat-ai/pipecat/pull/4083)) - `GradiumTTSService` now sends a per-context `setup` message with `client_req_id` before the first text message for each TTS context, following Gradium's multiplexing protocol. Previously, a single setup message was sent at connection time without a `client_req_id`, which prevented Gradium from associating requests with their sessions when using `close_ws_on_eos=False`. (PR [#4091](https://github.com/pipecat-ai/pipecat/pull/4091)) ### Fixed - Fixed stale `system_instruction` in LLM tracing spans by reading from `_settings.system_instruction` instead of the removed `_system_instruction` attribute. (PR [#3449](https://github.com/pipecat-ai/pipecat/pull/3449)) - Fixed `SyncParallelPipeline` breaking the Whisker debugger. (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) - Fixed `SyncParallelPipeline` race condition where concurrent SystemFrame processing (e.g. from RTVI) could corrupt sink queues and cause deadlocks. SystemFrames now take a fast path that passes them through without draining queued output. (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) - Fixed TTS frame ordering so that non-system frames always arrive in correct order relative to the `TTSStartedFrame`/`TTSAudioRawFrame`/`TTSStoppedFrame` sequence. Previously these frames could race ahead of or behind audio context frames, producing out-of-order output downstream. (PR [#4075](https://github.com/pipecat-ai/pipecat/pull/4075)) - Fixed `SarvamTTSService` audio and error frames now route through `append_to_audio_context()` instead of `push_frame()`, ensuring correct behavior with audio contexts and interruptions. (PR [#4082](https://github.com/pipecat-ai/pipecat/pull/4082)) - Fixed audio frame ordering and interruption handling in Fish Audio, LMNT, Neuphonic, and Rime NonJson TTS services. These services were bypassing the base `TTSService` audio context serialization queue by pushing audio frames directly, which could cause out-of-order frames and broken interruptions during speech. (PR [#4090](https://github.com/pipecat-ai/pipecat/pull/4090)) - Fixed Genesys AudioHook serializer to always include the `parameters` field in protocol messages. The AudioHook protocol requires every message to carry a `parameters` object (even if empty), but `_create_message` omitted it when no parameters were provided. This caused clients that validate message structure (including the Genesys reference implementation) to reject `pong` and parameter-less `closed` responses, breaking server sequence tracking and preventing `outputVariables` from reaching the Architect flow. (PR [#4093](https://github.com/pipecat-ai/pipecat/pull/4093))