fix: 修复 tts_end 和 abort 循环调用的问题
This commit is contained in:
@@ -27,6 +27,7 @@ class __EventManager:
|
||||
self.session_id = 0
|
||||
self.current_step = Step.idle
|
||||
self.next_step_future = None
|
||||
self.tts_session_id = ""
|
||||
|
||||
def update_step(self, step: Step, step_data=None):
|
||||
if get_xiaoai().mode == "xiaozhi":
|
||||
@@ -77,16 +78,19 @@ class __EventManager:
|
||||
self.update_step(Step.on_wakeup)
|
||||
self.start_session()
|
||||
|
||||
def on_tts_end(self):
|
||||
def on_tts_end(self, session_id):
|
||||
"""TTS结束"""
|
||||
if self.current_step == Step.on_interrupt:
|
||||
# 当前 session 已经被打断了,不再处理
|
||||
return
|
||||
if self.tts_session_id == session_id:
|
||||
return
|
||||
self.tts_session_id = session_id
|
||||
self.session_id = self.session_id + 1
|
||||
self.update_step(Step.on_tts_end)
|
||||
self.start_session()
|
||||
|
||||
def on_tts_start(self):
|
||||
def on_tts_start(self, session_id):
|
||||
"""TTS结束"""
|
||||
self.update_step(Step.on_tts_start)
|
||||
|
||||
|
||||
@@ -296,10 +296,10 @@ class XiaoZhi:
|
||||
"""处理TTS消息"""
|
||||
state = data.get("state", "")
|
||||
if state == "start":
|
||||
EventManager.on_tts_start()
|
||||
EventManager.on_tts_start(data.get("session_id"))
|
||||
self.schedule(lambda: self._handle_tts_start())
|
||||
elif state == "stop":
|
||||
EventManager.on_tts_end()
|
||||
EventManager.on_tts_end(data.get("session_id"))
|
||||
self.schedule(lambda: self._handle_tts_stop())
|
||||
elif state == "sentence_start":
|
||||
text = data.get("text", "")
|
||||
|
||||
Reference in New Issue
Block a user