Merge pull request #2435 from pipecat-ai/filipi/small_webrtc_end_pipeline
Fixed an issue where `SmallWebRTCTransport` ended before TTS finished.
This commit is contained in:
@@ -64,6 +64,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed an issue where `SmallWebRTCTransport` ended before TTS finished.
|
||||||
|
|
||||||
- Fixed a `WatchdogPriorityQueue` issue that could cause an exception when
|
- Fixed a `WatchdogPriorityQueue` issue that could cause an exception when
|
||||||
compating watchdog cancel sentinel items with other items in the queue.
|
compating watchdog cancel sentinel items with other items in the queue.
|
||||||
|
|
||||||
|
|||||||
@@ -226,6 +226,7 @@ class SmallWebRTCClient:
|
|||||||
self._audio_in_channels = None
|
self._audio_in_channels = None
|
||||||
self._in_sample_rate = None
|
self._in_sample_rate = None
|
||||||
self._out_sample_rate = None
|
self._out_sample_rate = None
|
||||||
|
self._leave_counter = 0
|
||||||
|
|
||||||
# We are always resampling it for 16000 if the sample_rate that we receive is bigger than that.
|
# We are always resampling it for 16000 if the sample_rate that we receive is bigger than that.
|
||||||
# otherwise we face issues with Silero VAD
|
# otherwise we face issues with Silero VAD
|
||||||
@@ -395,6 +396,7 @@ class SmallWebRTCClient:
|
|||||||
self._in_sample_rate = _params.audio_in_sample_rate or frame.audio_in_sample_rate
|
self._in_sample_rate = _params.audio_in_sample_rate or frame.audio_in_sample_rate
|
||||||
self._out_sample_rate = _params.audio_out_sample_rate or frame.audio_out_sample_rate
|
self._out_sample_rate = _params.audio_out_sample_rate or frame.audio_out_sample_rate
|
||||||
self._params = _params
|
self._params = _params
|
||||||
|
self._leave_counter += 1
|
||||||
|
|
||||||
async def connect(self):
|
async def connect(self):
|
||||||
"""Establish the WebRTC connection."""
|
"""Establish the WebRTC connection."""
|
||||||
@@ -407,6 +409,10 @@ class SmallWebRTCClient:
|
|||||||
|
|
||||||
async def disconnect(self):
|
async def disconnect(self):
|
||||||
"""Disconnect from the WebRTC peer."""
|
"""Disconnect from the WebRTC peer."""
|
||||||
|
self._leave_counter -= 1
|
||||||
|
if self._leave_counter > 0:
|
||||||
|
return
|
||||||
|
|
||||||
if self.is_connected and not self.is_closing:
|
if self.is_connected and not self.is_closing:
|
||||||
logger.info(f"Disconnecting to Small WebRTC")
|
logger.info(f"Disconnecting to Small WebRTC")
|
||||||
self._closing = True
|
self._closing = True
|
||||||
|
|||||||
Reference in New Issue
Block a user