准备对AI流式音频发回给前端的机制做较大的修改,先提交1个版本
This commit is contained in:
@@ -152,10 +152,11 @@ def upload_file(tenant_id,mesum_id):
|
||||
|
||||
prompt = (
|
||||
f"作为图片识别和理解助手,您的任务是:"
|
||||
f"\n1. 精确识别图片中的文字内容"
|
||||
f"\n2. 理解文字语义"
|
||||
f"\n3. 从以下候选标题中选择最佳匹配项:"
|
||||
f"\n [{antiques_selected}]"
|
||||
f"\n1. 图片基本上就是展品标题、历史人物或者历史事件"
|
||||
f"\n2. 精确识别图片中的文字内容,理解文字语义,重点分析字体较大的文字"
|
||||
f"\n3. 识别出的文字包含标题或者接近于标题的文字"
|
||||
f"\n4. 从以下候选标题中选择最佳匹配项:"
|
||||
f"\n {antiques_selected}"
|
||||
f"\n\n### 输出要求:"
|
||||
f"\n- 以严格JSON格式输出,包含3个字段:"
|
||||
f"\n • `antique`: 匹配的标题(多个用英文分号';'分割,最多匹配3个,无匹配则空字符串)"
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user