Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
e33172c
Add PR 3420 to CHANGELOG (it was missing)
kompfner Jan 14, 2026
e7b5ff4
Merge pull request #3447 from pipecat-ai/pk/add-pr-3420-to-changelog
kompfner Jan 14, 2026
e107902
Do a consistency pass on how we're sending `UserStartedSpeakingFrame`…
kompfner Jan 14, 2026
f3993f1
fix to make on_user_turn_stop_timeout work with ExternalUserTurnStrat…
markbackman Jan 15, 2026
965466c
Merge pull request #3454 from pipecat-ai/mb/external-turn-strategies-…
markbackman Jan 15, 2026
9e705ce
UserTurnController: reset user turn start strategies when turn triggered
aconchillo Jan 15, 2026
dcd5840
Merge pull request #3455 from pipecat-ai/aleix/reset-user-turn-start-…
aconchillo Jan 15, 2026
24082b8
Merge pull request #3453 from pipecat-ai/pk/consistency-pass-on-user-…
kompfner Jan 15, 2026
efd4432
Renumber the 07 foundational examples
markbackman Jan 15, 2026
7ae0d65
added cambai tts integration
eRuaro Dec 29, 2025
ed0ff46
added local test
eRuaro Jan 4, 2026
be098e8
Remove non-working Daily/WebRTC example
eRuaro Jan 4, 2026
fcab989
Add changelog entry for Camb.ai TTS integration
eRuaro Jan 4, 2026
54933be
Rename changelog to PR number
eRuaro Jan 4, 2026
a3d7e9e
Address PR feedback: add --voice-id arg, remove test script
eRuaro Jan 5, 2026
a541d65
Update MARS model names to mars-flash, mars-pro, mars-instruct
eRuaro Jan 9, 2026
56da2ca
Update Camb.ai TTS inference options
eRuaro Jan 9, 2026
78fa2ab
Update default voice ID, fix MARS naming, and clean up example
eRuaro Jan 9, 2026
c1f3cbd
Yield TTSAudioRawFrame directly instead of calling private method
eRuaro Jan 12, 2026
9293b5f
Migrate Camb TTS service from raw HTTP to official SDK
eRuaro Jan 12, 2026
641d170
Clean up Camb TTS service and tests
eRuaro Jan 12, 2026
e76a3d0
Update Camb TTS to 48kHz sample rate
eRuaro Jan 12, 2026
ed120d0
Add model-specific sample rates, transport example, and fix audio buf…
eRuaro Jan 12, 2026
003c24c
Make model parameter explicit in docstring example
eRuaro Jan 12, 2026
9942fcf
updated per PR reviews
eRuaro Jan 15, 2026
0e3532c
Allow WebsocketClientTransport to send custom headers
glennpow Jan 15, 2026
256c70c
use UserTurnStrategies
eRuaro Jan 15, 2026
80604ba
remove _update_settings method
eRuaro Jan 15, 2026
38c3bce
exclude camb from docs build
eRuaro Jan 15, 2026
8cf72b3
manually add camb-sdk to uv.lock, exclude camb from docs build
eRuaro Jan 15, 2026
f60eeaa
reverted uv.lock, updated readthedocs.yaml, copyright year updates
eRuaro Jan 15, 2026
26ddb2d
minimal uv.lock update for camb-sdk
eRuaro Jan 15, 2026
30a3f42
Merge pull request #3349 from eRuaro/feat/camb-tts-integration
markbackman Jan 15, 2026
c8e4b46
Merge pull request #3460 from pipecat-ai/mb/reorder-07-examples
markbackman Jan 15, 2026
7a22d58
Fix "bot-llm-text" not firing when using AWS Nova Sonic
kompfner Jan 15, 2026
885b318
Fix "bot-llm-text" not firing when using Gemini Live
kompfner Jan 15, 2026
5753762
Fix "bot-llm-text" not firing when using OpenAI Realtime
kompfner Jan 15, 2026
5de80a6
Fix "bot-llm-text" not firing when using Grok Realtime
kompfner Jan 15, 2026
ce99924
Add CHANGELOG entry describing fix for the missing "bot-llm-text" RTV…
kompfner Jan 15, 2026
f3c2e29
Clean up CambTTSService
markbackman Jan 15, 2026
6021604
Docs fixes after 0.0.99
markbackman Jan 15, 2026
e75c241
Merge pull request #3468 from pipecat-ai/mb/camb-cleanuo
markbackman Jan 15, 2026
21aaa48
Fix pydantic issues impacting autodoc
markbackman Jan 15, 2026
4458ca1
Mock FastAPI
markbackman Jan 15, 2026
64a1ad2
Merge pull request #3470 from pipecat-ai/mb/fix-docs-0.0.99
markbackman Jan 15, 2026
1510fb4
add Hathora STT and TTS services
mikeseese Dec 1, 2025
e5632a9
transition Hathora service to use the unified API and apply PR feedback
mikeseese Dec 18, 2025
e9f1d95
Apply suggestions from code review
mikeseese Jan 5, 2026
bcccb4c
put fallback sample_rate value in function arg
mikeseese Jan 5, 2026
7be7fb4
remove turn_analyzer args from transport params
mikeseese Jan 5, 2026
e7c83c1
port turn_start_strategies to the newer user_turn_strategies
mikeseese Jan 5, 2026
ba25b27
fix issues with PR suggestions
mikeseese Jan 5, 2026
6c7e386
remove traced_stt from run_stt
mikeseese Jan 5, 2026
1b3b677
switch hathora services to use `InputParams` pattern
mikeseese Jan 5, 2026
e77bdf6
add can_generate_metrics functions
mikeseese Jan 5, 2026
67fdb0b
use parent _settings dict instead of self._params pattern
mikeseese Jan 5, 2026
d2df324
fix some bugs after testing changes
mikeseese Jan 5, 2026
2249f3d
add requested changes from code review
mikeseese Jan 10, 2026
ec40696
Revert pydantic 2.12 extra type annotation
markbackman Jan 16, 2026
37914cb
Removed import and added changelog entry.
glennpow Jan 16, 2026
63d1393
Add whisker_setup.py to .gitignore
markbackman Jan 16, 2026
b292b32
Merge pull request #3461 from glennpow/glenn/websocket-headers
markbackman Jan 16, 2026
19fb3ee
Merge pull request #3466 from pipecat-ai/pk/fix-aws-nova-sonic-rtvi-b…
kompfner Jan 16, 2026
11ecc5f
Update project.urls for PyPI
markbackman Jan 16, 2026
c7ab87b
turns: move mute to user_mute
aconchillo Jan 16, 2026
58552af
examples(foundational): remote STTMuteFilter example
aconchillo Jan 16, 2026
41cb53f
Merge pull request #3479 from pipecat-ai/aleix/turns-mute-to-user-mute
aconchillo Jan 16, 2026
c2a0735
MinWordsUserTurnStartStrategy: don't aggregate transcriptions
aconchillo Jan 15, 2026
a9a9f3a
Merge pull request #3462 from pipecat-ai/aleix/fix-min-words-transcri…
aconchillo Jan 16, 2026
28d0bb9
Merge pull request #3472 from pipecat-ai/mb/whisker-dev
markbackman Jan 16, 2026
32c7753
Merge pull request #3471 from pipecat-ai/mb/fix-pydantic-2.12-docs
markbackman Jan 16, 2026
1e8516e
Merge pull request #3476 from pipecat-ai/mb/project-urls
markbackman Jan 16, 2026
1c13ad9
Fix Pylance reportOptionalMemberAccess in _handle_function_call_cancel
jamsea Jan 16, 2026
836cf60
Fix an issue where Grok Realtime would error out when running with Sm…
kompfner Jan 16, 2026
b11150f
Merge pull request #3480 from pipecat-ai/pk/fix-grok-realtime-smallwe…
kompfner Jan 16, 2026
6eadad5
BaseInputTransport: throttle UserSpeakingFrame
aconchillo Jan 16, 2026
ac3fa7f
BaseOuputTransport: minor cleanup
aconchillo Jan 16, 2026
a6e7c99
Remove async_mode parameter from Mem0 storage
amichyrpi Jan 16, 2026
84c7e97
Merge pull request #3483 from pipecat-ai/aleix/throttle-user-speaking…
aconchillo Jan 16, 2026
2e8e574
Add UserIdleController, deprecate UserIdleProcessor
markbackman Jan 16, 2026
4fb4c26
Merge pull request #3484 from amichyrpi/main
aconchillo Jan 16, 2026
2114abb
add changelog file for 3484
aconchillo Jan 16, 2026
473d397
Merge pull request #3482 from pipecat-ai/mb/user-idle-in-user-aggregator
markbackman Jan 16, 2026
6fa797c
Fix AWS Nova Sonic `reset_conversation()`, which would previously err…
kompfner Jan 17, 2026
f7d3e63
Merge pull request #3474 from pipecat-ai/fix/optional-member-access-f…
aconchillo Jan 17, 2026
1e11609
Update on_user_idle to on_user_turn_idle
markbackman Jan 17, 2026
043403f
fix: AzureTTSService punctuation spacing
markbackman Jan 17, 2026
e22bc77
Fix spacing for CJK languages
markbackman Jan 17, 2026
1485ea0
Merge pull request #3488 from pipecat-ai/mb/on-user-turn-idle
markbackman Jan 17, 2026
af89154
Merge pull request #3489 from pipecat-ai/mb/fix-azure-tts-punctuation…
markbackman Jan 17, 2026
11924bb
Add on_user_mute_started and on_user_mute_stopped events
markbackman Jan 17, 2026
e69ccd8
Merge pull request #3490 from pipecat-ai/mb/on-user-mute-events
markbackman Jan 17, 2026
f48a567
run the linter
mikeseese Jan 17, 2026
a3d2060
move hathora example as requested
mikeseese Jan 17, 2026
dc8ea61
add hathora to run-release-evals.py
mikeseese Jan 17, 2026
829c5f4
Merge pull request #3169 from Incanta/hathora
markbackman Jan 17, 2026
0b93c3f
Add Camb TTS to release evals
markbackman Jan 17, 2026
ce7d823
Remove unused imports
markbackman Jan 18, 2026
990d838
fix: make SmallWebRTCConnection pc_id globally unique
omChauhanDev Jan 18, 2026
4a9eb82
fix: preserve UninterruptibleFrames in __reset_process_queue
omChauhanDev Jan 18, 2026
5fc46cc
Merge pull request #3493 from omChauhanDev/fix/globally-unique-pc-id
filipi87 Jan 19, 2026
dfc1f09
fix(livekit): prevent memory leak when video_in_enabled is False
lukepayyapilli Jan 19, 2026
cc4c365
Merge pull request #3491 from pipecat-ai/mb/update-release-evals
markbackman Jan 19, 2026
562bdd3
test: add livekit to dev deps and improve test clarity
lukepayyapilli Jan 19, 2026
c89ae71
style: fix ruff formatting
lukepayyapilli Jan 19, 2026
11cf891
Manual updates for unused imports
markbackman Jan 18, 2026
cddd6d5
Merge pull request #3492 from pipecat-ai/mb/remove-unused-imports
markbackman Jan 19, 2026
aed44c8
scripts(eval): give examples to numerical word answers
aconchillo Jan 19, 2026
f03a717
Merge pull request #3501 from pipecat-ai/aleix/improve-eval-numerical…
aconchillo Jan 20, 2026
f6359d4
chore: install livekit as optional extra in CI instead of dev dep
lukepayyapilli Jan 20, 2026
1ac811a
chore: revert unrelated uv.lock changes
lukepayyapilli Jan 20, 2026
c89083e
Improve 20e example to ask the bot to give a recap when loading a pre…
kompfner Jan 17, 2026
b4d143e
Add CHANGELOG for fixing `AWSNovaSonicLLMService.reset_conversation()`
kompfner Jan 17, 2026
06b3ecd
In AWS Nova Sonic service, send the "interactive" user message (which…
kompfner Jan 17, 2026
778dacc
Merge pull request #3486 from pipecat-ai/pk/fix-nova-sonic-reset-conv…
kompfner Jan 20, 2026
6cf0d53
AIService: handle StartFrame/EndFrame/CancelFrame exceptions
aconchillo Jan 20, 2026
024809b
Merge pull request #3503 from pipecat-ai/aleix/ai-service-start-end-c…
aconchillo Jan 20, 2026
9a718de
NvidiaTTSService: initialize client on StartFrame
aconchillo Jan 20, 2026
671dc8c
NvidiaSTTService: initialize client on StartFrame
aconchillo Jan 20, 2026
655006a
NvidiaSegmentedSTTService: simplify exception handling
aconchillo Jan 20, 2026
a010a02
add changelog fo 3504
aconchillo Jan 20, 2026
fa6f924
Log Daily participant and meeting session IDs upon successful join in…
sunahsuh Jan 16, 2026
bf43032
Merge pull request #3504 from pipecat-ai/aleix/nvidia-stt-tts-error-h…
aconchillo Jan 20, 2026
03faadd
Merge pull request #3508 from pipecat-ai/ss/log-daily-ids
markbackman Jan 20, 2026
a266644
Merge pull request #3494 from omChauhanDev/fix/uninterruptible-frame-…
aconchillo Jan 20, 2026
bd45ce2
Merge pull request #3499 from lukepayyapilli/fix/livekit-video-queue-…
aconchillo Jan 20, 2026
461bd0a
update changelog for #3494 and #3499
aconchillo Jan 20, 2026
14495c4
NVIDIASTTService: no need for additional queue and task
aconchillo Jan 20, 2026
a787fd9
NVIDIATTSService: process incoming audio frame right away
aconchillo Jan 20, 2026
13c52e0
Merge pull request #3509 from pipecat-ai/aleix/nvidia-stt-tts-improve…
aconchillo Jan 21, 2026
7e0ca11
CambTTSService: initialize client during StartFrame
aconchillo Jan 21, 2026
59ed422
Merge pull request #3511 from pipecat-ai/aleix/camb-tts-client-on-start
aconchillo Jan 21, 2026
5f9ff8b
Update changelog for version 0.0.100
aconchillo Jan 21, 2026
768d395
Merge pull request #3512 from pipecat-ai/changelog-0.0.100
aconchillo Jan 21, 2026
4a72437
refactor(user_mute): remove unnecessary _bot_speaking assignment in _…
okue Jan 21, 2026
7ed1106
Merge pull request #3516 from okue/minorpatch1
markbackman Jan 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:

- name: Install dependencies
run: |
uv sync --group dev --extra anthropic --extra aws --extra google --extra langchain --extra websocket
uv sync --group dev --extra anthropic --extra aws --extra google --extra langchain --extra livekit --extra websocket

- name: Run tests with coverage
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:

- name: Install dependencies
run: |
uv sync --group dev --extra anthropic --extra aws --extra google --extra langchain --extra websocket
uv sync --group dev --extra anthropic --extra aws --extra google --extra langchain --extra livekit --extra websocket

- name: Test with pytest
run: |
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,7 @@ docs/api/_build/
docs/api/api

# uv
.python-version
.python-version

# Pipecat
whisker_setup.py
127 changes: 127 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,129 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

<!-- towncrier release notes start -->

## [0.0.100] - 2026-01-20

### Added

- Added Hathora service to support Hathora-hosted TTS and STT models (only
non-streaming)
(PR [#3169](https://github.com/pipecat-ai/pipecat/pull/3169))

- Added `CambTTSService`, using Camb.ai's TTS integration with MARS models
(mars-flash, mars-pro, mars-instruct) for high-quality text-to-speech
synthesis.
(PR [#3349](https://github.com/pipecat-ai/pipecat/pull/3349))

- Added the `additional_headers` param to `WebsocketClientParams`, allowing
`WebsocketClientTransport` to send custom headers on connect, for cases such
as authentication.
(PR [#3461](https://github.com/pipecat-ai/pipecat/pull/3461))

- Added `UserIdleController` for detecting user idle state, integrated into
`LLMUserAggregator` and `UserTurnProcessor` via optional `user_idle_timeout`
parameter. Emits `on_user_turn_idle` event for application-level handling.
Deprecated `UserIdleProcessor` in favor of the new compositional approach.
(PR [#3482](https://github.com/pipecat-ai/pipecat/pull/3482))

- Added `on_user_mute_started` and `on_user_mute_stopped` event handlers to
`LLMUserAggregator` for tracking user mute state changes.
(PR [#3490](https://github.com/pipecat-ai/pipecat/pull/3490))

### Changed

- Enhanced interruption handling in `AsyncAITTSService` by supporting
multi-context WebSocket sessions for more robust context management.
(PR [#3287](https://github.com/pipecat-ai/pipecat/pull/3287))

- Throttle `UserSpeakingFrame` to broadcast at most every 200ms instead of on
every audio chunk, reducing frame processing overhead during user speech.
(PR [#3483](https://github.com/pipecat-ai/pipecat/pull/3483))

### Deprecated

- For consistency with other package names, we just deprecated
`pipecat.turns.mute` (introduced in Pipecat 0.0.99) in favor of
`pipecat.turns.user_mute`.
(PR [#3479](https://github.com/pipecat-ai/pipecat/pull/3479))

### Fixed

- Corrected TTFB metric calculation in `AsyncAIHttpTTSService`.
(PR [#3287](https://github.com/pipecat-ai/pipecat/pull/3287))

- Fixed an issue where the "bot-llm-text" RTVI event would not fire for
realtime (speech-to-speech) services:

- `AWSNovaSonicLLMService`
- `GeminiLiveLLMService`
- `OpenAIRealtimeLLMService`
- `GrokRealtimeLLMService`

The issue was that these services weren't pushing `LLMTextFrame`s. Now
they do.
(PR [#3446](https://github.com/pipecat-ai/pipecat/pull/3446))

- Fixed an issue where `on_user_turn_stop_timeout` could fire while a user is
talking when using `ExternalUserTurnStrategies`.
(PR [#3454](https://github.com/pipecat-ai/pipecat/pull/3454))

- Fixed an issue where user turn start strategies were not being reset after a
user turn started, causing incorrect strategy behavior.
(PR [#3455](https://github.com/pipecat-ai/pipecat/pull/3455))

- Fixed `MinWordsUserTurnStartStrategy` to not aggregate transcriptions,
preventing incorrect turn starts when words are spoken with pauses between
them.
(PR [#3462](https://github.com/pipecat-ai/pipecat/pull/3462))

- Fixed an issue where Grok Realtime would error out when running with
SmallWebRTC transport.
(PR [#3480](https://github.com/pipecat-ai/pipecat/pull/3480))

- Fixed a `Mem0MemoryService` issue where passing `async_mode: true` was
causing an error. See
https://docs.mem0.ai/platform/features/async-mode-default-change.
(PR [#3484](https://github.com/pipecat-ai/pipecat/pull/3484))

- Fixed `AWSNovaSonicLLMService.reset_conversation()`, which would previously
error out. Now it successfully reconnects and "rehydrates" from the context
object.
(PR [#3486](https://github.com/pipecat-ai/pipecat/pull/3486))

- Fixed `AzureTTSService` transcript formatting issues:
- Punctuation now appears without extra spaces (e.g., "Hello!" instead of
"Hello !")
- CJK languages (Chinese, Japanese, Korean) no longer have unwanted spaces
between characters
(PR [#3489](https://github.com/pipecat-ai/pipecat/pull/3489))

- Fixed an issue where `UninterruptibleFrame` frames would not be preserved in
some cases.
(PR [#3494](https://github.com/pipecat-ai/pipecat/pull/3494))

- Fixed memory leak in `LiveKitTransport` when `video_in_enabled` is `False`.
(PR [#3499](https://github.com/pipecat-ai/pipecat/pull/3499))

- Fixed an issue in `AIService` where unhandled exceptions in `start()`,
`stop()`, or `cancel()` implementations would prevent `process_frame()` to
continue and therefore `StartFrame`, `EndFrame`, or `CancelFrame` from being
pushed downstream, causing the pipeline to not start or stop properly.
(PR [#3503](https://github.com/pipecat-ai/pipecat/pull/3503))

- Moved `NVIDIATTSService` and `NVIDIASTTService` client initialization from
constructor to `start()` for better error handling.
(PR [#3504](https://github.com/pipecat-ai/pipecat/pull/3504))

- Optimized `NVIDIATTSService` to process incoming audio frames immediately.
(PR [#3509](https://github.com/pipecat-ai/pipecat/pull/3509))

- Optimized `NVIDIASTTService` by removing unnecessary queue and task.
(PR [#3509](https://github.com/pipecat-ai/pipecat/pull/3509))

- Fixed a `CambTTSService` issue where client was being initialized in the
constructor which wouldn't allow for proper Pipeline error handling.
(PR [#3511](https://github.com/pipecat-ai/pipecat/pull/3511))

## [0.0.99] - 2026-01-13

### Added
Expand Down Expand Up @@ -450,6 +573,7 @@ PIPECAT_SETUP_FILES="setup1.py:setup.py:..."`). Each file must define a
### Fixed

- Improved error handling in `ElevenLabsRealtimeSTTService`
(PR [#3233](https://github.com/pipecat-ai/pipecat/pull/3233))

- Fixed an issue in `ElevenLabsRealtimeSTTService` causing an infinite loop
that blocks the process if the websocket disconnects due to an error
Expand Down Expand Up @@ -500,6 +624,9 @@ PIPECAT_SETUP_FILES="setup1.py:setup.py:..."`). Each file must define a
guard was set.
(PR [#3400](https://github.com/pipecat-ai/pipecat/pull/3400))

- Fixed parallel function calling when using Gemini thinking.
(PR [3420](https://github.com/pipecat-ai/pipecat/pull/3420))

- Fixed an issue in `traced_llm` where `model_name` in OpenTelemetry appears as
`unknown`.
(PR [#3422](https://github.com/pipecat-ai/pipecat/pull/3422))
Expand Down
Loading