[client] fix bugs

This commit is contained in:
IrvingGao 2024-06-18 17:24:37 +08:00
parent 5370242726
commit b431f2611b
1 changed files with 16 additions and 5 deletions

View File

@ -60,6 +60,9 @@ class WebSocketClinet:
# 唤醒事件 # 唤醒事件
self.wakeup_event = manager.Event() self.wakeup_event = manager.Event()
# 打断事件
self.interrupt_event = manager.Event()
# 监听事件 # 监听事件
self.listening_event = manager.Event() self.listening_event = manager.Event()
# 播放事件 # 播放事件
@ -143,8 +146,7 @@ class WebSocketClinet:
self.wakeup_event.set() self.wakeup_event.set()
# 短时按键被按下,打断 # 短时按键被按下,打断
if recorder.hardware.short_power_status and not last_short_power_status: if recorder.hardware.short_power_status and not last_short_power_status:
self.speaking_event.clear() self.interrupt_event.set()
self.listening_event.set()
recorder.hardware.short_power_status = False recorder.hardware.short_power_status = False
print("Interrupt conversation.") print("Interrupt conversation.")
last_short_power_status = recorder.hardware.short_power_status last_short_power_status = recorder.hardware.short_power_status
@ -449,14 +451,23 @@ class WebSocketClinet:
# 关闭状态 # 关闭状态
if not self.wakeup_event.is_set(): 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.listening_event.clear()
self.speaking_event.clear() self.speaking_event.clear()
break break
# 按键打断播放 # 按键打断播放
if self.listening_event.is_set() and not self.speaking_event.is_set(): if self.interrupt_event.is_set():
print(f"{datetime.now()}: speaker interrupt.") print(f"{datetime.now()}: button interrupt.")
# 虽然程序到这里,但是扬声器不一定播放完毕,延迟用来避免问题
time.sleep(0.5)
self.listening_event.set()
self.speaking_event.clear()
self.interrupt_event.clear()
break 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: if not self.speaking_event: