From 0c7e3cfcb2c0f0ac324b6d378c6c63991be0bc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Fri, 30 May 2025 07:42:58 -0700 Subject: [PATCH] LiveKitTransport: don't initialize if a second StartFrame is received --- src/pipecat/transports/services/livekit.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/pipecat/transports/services/livekit.py b/src/pipecat/transports/services/livekit.py index c998cfc06..736054ab9 100644 --- a/src/pipecat/transports/services/livekit.py +++ b/src/pipecat/transports/services/livekit.py @@ -363,6 +363,11 @@ class LiveKitInputTransport(BaseInputTransport): self._audio_in_task = None self._vad_analyzer: Optional[VADAnalyzer] = params.vad_analyzer self._resampler = create_default_resampler() + if self._initialized: + return + + # Whether we have seen a StartFrame already. + self._initialized = False @property def vad_analyzer(self) -> Optional[VADAnalyzer]: @@ -370,6 +375,12 @@ class LiveKitInputTransport(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._client.connect() if not self._audio_in_task and self._params.audio_in_enabled: @@ -447,8 +458,17 @@ class LiveKitOutputTransport(BaseOutputTransport): self._transport = transport self._client = client + # Whether we have seen a StartFrame already. + self._initialized = False + async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.start(frame) await self._client.connect() await self.set_transport_ready(frame)