frames: indicate if UserStartedSpeakingFrame/UserStoppedSpeakingFrame are emulated

This commit is contained in:
Aleix Conchillo Flaqué
2025-03-26 14:37:36 -07:00
parent 86701fd3c7
commit c4f9171fe1
3 changed files with 14 additions and 6 deletions

View File

@@ -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/),
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
### 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.
- 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

View File

@@ -562,14 +562,14 @@ class UserStartedSpeakingFrame(SystemFrame):
"""
pass
emulated: bool = False
@dataclass
class UserStoppedSpeakingFrame(SystemFrame):
"""Emitted by the VAD to indicate that a user stopped speaking."""
pass
emulated: bool = False
@dataclass

View File

@@ -117,10 +117,10 @@ class BaseInputTransport(FrameProcessor):
await self._handle_bot_interruption(frame)
elif isinstance(frame, EmulateUserStartedSpeakingFrame):
logger.debug("Emulating user started speaking")
await self._handle_user_interruption(UserStartedSpeakingFrame())
await self._handle_user_interruption(UserStartedSpeakingFrame(emulated=True))
elif isinstance(frame, EmulateUserStoppedSpeakingFrame):
logger.debug("Emulating user stopped speaking")
await self._handle_user_interruption(UserStoppedSpeakingFrame())
await self._handle_user_interruption(UserStoppedSpeakingFrame(emulated=True))
# All other system frames
elif isinstance(frame, SystemFrame):
await self.push_frame(frame, direction)