准备对AI流式音频发回给前端的机制做较大的修改,先提交1个版本

This commit is contained in:
qcloud
2025-07-19 22:44:28 +08:00
parent 74899acab9
commit 44cb7c0dca
9 changed files with 766 additions and 868 deletions

View File

@@ -71,7 +71,9 @@ class StreamSessionManager:
'finished': threading.Event(), # 添加事件对象
'sample_rate':sample_rate,
'stream_format':stream_format,
"tts_chunk_data_valid":False
"tts_chunk_data_valid":False,
"sentence_complete_event": threading.Event(),
"current_processing": False # 标记是否正在处理句子
}
# 启动任务处理线程
threading.Thread(target=self._process_tasks, args=(session_id,), daemon=True).start()
@@ -127,7 +129,7 @@ class StreamSessionManager:
except Exception as e:
logging.error(f"Task processing error: {str(e)}")
def _generate_audio(self, session_id, text):
def _generate_audio1(self, session_id, text):
"""实际生成音频(线程池执行)"""
session = self.sessions.get(session_id)
if not session: return
@@ -157,6 +159,27 @@ class StreamSessionManager:
session['buffer'].put(f"ERROR:{str(e)}")
logging.info(f"--_generate_audio--error {str(e)}")
def _generate_audio(self, session_id, text):
"""实际生成音频(顺序执行)- 用于非流式引擎"""
session = self.sessions.get(session_id)
if not session:
return
try:
# 调用 TTS
session['tts_model'].text_tts_call(text)
# 标记完成
session['sentence_complete_event'].set()
session['last_active'] = time.time()
session['audio_chunk_count'] += 1
if not session['tts_chunk_data_valid']:
session['tts_chunk_data_valid'] = True
except Exception as e:
session['buffer'].put(f"ERROR:{str(e)}".encode())
session['sentence_complete_event'].set() # 确保事件被设置
def close_session(self, session_id):
with self.lock: