Aleix Conchillo Flaqué
ffb5895404
tests: add initial tests for universal LLMUserAggregator
2025-12-23 15:51:06 -08:00
Aleix Conchillo Flaqué
a0d5ee3873
MinWordsUserTurnStartStrategy: single word interrupt if bot not speaking
2025-12-22 14:32:21 -08:00
Aleix Conchillo Flaqué
2cdf207227
turns: add TranscriptionUserTurnStartStrategy
2025-12-19 14:47:02 -08:00
Aleix Conchillo Flaqué
3d62b9c203
tests: added user turn start strategies unit tests
2025-12-19 14:47:01 -08:00
Aleix Conchillo Flaqué
7e69288898
tests: added bot turn start strategies unit tests
2025-12-19 14:47:01 -08:00
Aleix Conchillo Flaqué
6c0e4be4ac
Merge pull request #3205 from gui217/feat/rnnoise
...
Feat/rnnoise
2025-12-17 18:22:22 -08:00
Mark Backman
21a55f6aae
Update run_inference to use the provided LLM configuration params
2025-12-17 10:58:05 -05:00
Mark Backman
6cda357ce8
Remove timestamp check from TestThoughtTranscription
2025-12-12 14:28:39 -05:00
kompfner
1e98094394
Merge pull request #3175 from pipecat-ai/pk/thinking-exploration
...
Additional functionality related to thinking, for Google and Anthropic LLMs.
2025-12-11 17:15:37 -05:00
gui217
1c0e25a90d
fix unit tests
2025-12-09 09:56:20 +02:00
Aleix Conchillo Flaqué
88289f578a
Merge pull request #3208 from pipecat-ai/thor/add-client-identification
...
add Gemini client identification
2025-12-08 13:05:04 -08:00
Aleix Conchillo Flaqué
d289b38ba7
tests(google): mock the new pipecat.version()
2025-12-08 11:51:01 -08:00
Paul Kompfner
61674d7758
Add process_thought constructor argument to TranscriptProcessor to control whether to handle thoughts in addition to assistant utterances. Defaults to False.
2025-12-08 10:27:36 -05:00
Paul Kompfner
8ccc2cbf31
Add unit tests for ThoughtTranscriptProcessor
2025-12-08 10:14:31 -05:00
gui217
d3ae0b6a14
rebase
2025-12-08 11:36:44 +02:00
thorwebdev
15df3c06e8
chore: add test.
2025-12-06 22:36:04 -05:00
Aleix Conchillo Flaqué
7ad3969690
introduce UninterruptibleFrame frames
2025-12-05 09:21:36 -08:00
Mark Backman
d79dd94019
Make aggregate return an AsyncIterator, other clean up
2025-12-03 22:00:34 -05:00
Mark Backman
4d66191963
fix: PatternPairAggregator to process patterns only once
2025-12-03 22:00:04 -05:00
Mark Backman
7e9d67002e
SkipTagsAggregator and PatternPairAggregator now subclass SimpleTextAggregator
2025-12-03 22:00:04 -05:00
Mark Backman
ffbb6e5937
Update SimpleTextAggregator to handle character by character input, use a buffer to handle ambiguous EOS scenarios, and add a flush method to all aggregators
2025-12-03 22:00:02 -05:00
Mark Backman
535b85cf90
Add split_text_by_spaces string util
2025-12-03 21:55:30 -05:00
mattie ruth backman
6b6d760cf1
Introduced LLMTextProcessor and deprecatd custom text_aggregators in TTS
...
Introduced `LLMTextProcessor`: A new processor meant to allow customization for how
LLMTextFrames should be aggregated and considered. It's purpose is to turn
`LLMTextFrame`s into `AggregatedTextFrame`s. By default, a TTSService will still
aggregate `LLMTextFrame`s by sentence for the service to consume. However, if you
wish to override how the llm text is aggregated, you should no longer override the
TTS's internal text_aggregator, but instead, insert this processor between your LLM
and TTS in the pipeline.
2025-11-21 17:16:10 -05:00
mattie ruth backman
7a4372a909
Introduced a new AggregatedTextFrame Frame type that TTSTextFrame inherits from
...
This frame introduces an `aggregated_by` field to describe the type of text included
in the frame and allows unspoken groupings of text to be pushed through the pipeline
and treated similar to TTSTextFrames.
2025-11-21 17:16:10 -05:00
mattie ruth backman
24266c238f
Augmented PatternPairAggregator so that matched patterns can...
...
be treated as their own aggregation, taking advantage of the new
ability to assign a type to an aggregation
2025-11-21 17:16:10 -05:00
mattie ruth backman
dcc20f86e1
Updated the BaseTextAggregator to categorize aggregations
...
Modified the BaseTextAggregator type so that when text gets aggregated, metadata can
be associated with it. Currently, that just means a `type`, so that the aggregation
can be classified or described. Changes made to support this:
- **IMPORTANT**: Aggregators are now expected to strip leading/trailing white space
characters before returning their aggregation from `aggregation()` or `.text`. This
way all aggregators have a consistent contract allowing downstream use to know how
to stitch aggregations back together
- Introduced a new `Aggregation` dataclass to represent both the aggregated `text` and
a string identifying the `type` of aggregation (ex. "sentence", "word", "my custom
aggregation")
- **BREAKING**: `BaseTextAggregator.text` now returns an `Aggregation` (instead of `str`).
To update: `aggregated_text = myAggregator.text` -> `aggregated_text = myAggregator.text.text`
- **BREAKING**: `BaseTextAggregator.aggregate()` now returns `Optional[Aggregation]`
(instead of `Optional[str]`). To update:
```
aggregation = myAggregator.aggregate(text)
if (aggregation):
print(f"successfully aggregated text: {aggregation.text}") // instead of {aggregation}
```
- `SimpleTextAggregator`, `SkipTagsAggregator`, `PatternPairAggregator` updated to
produce/consume `Aggregation` objects.
- All uses of the above Aggregators have been updated accordingly.
2025-11-21 17:16:10 -05:00
Paul Kompfner
3d21faaac2
LLMAssistantAggregator now properly aggregates text that might be a mix of includes_inter_frame_spaces=True and includes_inter_frame_spaces=False frames
2025-11-18 15:12:25 -05:00
Paul Kompfner
913194844e
Make the mechanism of adding spaces when concatenating TTS (or speech-to-speech LLM) output text explicit and deterministic, rather than heuristic-based.
...
This fixes a bug where spaces were sometimes missing from assistant messages in context.
2025-11-10 14:22:32 -05:00
Mark Backman
2300941bb8
Revert "Merge pull request #3004 from pipecat-ai/mb/improve-concat-aggregated-text"
...
This reverts commit 5e7f59a0b0 , reversing
changes made to 2ad4122b77 .
2025-11-10 09:58:19 -05:00
Mark Backman
03001f8047
Update TranscriptProcessor unit tests
2025-11-07 11:44:04 -05:00
Mark Backman
f6b6aa8766
fix: STTMuteFilter no longer sends STTMuteFrame
2025-11-06 11:53:32 -05:00
Aleix Conchillo Flaqué
d844829538
Revert "fix interruption task frame context ordering"
2025-11-05 12:14:03 -08:00
Aleix Conchillo Flaqué
e4212fb3c0
tests: add interruption strategies context ordering tests
2025-11-05 09:38:18 -08:00
Aleix Conchillo Flaqué
0f5030bafa
tests: add unit test to check for idle timeout on swallowed frames
2025-10-31 08:45:56 -07:00
Paul Kompfner
ac5734d0ed
Deprecate expect_stripped_words option from LLMAssistantAggregatorParams, when used with the newer LLMAssistantAggregator, which now handles word spacing automatically.
...
This commit does not change how it works in the older `LLMAssistantContextAggregator`.
2025-10-30 17:22:47 -04:00
Paul Kompfner
ea6e146f2d
Update TestServiceSwitcher to exercise targeting system frames only to the active service
2025-10-22 11:14:27 -04:00
Aleix Conchillo Flaqué
1b9e96c016
PipelineTask: fix task cancellation issues
2025-10-16 13:16:19 -07:00
Aleix Conchillo Flaqué
62b7c3d3b2
PipelineTask: add on_pipeline_error event
2025-10-07 18:36:38 -07:00
Aleix Conchillo Flaqué
7c15a8c800
Revert "fix context order when using interruption strategies"
...
This reverts commit de8ee96927 .
2025-10-07 17:42:35 -07:00
Aleix Conchillo Flaqué
de8ee96927
fix context order when using interruption strategies
2025-10-06 22:43:01 -07:00
Aleix Conchillo Flaqué
4dc1e15a99
frames: use OutputTransportMessage(Urgent)Frame instead of TransportMessage(Urgent)Frame
2025-10-01 16:00:42 -07:00
Paul Kompfner
6faa50ae5b
Remove remaining usage of OpenAILLMContext throughout the codebase in favor of LLMContext, except for:
...
- Usage in classes that are already deprecated
- Usage related to realtime LLMs, which don't yet support `LLMContext`
- Usage in (soon-to-be-deprecated) code paths related to `OpenAILLMContext` itself and associated machinery
2025-09-24 16:35:03 -04:00
Aleix Conchillo Flaqué
2571cb2e69
tests: fix formatting
2025-09-23 15:28:07 -07:00
Aleix Conchillo Flaqué
15782be27c
Merge pull request #2676 from golbin/main
...
Fix audio buffer flush and silence handling
2025-09-23 15:27:31 -07:00
Aleix Conchillo Flaqué
3d88b42e0b
FrameProcessor: add before/after events for processed/pushed frames
2025-09-19 20:47:21 -07:00
Jin Kim
58f70e7e0d
Add tests for audio buffer processor flush alignment
2025-09-18 22:19:32 +09:00
Aleix Conchillo Flaqué
42344125b1
tests: add unit tests for push_interruption_task_frame_and_wait()
2025-09-17 13:38:22 -07:00
Paul Kompfner
8bc3c89140
Fix a bug preventing usage of multiple ServiceSwitchers in a pipeline
2025-09-17 16:09:18 -04:00
Paul Kompfner
2cd2567a37
Add a unit tests validating that multiple ServiceSwitchers can be used in the same pipeline (currently failing)
2025-09-17 16:04:30 -04:00
Paul Kompfner
a12392182c
Simplify, undoing the change allowing controlling ServiceSwitcher with immediate frames (SystemFrames). Service switcher frames are ControlFrames, which are easier to reason about. We can always build the immediate option later if needed (i.e. if there's sufficient user pull for it)
2025-09-17 15:35:02 -04:00