From a9118eb2cde012630f9fdf0ed02db0dbedbfb3fe Mon Sep 17 00:00:00 2001 From: ivaaan Date: Tue, 28 Oct 2025 20:36:34 +0100 Subject: [PATCH 1/2] use Octave 1 if description provided --- src/pipecat/services/hume/tts.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pipecat/services/hume/tts.py b/src/pipecat/services/hume/tts.py index 0629a8909..c995f426d 100644 --- a/src/pipecat/services/hume/tts.py +++ b/src/pipecat/services/hume/tts.py @@ -184,11 +184,15 @@ class HumeTTSService(TTSService): # Hume emits mono PCM at 48 kHz; downstream can resample if needed. # We buffer audio bytes before sending to prevent glitches. self._audio_bytes = b"" + + # Use version "2" by default if no description is provided + # Version "1" is needed when description is used + version = "1" if self._params.description is not None else "2" async for chunk in self._client.tts.synthesize_json_streaming( utterances=[utterance], format=pcm_fmt, instant_mode=True, - version="2", + version=version, ): audio_b64 = getattr(chunk, "audio", None) if not audio_b64: From 9307079af2ab297b5db94354866ca3b8c1745389 Mon Sep 17 00:00:00 2001 From: ivaaan Date: Wed, 29 Oct 2025 17:05:41 +0100 Subject: [PATCH 2/2] upd changelog --- CHANGELOG.md | 309 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 295 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae7e3dcb1..13324c317 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,18 +7,299 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Updated `daily-python` to 0.21.0. + +- `SimliVideoService` now accepts `api_key` and `face_id` parameters directly, + with optional `params` for `max_session_length` and `max_idle_time` + configuration, aligning with other Pipecat service patterns. + +- Updated the default model to `sonic-3` for `CartesiaTTSService` and + `CartesiaHttpTTSService`. + +- `FunctionFilter` now has a `filter_system_frames` arg, which controls whether + or not SystemFrames are filtered. + +- Upgraded `aws_sdk_bedrock_runtime` to v0.1.1 to resolve potential CPU issues + when running `AWSNovaSonicLLMService`. + +### Deprecated + +- `SimliVideoService` `simli_config` parameter is deprecated. Use `api_key` and + `face_id` parameters instead. + +### Removed + +- Removed the `aiohttp_session` arg from `SarvamTTSService` as it's no longer + used. + +### Fixed + +- Fixed an issue where `DailyTransport` would timeout prematurely on join and on + leave. + +- Fixed an issue in the runner where starting a DailyTransport room via + `/start` didn't support using the `DAILY_SAMPLE_ROOM_URL` env var. + +- Fixed an issue in `ServiceSwitcher` where the `STTService`s would result in + all STT services producing `TranscriptionFrame`s. + +- Fixed an issue in `HumeTTSService` that was only using Octave 2, which does not support the `description` field. Now, if a description is provided, it switches to Octave 1. + +## [0.0.91] - 2025-10-21 + ### 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`. + +## [0.0.90] - 2025-10-10 + +### Added + +- Added audio filter `KrispVivaFilter` using the Krisp VIVA SDK. + +- Added `--folder` argument to the runner, allowing files saved in that folder + to be downloaded from `http://HOST:PORT/file/FILE`. + +- Added `GeminiLiveVertexLLMService`, for accessing Gemini Live via Google + Vertex AI. + +- Added some new configuration options to `GeminiLiveLLMService`: + + - `thinking` + - `enable_affective_dialog` + - `proactivity` + + Note that these new configuration options require using a newer model than + the default, like "gemini-2.5-flash-native-audio-preview-09-2025". The last + two require specifying `http_options=HttpOptions(api_version="v1alpha")`. + +- Added `on_pipeline_error` event to `PipelineTask`. This event will get fired + when an `ErrorFrame` is pushed (use `FrameProcessor.push_error()`). + + ```python + @task.event_handler("on_pipeline_error") + async def on_pipeline_error(task: PipelineTask, frame: ErrorFrame): + ... + ``` + +- Added a `service_tier` `InputParam` to the `BaseOpenAILLMService`. This + parameter can influence the latency of the response. For example `"priority"` + will result in faster completions, but in exchange for a higher price. + +### Changed + +- Updated `GeminiLiveLLMService` to use the `google-genai` library rather than + use WebSockets directly. + +### Deprecated + +- `LivekitFrameSerializer` is now deprecated. Use `LiveKitTransport` instead. + +- `pipecat.service.openai_realtime` is now deprecated, use + `pipecat.services.openai.realtime` instead or + `pipecat.services.azure.realtime` for Azure Realtime. + +- `pipecat.service.aws_nova_sonic` is now deprecated, use + `pipecat.services.aws.nova_sonic` instead. + +- `GeminiMultimodalLiveLLMService` is now deprecated, use + `GeminiLiveLLMService`. + +### Fixed + +- Fixed a `GoogleVertexLLMService` issue that would generate an error if no + token information was returned. + +- `GeminiLiveLLMService` will now end gracefully (i.e. after the bot has + finished) upon receiving an `EndFrame`. + +- `GeminiLiveLLMService` will try to seamlessly reconnect when it loses its + connection. + +## [0.0.89] - 2025-10-07 + +### Fixed + +- Reverted a change introduced in 0.0.88 that was causing pipelines to be frozen + when using interruption strategies and processors that block interruption + frames (e.g. `STTMuteFilter`). + +## [0.0.88] - 2025-10-07 + +### Added + +- Added support for Nano Banana models to `GoogleLLMService`. For example, you + can now use the `gemini-2.5-flash-image` model to generate images. + +- Added `HumeTTSService` for text-to-speech synthesis using Hume AI's expressive + voice models. Provides high-quality, emotionally expressive speech synthesis + with support for various voice models. Includes example in + `examples/foundational/07ad-interruptible-hume.py`. Use with: + `uv pip install pipecat-ai[hume]`. + +### Changed + +- Updated default `GoogleLLMService` model to `gemini-2.5-flash`. + +### Deprecated + +- PlayHT is shutting down their API on December 31st, 2025. As a result, + `PlayHTTTSService` and `PlayHTHttpTTSService` are deprecated and will be + removed in a future version. + +### Fixed + +- Fixed an issue with `AWSNovaSonicLLMService` where the client wouldn't + connect due to a breaking change in the AWS dependency chain. + - `PermissionError` is now caught if NLTK's `punkt_tab` can't be downloaded. -- Added `HumeTTSService` for text-to-speech synthesis using Hume AI's - expressive voice models. Provides high-quality, emotionally expressive speech - synthesis with support for various voice models. Includes example in - `examples/foundational/07ad-interruptible-hume.py`. - -- Added `hume` optional dependency group for Hume AI TTS integration. - -### Fixed +- Fixed an issue that would cause wrong user/assistant context ordering when + using interruption strategies. - Fixed RTVI incoming message handling, broken in 0.0.87. @@ -1396,7 +1677,7 @@ quality and critical bugs impacting `ParallelPipelines` functionality.** - Added `session_token` parameter to `AWSNovaSonicLLMService`. - Added Gemini Multimodal Live File API for uploading, fetching, listing, and - deleting files. See `26f-gemini-multimodal-live-files-api.py` for example usage. + deleting files. See `26f-gemini-live-files-api.py` for example usage. ### Changed @@ -3402,7 +3683,7 @@ stt = DeepgramSTTService(..., live_options=LiveOptions(model="nova-2-general")) - Added the new modalities option and helper function to set Gemini output modalities. -- Added `examples/foundational/26d-gemini-multimodal-live-text.py` which is +- Added `examples/foundational/26d-gemini-live-text.py` which is using Gemini as TEXT modality and using another TTS provider for TTS process. ### Changed @@ -3589,9 +3870,9 @@ stt = DeepgramSTTService(..., live_options=LiveOptions(model="nova-2-general")) - Added new foundational examples for `GeminiMultimodalLiveLLMService`: - `26-gemini-multimodal-live.py` - - `26a-gemini-multimodal-live-transcription.py` - - `26b-gemini-multimodal-live-video.py` - - `26c-gemini-multimodal-live-video.py` + - `26a-gemini-live-transcription.py` + - `26b-gemini-live-video.py` + - `26c-gemini-live-video.py` - Added `SimliVideoService`. This is an integration for Simli AI avatars. (see https://www.simli.com) @@ -5041,4 +5322,4 @@ a bit. ## [0.0.2] - 2024-03-12 -Initial public release. +Initial public release. \ No newline at end of file