LiveKitTransport: don't initialize if a second StartFrame is received

This commit is contained in:
Aleix Conchillo Flaqué
2025-05-30 07:42:58 -07:00
parent 24e19db29e
commit 0c7e3cfcb2

View File

@@ -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)