[bug] board
This commit is contained in:
1 parent
6a9edd9139
commit
2a298fb5e2
3 files changed
+113
-46
No files matched your search
@@ -398,19 +398,24 @@ class WebSocketClinet:
|
||||
self.speaking_event.clear()
|
||||
break
|
||||
elif response['code'] == 200:
|
||||
self.audio_play_queue.put(('audio_json', response))
|
||||
# 切换播放模式
|
||||
self.listening_event.clear()
|
||||
self.speaking_event.set()
|
||||
if response['type'] == 'close':
|
||||
break
|
||||
elif data_type == list:
|
||||
# ####################### 更新后的代码 #
|
||||
print(f"{datetime.now()}: receive audio_list")
|
||||
self.audio_play_queue.put(('audio_list', response))
|
||||
|
||||
elif data_type == bytes:
|
||||
# 开始播放
|
||||
print(f"{datetime.now()}: receive audio data")
|
||||
print(f"listening_event: {self.listening_event.is_set()}, speaking_event: {self.speaking_event.is_set()}")
|
||||
# print(f"{datetime.now()}: receive audio data")
|
||||
self.audio_play_queue.put(('audio_bytes', response))
|
||||
elif data_type == None:
|
||||
print(f"{datetime.now()}: receive None data, break loop.")
|
||||
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()}")
|
||||
break # 如果没有接收到消息,则退出循环
|
||||
|
||||
|
||||
@@ -430,51 +435,57 @@ class WebSocketClinet:
|
||||
if not self.wakeup_event.is_set():
|
||||
continue
|
||||
|
||||
audio_list.append(item[1])
|
||||
print(f"{datetime.now()}: start playing audio.")
|
||||
|
||||
|
||||
if self.listening_event.is_set():
|
||||
continue
|
||||
|
||||
if not self.speaking_event.is_set():
|
||||
continue
|
||||
|
||||
# 播放音频
|
||||
try:
|
||||
if item[0] == 'audio_list':
|
||||
# TODO: 判断bytes是否是最后一个,如果是最后一个,则播放完毕,切换监听模式
|
||||
audio_info, audio_data = item[1]
|
||||
data_type = audio_info['type']
|
||||
|
||||
tts_audio = audio_list[0] # 取出第一个音频
|
||||
tts_audio = audio_player.check_audio_type(tts_audio, return_type=None)
|
||||
for i in range(0, len(tts_audio), audio_player.CHUNK):
|
||||
audio_player.stream.write(tts_audio[i:i+audio_player.CHUNK])
|
||||
print("Playing {} data...{}/{}".format(item[0], i, len(tts_audio)))
|
||||
|
||||
# 按键打断播放
|
||||
if self.listening_event.is_set() and not self.speaking_event.is_set():
|
||||
print(f"{datetime.now()}: speaker interrupt.")
|
||||
break
|
||||
# 关闭状态
|
||||
if not self.wakeup_event.is_set():
|
||||
print(f"{datetime.now()}: speaker close.")
|
||||
self.listening_event.clear()
|
||||
self.speaking_event.clear()
|
||||
break
|
||||
print(f"{datetime.now()}: start playing audio.")
|
||||
|
||||
if not self.speaking_event:
|
||||
audio_list = [] # 清空音频列表
|
||||
if self.listening_event.is_set():
|
||||
continue
|
||||
# 播放最后一段音频
|
||||
audio_player.stream.write(tts_audio[i+audio_player.CHUNK:])
|
||||
audio_list.pop(0) # 弹出第一个音频
|
||||
print(f"{datetime.now()}: audio data played.")
|
||||
except TypeError as e:
|
||||
print(f"audio play error: {e}")
|
||||
continue
|
||||
|
||||
if not self.speaking_event.is_set():
|
||||
continue
|
||||
|
||||
audio_list.append(audio_data)
|
||||
|
||||
# 播放音频
|
||||
try:
|
||||
tts_audio = audio_list[0] # 取出第一个音频
|
||||
tts_audio = audio_player.check_audio_type(tts_audio, return_type=None)
|
||||
for i in range(0, len(tts_audio), audio_player.CHUNK):
|
||||
audio_player.stream.write(tts_audio[i:i+audio_player.CHUNK])
|
||||
print("Playing {} data...{}/{}".format(item[0], i, len(tts_audio)))
|
||||
|
||||
# 按键打断播放
|
||||
if self.listening_event.is_set() and not self.speaking_event.is_set():
|
||||
print(f"{datetime.now()}: speaker interrupt.")
|
||||
break
|
||||
# 关闭状态
|
||||
if not self.wakeup_event.is_set():
|
||||
print(f"{datetime.now()}: speaker close.")
|
||||
self.listening_event.clear()
|
||||
self.speaking_event.clear()
|
||||
break
|
||||
|
||||
if not self.speaking_event:
|
||||
audio_list = [] # 清空音频列表
|
||||
continue
|
||||
# 播放最后一段音频
|
||||
audio_player.stream.write(tts_audio[i+audio_player.CHUNK:])
|
||||
audio_list.pop(0) # 弹出第一个音频
|
||||
print(f"{datetime.now()}: audio data played.")
|
||||
except TypeError as e:
|
||||
print(f"audio play error: {e}")
|
||||
continue
|
||||
|
||||
if self.wakeup_event.is_set():
|
||||
if data_type == 'end':
|
||||
# 启动监听状态
|
||||
self.speaking_event.clear()
|
||||
self.listening_event.set()
|
||||
|
||||
if self.wakeup_event.is_set():
|
||||
# 启动监听状态
|
||||
self.speaking_event.clear()
|
||||
self.listening_event.set()
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user