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)