From 69f64899feb456e3207c1c52adf642a409ff044d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Tue, 23 Jul 2024 10:50:15 -0700 Subject: [PATCH] pipeline: add send_initial_empty_metrics flag --- CHANGELOG.md | 5 +++++ src/pipecat/pipeline/pipeline.py | 2 +- src/pipecat/pipeline/task.py | 5 ++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f5bac054..8e9b344d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unrelease] +### Added + +- Added `send_initial_empty_metrics` flag to `PipelineParams` to request for + initial empty metrics (zero values). True by default. + ### Fixed - STT services should be using ISO 8601 time format for transcription frames. diff --git a/src/pipecat/pipeline/pipeline.py b/src/pipecat/pipeline/pipeline.py index 165717ad3..6805cfad0 100644 --- a/src/pipecat/pipeline/pipeline.py +++ b/src/pipecat/pipeline/pipeline.py @@ -64,7 +64,7 @@ class Pipeline(BasePipeline): services = [] for p in self._processors: if isinstance(p, BasePipeline): - services += p.processors_with_metrics() + services.extend(p.processors_with_metrics()) elif p.can_generate_metrics(): services.append(p) return services diff --git a/src/pipecat/pipeline/task.py b/src/pipecat/pipeline/task.py index 3424aac86..ae5056a48 100644 --- a/src/pipecat/pipeline/task.py +++ b/src/pipecat/pipeline/task.py @@ -21,6 +21,7 @@ from loguru import logger class PipelineParams(BaseModel): allow_interruptions: bool = False enable_metrics: bool = False + send_initial_empty_metrics: bool = True report_only_initial_ttfb: bool = False @@ -106,7 +107,9 @@ class PipelineTask: report_only_initial_ttfb=self._params.report_only_initial_ttfb ) await self._source.process_frame(start_frame, FrameDirection.DOWNSTREAM) - await self._source.process_frame(self._initial_metrics_frame(), FrameDirection.DOWNSTREAM) + + if self._params.send_initial_empty_metrics: + await self._source.process_frame(self._initial_metrics_frame(), FrameDirection.DOWNSTREAM) running = True should_cleanup = True