diff --git a/src/pipecat/transports/base_input.py b/src/pipecat/transports/base_input.py index ee60319b7..786e991fa 100644 --- a/src/pipecat/transports/base_input.py +++ b/src/pipecat/transports/base_input.py @@ -30,7 +30,7 @@ class BaseInputTransport(FrameProcessor): self._params = params - self._running = True + self._running = False # Start media threads. if self._params.audio_in_enabled or self._params.vad_enabled: @@ -41,6 +41,11 @@ class BaseInputTransport(FrameProcessor): self._stopped_event = asyncio.Event() async def start(self): + if self._running: + return + + self._running = True + if self._params.audio_in_enabled or self._params.vad_enabled: self._audio_in_thread.start() self._audio_out_thread.start() diff --git a/src/pipecat/transports/base_output.py b/src/pipecat/transports/base_output.py index ff125d7a8..7b33308a2 100644 --- a/src/pipecat/transports/base_output.py +++ b/src/pipecat/transports/base_output.py @@ -35,7 +35,7 @@ class BaseOutputTransport(FrameProcessor): self._params = params - self._running = True + self._running = False # These are the images that we should send to the camera at our desired # framerate. @@ -45,7 +45,6 @@ class BaseOutputTransport(FrameProcessor): if self._params.camera_out_enabled: self._camera_out_queue = queue.Queue() self._camera_out_thread = threading.Thread(target=self._camera_out_thread_handler) - self._camera_out_thread.start() self._sink_queue = queue.Queue() self._sink_thread = threading.Thread(target=self._sink_thread_handler) @@ -53,6 +52,14 @@ class BaseOutputTransport(FrameProcessor): self._stopped_event = asyncio.Event() async def start(self): + if self._running: + return + + self._running = True + + if self._params.camera_out_enabled: + self._camera_out_thread.start() + self._sink_thread.start() async def stop(self):