v0.0.91

pipecat-ai/pipecatv0.0.91Oct 22, 2025by aconchillo

AI Summary

Added ability to start bot from /start endpoint with Daily transport, universal LLMContext support for AWSNovaSonic, bulbul:v3 model for Sarvam, new configuration options, trickle ICE support, runtime TTS settings updates, and various fixes for pipeline task cancellation and service issues.

Key Highlights

  • Daily transport /start endpoint with createDailyRoom support
  • Universal LLMContext support for AWSNovaSonicLLMService
  • bulbul:v3 model for Sarvam STT/TTS services
  • Trickle ICE support for SmallWebRTCTransport
  • Runtime TTS settings updates via TTSUpdateSettingsFrame

New Features

  • Bot start from /start endpoint with Daily transport
  • Universal LLMContext support for AWSNovaSonicLLMService
  • bulbul:v3 model for SarvamTTSService and SarvamHttpTTSService
  • keyterms_prompt parameter for AssemblyAIConnectionParams
  • speech_model parameter for AssemblyAIConnectionParams
  • Trickle ICE support for SmallWebRTCTransport
  • Runtime TTS settings updates for OpenAITTSService
  • on_connected and on_disconnected events for websocket-based services
  • aggregate_sentences argument for ElevenLabsHttpTTSService
  • room_properties argument for Daily runner configure() method
  • Runner --folder argument supports subdirectories

Full Release Notes

### Added

- It is now possible to start a bot from the `/start` endpoint when using the runner Daily's transport. This follows the Pipecat Cloud format with `createDailyRoom` and `body` fields in the POST request body.

- Added an ellipsis character (`…`) to the end of sentence detection in the string utils.

- Expanded support for universal `LLMContext` to `AWSNovaSonicLLMService`.  As a reminder, the context-setup pattern when using `LLMContext` is:

  ```python
  context = LLMContext(messages, tools)
  context_aggregator = LLMContextAggregatorPair(context)
  ```

  (Note that even though `AWSNovaSonicLLMService` now supports the universal `LLMContext`, it is not meant to be swapped out for another LLM service at runtime.)

  Worth noting: whether or not you use the new context-setup pattern with `AWSNovaSonicLLMService`, some types have changed under the hood:

  ```python
  ## BEFORE:

  # Context aggregator type
  context_aggregator: AWSNovaSonicContextAggregatorPair

  # Context frame type
  frame: OpenAILLMContextFrame

  # Context type
  context: AWSNovaSonicLLMContext
  # or
  context: OpenAILLMContext

  ## AFTER:

  # Context aggregator type
  context_aggregator: LLMContextAggregatorPair

  # Context frame type
  frame: LLMContextFrame

  # Context type
  context: LLMContext
  ```

- Added support for `bulbul:v3` model in `SarvamTTSService` and `SarvamHttpTTSService`.

- Added `keyterms_prompt` parameter to `AssemblyAIConnectionParams`.

- Added `speech_model` parameter to `AssemblyAIConnectionParams` to access the multilingual model.

- Added support for trickle ICE to the `SmallWebRTCTransport`.

- Added support for updating `OpenAITTSService` settings (`instructions` and `speed`) at runtime via `TTSUpdateSettingsFrame`.

- Added `--whatsapp` flag to runner to better surface WhatsApp transport logs.

- Added `on_connected` and `on_disconnected` events to TTS and STT websocket-based services.

- Added an `aggregate_sentences` arg in `ElevenLabsHttpTTSService`, where the default value is True.

- Added a `room_properties` arg to the Daily runner's `configure()` method, allowing `DailyRoomProperties` to be provided.

- The runner `--folder` argument now supports downloading files from subdirectories.

### Changed

- `RunnerArguments` now include the `body` field, so there's no need to add it to subclasses. Also, all `RunnerArguments` fields are now keyword-only.

- `CartesiaSTTService` now inherits from `WebsocketSTTService`.

- Package upgrades:

  - `daily-python` upgraded to 0.20.0.
  - `openai` upgraded to support up to 2.x.x.
  - `openpipe` upgraded to support up to 5.x.x.

- `SpeechmaticsSTTService` updated dependencies for `speechmatics-rt>=0.5.0`.

### Deprecated

- The `send_transcription_frames` argument to `AWSNovaSonicLLMService` is deprecated. Transcription frames are now always sent. They go upstream, to be handled by the user context aggregator. See "Added" section for details.

- Types in `pipecat.services.aws.nova_sonic.context` have been deprecated due to changes to support `LLMContext`. See "Changed" section for details.

### Fixed

- Fixed an issue where the `RTVIProcessor` was sending duplicate `UserStartedSpeakingFrame` and `UserStoppedSpeakingFrame` messages.

- Fixed an issue in `AWSBedrockLLMService` where both `temperature` and `top_p` were always sent together, causing conflicts with models like Claude Sonnet 4.5 that don't allow both parameters simultaneously. The service now only includes inference parameters that are explicitly set, and `InputParams` defaults have been changed to `None` to rely on AWS Bedrock's built-in model defaults.

- Fixed an issue in `RivaSegmentedSTTService` where a runtime error occurred due to a mismatch in the `_handle_transcription` method's signature.

- Fixed multiple pipeline task cancellation issues. `asyncio.CancelledError` is now handled properly in `PipelineTask` making it possible to cancel an asyncio task that it's executing a `PipelineRunner` cleanly. Also, `PipelineTask.cancel()` does not block anymore waiting for the `CancelFrame` to reach the end of the pipeline (going back to the behavior in < 0.0.83).

- Fixed an issue in `ElevenLabsTTSService` and `ElevenLabsHttpTTSService` where the Flash models would split words, resulting in a space being inserted between words.

- Fixed an issue where audio filters' `stop()` would not be called when using `CancelFrame`.

- Fixed an issue in `ElevenLabsHttpTTSService`, where `apply_text_normalization` was incorrectly set as a query parameter. It's now being added as a request parameter.

- Fixed an issue where `RimeHttpTTSService` and `PiperTTSService` could generate incorrectly 16-bit aligned audio frames, potentially leading to internal errors or static audio.

- Fixed an issue in `SpeechmaticsSTTService` where `AdditionalVocabEntry` items needed to have `sounds_like` for the session to start.

### Other

- Added foundational example `47-sentry-metrics.py`, demonstrating how to use the `SentryMetrics` processor.

- Added foundational example `14x-function-calling-openpipe.py`.