From b431f2611baa528fb0327621aa595d1e32600f4b Mon Sep 17 00:00:00 2001 From: IrvingGao <1729854488@qq.com> Date: Tue, 18 Jun 2024 17:24:37 +0800 Subject: [PATCH] [client] fix bugs --- takway/clients/web_socket_client_utils.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/takway/clients/web_socket_client_utils.py b/takway/clients/web_socket_client_utils.py index 190b184..1a36c2d 100644 --- a/takway/clients/web_socket_client_utils.py +++ b/takway/clients/web_socket_client_utils.py @@ -60,6 +60,9 @@ class WebSocketClinet: # 唤醒事件 self.wakeup_event = manager.Event() + # 打断事件 + self.interrupt_event = manager.Event() + # 监听事件 self.listening_event = manager.Event() # 播放事件 @@ -143,8 +146,7 @@ class WebSocketClinet: self.wakeup_event.set() # 短时按键被按下,打断 if recorder.hardware.short_power_status and not last_short_power_status: - self.speaking_event.clear() - self.listening_event.set() + self.interrupt_event.set() recorder.hardware.short_power_status = False print("Interrupt conversation.") last_short_power_status = recorder.hardware.short_power_status @@ -449,14 +451,23 @@ class WebSocketClinet: # 关闭状态 if not self.wakeup_event.is_set(): - print(f"{datetime.now()}: speaker close.") + print(f"{datetime.now()}: microphone and speaker close.") self.listening_event.clear() self.speaking_event.clear() break # 按键打断播放 - if self.listening_event.is_set() and not self.speaking_event.is_set(): - print(f"{datetime.now()}: speaker interrupt.") + if self.interrupt_event.is_set(): + print(f"{datetime.now()}: button interrupt.") + # 虽然程序到这里,但是扬声器不一定播放完毕,延迟用来避免问题 + time.sleep(0.5) + self.listening_event.set() + self.speaking_event.clear() + self.interrupt_event.clear() break + # if self.listening_event.is_set() and not self.speaking_event.is_set(): + # print(f"{datetime.now()}: speaker interrupt.") + # break + if not self.speaking_event: