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