[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.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: