[client] fix bugs

This commit is contained in:
IrvingGao 2024-06-18 17:03:00 +08:00
parent 5c67ef58ff
commit af541c7a0f
2 changed files with 20 additions and 16 deletions

View File

@ -188,5 +188,5 @@ class BaseWebSocketClient:
print(f"json: {recv_data}") print(f"json: {recv_data}")
return recv_data, type(recv_data) return recv_data, type(recv_data)
except json.JSONDecodeError as e: except json.JSONDecodeError as e:
pass return None, None

View File

@ -377,30 +377,35 @@ class WebSocketClinet:
response, data_type = client.receive_per_data() response, data_type = client.receive_per_data()
if data_type == dict: if data_type == dict:
print(f"{datetime.now()}: receive json data: {response}") # 打印接收到的消息 print(f"{datetime.now()}: receive json data: {response}") # 打印接收到的消息
# 误识别情况 # 5xx: 结束错误码处理
if response['code'] in [201, 501, 502, 503, 504, 505] : if response['code'] in [501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545]:
# 恢复对话状态 # 恢复录音状态
self.listening_event.set() self.listening_event.set()
self.speaking_event.clear() self.speaking_event.clear()
break break
# 200: 正常结束
elif response['code'] == 200: elif response['code'] == 200:
self.audio_play_queue.put(('audio_json', response))
# 切换播放模式
self.listening_event.clear()
self.speaking_event.set()
if response['type'] == 'close': if response['type'] == 'close':
break break
# 201: 切换沉默模式
elif response['code'] == 201:
self.listening_event.set()
self.speaking_event.clear()
self.wakeup_event.clear() # 沉默状态下,关闭唤醒状态
elif data_type == list: elif data_type == list:
# ####################### 更新后的代码 # print(f"{datetime.now()}: receive text_audio_data")
print(f"{datetime.now()}: receive audio_list") # 切换播放模式
self.audio_play_queue.put(('audio_list', response)) self.listening_event.clear()
self.speaking_event.set()
self.audio_play_queue.put(('text_audio_data', response))
elif data_type == bytes: elif data_type == bytes:
# 开始播放 # 开始播放
# print(f"{datetime.now()}: receive audio data") print(f"{datetime.now()}: receive audio bytes")
self.audio_play_queue.put(('audio_bytes', response)) self.audio_play_queue.put(('audio_bytes', response))
elif data_type == None: elif data_type == None:
print(f"{datetime.now()}: receive None data, break loop.") print(f"{datetime.now()}: receive None data, break loop.")
# 切换录音模式
self.listening_event.set() self.listening_event.set()
self.speaking_event.clear() self.speaking_event.clear()
# print(f"listening_event: {self.listening_event.is_set()}, speaking_event: {self.speaking_event.is_set()}") # print(f"listening_event: {self.listening_event.is_set()}, speaking_event: {self.speaking_event.is_set()}")
@ -423,13 +428,12 @@ class WebSocketClinet:
if not self.wakeup_event.is_set(): if not self.wakeup_event.is_set():
continue continue
if item[0] == 'audio_list': if item[0] == 'text_audio_data':
# TODO: 判断bytes是否是最后一个如果是最后一个则播放完毕切换监听模式 # TODO: 判断bytes是否是最后一个如果是最后一个则播放完毕切换监听模式
audio_info, audio_data = item[1] audio_text, audio_data = item[1]
data_type = audio_info['type']
print(f"{datetime.now()}: receive {data_type} data, start playing audio.")
print(f"{datetime.now()}: start playing audio.") print(f"{datetime.now()}: start playing audio.")
print(f"{datetime.now()}: audio text: {audio_text}")
if self.listening_event.is_set(): if self.listening_event.is_set():
continue continue