主要修改在asr-monitor-test 修改小程序手机号码登录 小程序的TTS生成(查一查、AI) 增加和支付相关的功能

This commit is contained in:
qcloud
2025-07-10 22:04:44 +08:00
parent 0665eb2c2d
commit 74899acab9
23 changed files with 4467 additions and 459 deletions

View File

@@ -35,6 +35,7 @@ from api.utils.file_utils import get_project_base_directory
from peewee import fn
import threading, queue,uuid,time,array
from concurrent.futures import ThreadPoolExecutor
from api.db.services.ali_tts_service import (stream_manager_w_stream as stream_manager)
def audio_fade_in(audio_data, fade_length):
# 假设音频数据是16位单声道PCM
@@ -173,8 +174,7 @@ class StreamSessionManager:
def get_session(self, session_id):
return self.sessions.get(session_id)
stream_manager = StreamSessionManager()
stream_manager_bk = StreamSessionManager()
class DialogService(CommonService):
model = Dialog
@@ -756,16 +756,20 @@ def chat(dialog, messages, stream=True, **kwargs):
if stream:
last_ans = ""
answer = ""
audio_url = None
if not kwargs.get('tts_disable'):
# 创建TTS会话提前初始化
tts_session_id = stream_manager.create_session(tts_mdl,sample_rate=tts_sample_rate,stream_format=tts_stream_format)
tts_session = stream_manager.get_session(tts_session_id)
audio_url = f"/tts_stream/{tts_session_id}"
tts_session_id = stream_manager.create_session(tts_mdl,sample_rate=tts_sample_rate,stream_format=tts_stream_format,
voice = kwargs.get('tts_model'))
tts_session = stream_manager.get_session(tts_session_id)
audio_url = f"/tts_stream/{tts_session_id}"
send_tts_url = False
chunk_buffer = [] # 新增文本缓冲
last_flush_time = time.time() # 初始化时间戳
# 下面优先处理知识库中没有找到相关内容 cyx 20250323 修改
if not kwargs["knowledge"] or kwargs["knowledge"] =="" or len(kwargs["knowledge"]) < 4:
stream_manager.append_text(tts_session_id, "未找到相关内容")
if not kwargs.get('tts_disable'):
stream_manager.append_text(tts_session_id, "未找到相关内容")
yield {
"answer": "未找到相关内容",
"delta_ans": "未找到相关内容",
@@ -810,18 +814,19 @@ def chat(dialog, messages, stream=True, **kwargs):
yield {"answer": answer, "delta_ans": sanitized_text, "reference": {}}
"""
# 首块返回音频URL
if send_tts_url is False and tts_session['tts_chunk_data_valid'] is True:
yield {
"answer": answer,
"delta_ans": sanitized_text,
"session_id": tts_session_id,
"reference": {},
"audio_stream_url": audio_url,
"sample_rate":tts_sample_rate,
"stream_format":tts_stream_format,
}
send_tts_url = True # 发送一次tts url 给前端即可,不能重复发送
logging.info(f"--chat retur tts url {audio_url}")
if send_tts_url is False and not kwargs.get('tts_disable'):
if tts_session['tts_chunk_data_valid'] is True:
yield {
"answer": answer,
"delta_ans": sanitized_text,
"session_id": tts_session_id,
"reference": {},
"audio_stream_url": audio_url,
"sample_rate":tts_sample_rate,
"stream_format":tts_stream_format,
}
send_tts_url = True # 发送一次tts url 给前端即可,不能重复发送
logging.info(f"--chat retur tts url {audio_url}")
else:
yield {"answer": answer, "delta_ans": sanitized_text,"reference": {}}