From 9a5a1edb6ba652fa1af86a7e28680f52b2e62c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Fri, 30 May 2025 07:50:26 -0700 Subject: [PATCH] WebsocketServerTransport: don't initialize if a second StartFrame is received --- .../transports/network/websocket_server.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pipecat/transports/network/websocket_server.py b/src/pipecat/transports/network/websocket_server.py index 15db99f6a..1fe33f4a6 100644 --- a/src/pipecat/transports/network/websocket_server.py +++ b/src/pipecat/transports/network/websocket_server.py @@ -78,8 +78,17 @@ class WebsocketServerInputTransport(BaseInputTransport): self._stop_server_event = asyncio.Event() + # 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 + if self._params.serializer: await self._params.serializer.setup(frame) if not self._server_task: @@ -190,6 +199,9 @@ class WebsocketServerOutputTransport(BaseOutputTransport): self._send_interval = 0 self._next_send_time = 0 + # Whether we have seen a StartFrame already. + self._initialized = False + async def set_client_connection(self, websocket: Optional[websockets.WebSocketServerProtocol]): if self._websocket: await self._websocket.close() @@ -198,6 +210,12 @@ class WebsocketServerOutputTransport(BaseOutputTransport): async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + if self._params.serializer: await self._params.serializer.setup(frame) self._send_interval = (self.audio_chunk_size / self.sample_rate) / 2