From 24e19db29eebba23b5e131fc083bac813e76e44a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Fri, 30 May 2025 07:42:15 -0700 Subject: [PATCH] TavusTransport: don't initialize if a second StartFrame is received --- src/pipecat/transports/services/tavus.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/pipecat/transports/services/tavus.py b/src/pipecat/transports/services/tavus.py index 301a0b7df..2c76b9b33 100644 --- a/src/pipecat/transports/services/tavus.py +++ b/src/pipecat/transports/services/tavus.py @@ -18,7 +18,6 @@ from pipecat.frames.frames import ( Frame, InputAudioRawFrame, OutputAudioRawFrame, - OutputImageRawFrame, StartFrame, StartInterruptionFrame, TransportMessageFrame, @@ -317,6 +316,9 @@ class TavusInputTransport(BaseInputTransport): self._params = params self._resampler = create_default_resampler() + # Whether we have seen a StartFrame already. + self._initialized = False + async def setup(self, setup: FrameProcessorSetup): await super().setup(setup) await self._client.setup(setup) @@ -327,6 +329,12 @@ class TavusInputTransport(BaseInputTransport): async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.start(frame) await self.set_transport_ready(frame) @@ -375,6 +383,9 @@ class TavusOutputTransport(BaseOutputTransport): self._start_time = None self._current_idx_str: Optional[str] = None + # Whether we have seen a StartFrame already. + self._initialized = False + async def setup(self, setup: FrameProcessorSetup): await super().setup(setup) await self._client.setup(setup) @@ -385,6 +396,12 @@ class TavusOutputTransport(BaseOutputTransport): async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.start(frame) await self.set_transport_ready(frame)