fix:文字回复卡住bug

This commit is contained in:
hrz
2025-04-04 02:01:48 +08:00
parent 0b4a4df1af
commit 98368cbe06
3 changed files with 10 additions and 21 deletions
+3 -14
View File
@@ -1,4 +1,3 @@
import os
import json
import uuid
import time
@@ -311,7 +310,6 @@ class ConnectionHandler:
self.dialogue.put(Message(role="user", content=query))
response_message = []
processed_chars = 0 # 跟踪已处理的字符位置
try:
start_time = time.time()
# 使用带记忆的对话
@@ -332,7 +330,6 @@ class ConnectionHandler:
text_index = 0
uuid_str = str(uuid.uuid4()).replace("-", "")
self.u_id = uuid_str
msg_type = None
for content in llm_responses:
response_message.append(content)
if self.client_abort:
@@ -390,7 +387,6 @@ class ConnectionHandler:
if hasattr(self, "func_handler"):
functions = self.func_handler.get_functions()
response_message = []
processed_chars = 0 # 跟踪已处理的字符位置
try:
start_time = time.time()
@@ -424,7 +420,6 @@ class ConnectionHandler:
content_arguments = ""
uuid_str = str(uuid.uuid4()).replace("-", "")
self.u_id = uuid_str
msg_type = None
for response in llm_responses:
content, tools_call = response
if "content" in response:
@@ -588,9 +583,7 @@ class ConnectionHandler:
if result.action == Action.RESPONSE: # 直接回复前端
text = result.response
self.recode_first_last_text(text, text_index)
asyncio.run_coroutine_threadsafe(
self.tts.tts_one_sentence(text), loop=self.loop
)
self.tts.tts_one_sentence(self, text)
self.dialogue.put(Message(role="assistant", content=text))
elif result.action == Action.REQLLM: # 调用函数后再请求llm生成回复
text = result.result
@@ -622,16 +615,12 @@ class ConnectionHandler:
elif result.action == Action.NOTFOUND:
text = result.result
self.recode_first_last_text(text, text_index)
asyncio.run_coroutine_threadsafe(
self.tts.tts_one_sentence(text), loop=self.loop
)
self.tts.tts_one_sentence(self, text)
self.dialogue.put(Message(role="assistant", content=text))
else:
text = result.result
self.recode_first_last_text(text, text_index)
asyncio.run_coroutine_threadsafe(
self.tts.tts_one_sentence(text), loop=self.loop
)
self.tts.tts_one_sentence(self, text)
self.dialogue.put(Message(role="assistant", content=text))
def _audio_play_priority_thread(self):
@@ -102,8 +102,7 @@ async def process_intent_result(conn, intent_result, original_text):
if text is None:
text = result.result
if text is not None:
# TODO 将text转换为tts_message_dto
pass
conn.tts.tts_one_sentence(conn, text)
# 将函数执行放在线程池中
conn.executor.submit(process_function_call)
return True
@@ -118,17 +118,18 @@ class TTSProviderBase(ABC):
async def finish_session(self, session_id):
pass
async def tts_one_sentence(self, text, u_id=None):
def tts_one_sentence(self,conn, text, u_id=None):
if not u_id:
u_id = str(uuid.uuid4()).replace("-", "")
self.tts.tts_text_queue.put(
conn.u_id = u_id
self.tts_text_queue.put(
TTSMessageDTO(u_id=u_id, msg_type=MsgType.START_TTS_REQUEST, content="")
)
self.tts.tts_text_queue.put(
self.tts_text_queue.put(
TTSMessageDTO(u_id=u_id, msg_type=MsgType.TTS_TEXT_REQUEST, content=text)
)
self.tts.tts_text_queue.put(
TTSMessageDTO(u_id=u_id, msg_type=MsgType.STOP_TTS_REQUEST, content=text)
self.tts_text_queue.put(
TTSMessageDTO(u_id=u_id, msg_type=MsgType.STOP_TTS_REQUEST, content="")
)
def _enable_two_way_tts(self):