frames: indicate if UserStartedSpeakingFrame/UserStoppedSpeakingFrame are emulated
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -5,6 +5,13 @@ All notable changes to **Pipecat** will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- It is now possible to tell whether `UserStartedSpeakingFrame` or
|
||||||
|
`UserStoppedSpeakingFrame` have been generated because of emulation frames.
|
||||||
|
|
||||||
## [0.0.61] - 2025-03-26
|
## [0.0.61] - 2025-03-26
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
@@ -21,9 +28,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
- ElevenLabs TTS services now support a sample rate of 8000.
|
- ElevenLabs TTS services now support a sample rate of 8000.
|
||||||
|
|
||||||
- Added support for `instructions` in `OpenAITTSService`
|
- Added support for `instructions` in `OpenAITTSService`.
|
||||||
|
|
||||||
- Added support for `base_url` in `OpenAIImageGenService` and `OpenAITTSService`
|
- Added support for `base_url` in `OpenAIImageGenService` and
|
||||||
|
`OpenAITTSService`.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|||||||
@@ -562,14 +562,14 @@ class UserStartedSpeakingFrame(SystemFrame):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
pass
|
emulated: bool = False
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class UserStoppedSpeakingFrame(SystemFrame):
|
class UserStoppedSpeakingFrame(SystemFrame):
|
||||||
"""Emitted by the VAD to indicate that a user stopped speaking."""
|
"""Emitted by the VAD to indicate that a user stopped speaking."""
|
||||||
|
|
||||||
pass
|
emulated: bool = False
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -117,10 +117,10 @@ class BaseInputTransport(FrameProcessor):
|
|||||||
await self._handle_bot_interruption(frame)
|
await self._handle_bot_interruption(frame)
|
||||||
elif isinstance(frame, EmulateUserStartedSpeakingFrame):
|
elif isinstance(frame, EmulateUserStartedSpeakingFrame):
|
||||||
logger.debug("Emulating user started speaking")
|
logger.debug("Emulating user started speaking")
|
||||||
await self._handle_user_interruption(UserStartedSpeakingFrame())
|
await self._handle_user_interruption(UserStartedSpeakingFrame(emulated=True))
|
||||||
elif isinstance(frame, EmulateUserStoppedSpeakingFrame):
|
elif isinstance(frame, EmulateUserStoppedSpeakingFrame):
|
||||||
logger.debug("Emulating user stopped speaking")
|
logger.debug("Emulating user stopped speaking")
|
||||||
await self._handle_user_interruption(UserStoppedSpeakingFrame())
|
await self._handle_user_interruption(UserStoppedSpeakingFrame(emulated=True))
|
||||||
# All other system frames
|
# All other system frames
|
||||||
elif isinstance(frame, SystemFrame):
|
elif isinstance(frame, SystemFrame):
|
||||||
await self.push_frame(frame, direction)
|
await self.push_frame(frame, direction)
|
||||||
|
|||||||
Reference in New Issue
Block a user