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