diff --git a/takway/clients/web_socket_client_utils.py b/takway/clients/web_socket_client_utils.py index 2828a3e..b96c2ca 100644 --- a/takway/clients/web_socket_client_utils.py +++ b/takway/clients/web_socket_client_utils.py @@ -467,7 +467,7 @@ class WebSocketClinet: if self.interrupt_event.is_set(): print(f"{datetime.now()}: button interrupt.") - time.sleep(0.1) # 虽然程序到这里,但是扬声器不一定播放完毕,延迟用来避免问题 + time.sleep(0.2) # 虽然程序到这里,但是扬声器不一定播放完毕,延迟用来避免问题 while not self.audio_play_queue.empty(): # 清空队列 self.audio_play_queue.get() @@ -483,7 +483,8 @@ class WebSocketClinet: else: # 播放最后一段音频 audio_player.stream.write(tts_audio[i+audio_player.CHUNK:]) - audio_list.pop(0) # 弹出第一个音频 + audio_list = [] # 清空音频列表 + # audio_list.pop(0) # 弹出已播放音频 print(f"{datetime.now()}: audio data played.") except TypeError as e: print(f"audio play error: {e}") @@ -494,15 +495,17 @@ class WebSocketClinet: print(f"data_type: {data_type}") if self.wakeup_event.is_set(): if data_type == 'text': - # 切换播放模式 - self.listening_event.clear() - self.speaking_event.set() + if self.wakeup_event.is_set(): + # 切换播放模式 + self.listening_event.clear() + self.speaking_event.set() if data_type in ['close', 'end']: # 虽然程序到这里,但是扬声器不一定播放完毕,延迟用来避免问题 time.sleep(0.2) - # 启动监听状态 - self.speaking_event.clear() - self.listening_event.set() + if self.wakeup_event.is_set(): + # 启动监听状态 + self.speaking_event.clear() + self.listening_event.set()