CHANGELOG updates
This commit is contained in:
47
CHANGELOG.md
47
CHANGELOG.md
@@ -16,11 +16,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
services that subclass `TTSService` can indicate whether the text in the
|
services that subclass `TTSService` can indicate whether the text in the
|
||||||
`TTSTextFrame`s they push already contain any necessary inter-frame spaces.
|
`TTSTextFrame`s they push already contain any necessary inter-frame spaces.
|
||||||
|
|
||||||
- Introduced new `AggregatedTextFrame` type to support representing effective llm
|
- Introduced new `AggregatedTextFrame` type to support representing a best effort of
|
||||||
types an enum)
|
the perceived llm output whether or not it is processed by the TTS. This new frame
|
||||||
output whether or not it is processed by the TTS. This new frame type includes the
|
type includes the field `aggregated_by` to represent the conceptual format by which
|
||||||
field `aggregated_by` to represent the conceptual format by which the given text
|
the given text is aggregated. `TTSTextFrame`s now inherit from `AggregatedTextFrame`.
|
||||||
is aggregated. `TTSTextFrame`s now inherit from `AggregatedTextFrame`.
|
With this inheritance, an observer can watch for `AggregatedTextFrame`s to accumlate
|
||||||
|
the perceived output and determine whether or not the text was spoken based on if that
|
||||||
|
frame is also a `TTSTextFrame`. (See bullet below on new `bot-output` which takes
|
||||||
|
advantage of this)
|
||||||
|
|
||||||
|
- 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 aggregator, but instead, insert this processor between your LLM and
|
||||||
|
TTS in the pipeline.
|
||||||
|
|
||||||
- New `bot-output` RTVI message to represent what the bot actually "says".
|
- New `bot-output` RTVI message to represent what the bot actually "says".
|
||||||
- The `RTVIObserver` now emits `bot-output` messages based off the new `AggregatedTextFrame`s
|
- The `RTVIObserver` now emits `bot-output` messages based off the new `AggregatedTextFrame`s
|
||||||
@@ -30,11 +41,21 @@ types an enum)
|
|||||||
- `spoken`: A boolean indicating whether the text was spoken by TTS
|
- `spoken`: A boolean indicating whether the text was spoken by TTS
|
||||||
- `aggregated_by`: A string representing how the text was aggregated ("sentence", "word",
|
- `aggregated_by`: A string representing how the text was aggregated ("sentence", "word",
|
||||||
"my custom aggregation")
|
"my custom aggregation")
|
||||||
|
- Introduced new fields to `RTVIObserver` to support the new `bot-output` messaging:
|
||||||
|
- `bot_output_enabled`: Defaults to True. Set to false to disable bot-output messages.
|
||||||
|
- `skip_aggregator_types`: Defaults to `None`. Set to a list of strings that match
|
||||||
|
aggregation types that should not be included in bot-output messages. (Ex. `credit_card`)
|
||||||
|
- Introduced new `transform_aggregation_type` method to `RTVIObserver` to support providing
|
||||||
|
callbacks for various types of aggregations (or all aggregations with `*`) that can modify the
|
||||||
|
text before being sent as a `bot-output` or `tts-text` message. (Think obscuring the credit card
|
||||||
|
or inserting extra detail the client might want that the context doesn't need.)
|
||||||
|
|
||||||
- Updated the base aggregator type:
|
- Updated the base aggregator type:
|
||||||
- Introduced a new `Aggregation` dataclass to represent both the aggregated `text` and
|
- Introduced a new `Aggregation` dataclass to represent both the aggregated `text` and
|
||||||
a string identifying the `type` of aggregation (ex. "sentence", "word", "my custom
|
a string identifying the `type` of aggregation (ex. "sentence", "word", "my custom
|
||||||
aggregation")
|
aggregation")
|
||||||
|
# MRKB TODO -- don't break. leave pattern_id as-is and remove 'type', so that the old
|
||||||
|
remove param can remain
|
||||||
- **BREAKING**: `BaseTextAggregator.text` now returns an `Aggregation` (instead of `str`).
|
- **BREAKING**: `BaseTextAggregator.text` now returns an `Aggregation` (instead of `str`).
|
||||||
To update: `aggregated_text = myAggregator.text` -> `aggregated_text = myAggregator.text.text`
|
To update: `aggregated_text = myAggregator.text` -> `aggregated_text = myAggregator.text.text`
|
||||||
- **BREAKING**: `BaseTextAggregator.aggregate()` now returns `Optional[Aggregation]`
|
- **BREAKING**: `BaseTextAggregator.aggregate()` now returns `Optional[Aggregation]`
|
||||||
@@ -78,12 +99,6 @@ types an enum)
|
|||||||
aggregated by sentence. It is aggregated as one single block of text.
|
aggregated by sentence. It is aggregated as one single block of text.
|
||||||
- `PatternMatch` now extends `Aggregation` and provides richer info to handlers.
|
- `PatternMatch` now extends `Aggregation` and provides richer info to handlers.
|
||||||
|
|
||||||
- Added support for aggregating `LLMTextFrame`s from within the assistant `LLMAssistantAggregator`
|
|
||||||
when `skip_tts` is set to `True`, generating `AggregatedTextFrame`s, therefore supporting
|
|
||||||
the new `bot-output` event when TTS is turned off. You can customize the aggregator used using
|
|
||||||
the new `llm_text_aggregator` field in the `LLMAssistantAggregatorParams`. NOTE: This feature is
|
|
||||||
only supported when using the new `LLMContext`.
|
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Updated all STT and TTS services to use consistent error handling pattern with
|
- Updated all STT and TTS services to use consistent error handling pattern with
|
||||||
@@ -115,6 +130,11 @@ types an enum)
|
|||||||
timestamping. In the latter case, the `TTSService` preliminarily generates an
|
timestamping. In the latter case, the `TTSService` preliminarily generates an
|
||||||
`AggregatedTextFrame`, aggregated by sentence to generate the full sentence content as early
|
`AggregatedTextFrame`, aggregated by sentence to generate the full sentence content as early
|
||||||
as possible.
|
as possible.
|
||||||
|
- Introduced a new method, `transform_aggregation_type()`:
|
||||||
|
This function provides the ability to provide callbacks to the TTS to transform text based on
|
||||||
|
its aggregated type prior to sending the text to the underlying TTS service. This makes it
|
||||||
|
possible to do things like introduce TTS-specific tags for spelling or emotion or change the
|
||||||
|
pronunciation of something on the fly.
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
@@ -123,6 +143,11 @@ types an enum)
|
|||||||
|
|
||||||
- The RTVI `bot-transcription` event is deprecated in favor of the new `bot-output` message which is the canonical representation of bot output (spoken or not). The code still emits a transcription message for backwards compatibility while transition occurs.
|
- The RTVI `bot-transcription` event is deprecated in favor of the new `bot-output` message which is the canonical representation of bot output (spoken or not). The code still emits a transcription message for backwards compatibility while transition occurs.
|
||||||
|
|
||||||
|
- The TTS constructor field, `text_aggregator` is deprecated in favor of the new
|
||||||
|
`LLMTextProcessor`. TTSServices still have an internal aggregator for support of default
|
||||||
|
behavior, but if you want to override the aggregation behavior, you should use the new
|
||||||
|
processor.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fixed subtle issue of assistant context messages ending up with double spaces
|
- Fixed subtle issue of assistant context messages ending up with double spaces
|
||||||
|
|||||||
Reference in New Issue
Block a user