From 9c8559c075379aca3a7393e6830f20f1ea4e4e5e Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Fri, 22 Aug 2025 08:35:57 +0800 Subject: [PATCH] 'commit' --- dsLightRag/Routes/XueBan.py | 69 +++++++++++++++++- .../Routes/__pycache__/XueBan.cpython-310.pyc | Bin 0 -> 1996 bytes .../static/{XiaoZhi.html => XueBan.html} | 0 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 dsLightRag/Routes/__pycache__/XueBan.cpython-310.pyc rename dsLightRag/static/{XiaoZhi.html => XueBan.html} (100%) diff --git a/dsLightRag/Routes/XueBan.py b/dsLightRag/Routes/XueBan.py index 429aa478..e46ec4bd 100644 --- a/dsLightRag/Routes/XueBan.py +++ b/dsLightRag/Routes/XueBan.py @@ -1,6 +1,10 @@ import logging +import os +import tempfile +from datetime import datetime -from fastapi import APIRouter, Request +from fastapi import APIRouter, Request, File, UploadFile +from fastapi.responses import JSONResponse # 创建路由路由器 router = APIRouter(prefix="/api", tags=["学伴"]) @@ -8,6 +12,65 @@ router = APIRouter(prefix="/api", tags=["学伴"]) # 配置日志 logger = logging.getLogger(__name__) -@router.post("/xueban") -async def xueban(request: Request): + +@router.post("/xueban/upload-audio") +async def upload_audio(file: UploadFile = File(...)): + """ + 上传音频文件并进行ASR处理 + - 参数: file - 音频文件 + - 返回: JSON包含识别结果 + """ + try: + # 记录日志 + logger.info(f"接收到音频文件: {file.filename}") + + # 保存临时文件 + timestamp = datetime.now().strftime("%Y%m%d%H%M%S") + file_ext = os.path.splitext(file.filename)[1] + temp_file_name = f"temp_audio_{timestamp}{file_ext}" + temp_file_path = os.path.join(tempfile.gettempdir(), temp_file_name) + + with open(temp_file_path, "wb") as f: + content = await file.read() + f.write(content) + + logger.info(f"音频文件已保存至临时目录: {temp_file_path}") + + # 这里应该调用ASR服务进行处理 + # 示例:asr_result = await process_asr(temp_file_path) + # 为了演示,这里返回模拟结果 + asr_result = { + "text": "这是一段测试音频的识别结果", + "confidence": 0.95, + "audio_duration": len(content) / 1024 / 16 # 估算音频时长 + } + + # 删除临时文件 + os.remove(temp_file_path) + logger.info(f"临时文件已删除: {temp_file_path}") + + # 返回识别结果 + return JSONResponse(content={ + "success": True, + "message": "音频识别成功", + "data": asr_result + }) + + except Exception as e: + logger.error(f"音频处理失败: {str(e)}") + return JSONResponse(content={ + "success": False, + "message": f"音频处理失败: {str(e)}" + }, status_code=500) + +# 实际应用中,您需要实现ASR处理函数 +async def process_asr(audio_path: str) -> dict: + """ + 调用ASR服务处理音频文件 + :param audio_path: 音频文件路径 + :return: 识别结果字典 + """ + # 这里应该集成实际的ASR服务 + # 例如百度AI、阿里云、讯飞等ASR服务 + # 或者本地的ASR模型 pass \ No newline at end of file diff --git a/dsLightRag/Routes/__pycache__/XueBan.cpython-310.pyc b/dsLightRag/Routes/__pycache__/XueBan.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ccaafdd3da27a0d511b9f41b5e8294cbcd2cfa8 GIT binary patch literal 1996 zcmY*aTW=Fb6rR~#@2(xkNldu(BIK8}a-}3Kk5<(d+ES=!ijr0-Dj`Px|K2-ws%x(&1R&zTuXU;e0d}r3~ z?2I8OuRZ+f;F%~we~C$ZiNNF?sLpw42qL(MjIhTB4(5^}K`#~Ml5EIWtjR^C6fq(t z)lf^Cp_Oz)59CTQT8bGljA(>Jh+4ozo0W_Xit2IN*}z7EcGSCw-oR8N(J7qABu4eT zL^?=(Ix>ZgZqiA6NP;Hw3h5%<(~7Zy;1QJWSp#fnD2=&JOqaS=iKZ1E-M)ACu;Zeus%1*0DdF<0l(Kd+~gHHUzk&lOlsZ+7b4xLm6&5GrzaGrnj$CXF-(h^rI zjOMKguDE8wnd}{$@aO@vJm>|7^qU^B>;bOi;j|nUK-LR*6A9n`3DwyFD@X98=b}0$ zxQfQ4IdoZSV2oV3t~5|RLSRs;aOt3K9h=XbR#}*55$R2jd_W-#(}T zCatRckBI0b>ULGtDe(VGh;%@W&&xHY29k7ptNIk&X8qv6DyDEYgg~C{qSA${PC5Ci~etmt>w8^gi*_#{QIl>g(pY z+nJOIQK~=HuCuD)=Xl`loNS7LNHdH&!2>Xf9~=_j8$)_bO~{EnjM0Tv%B;+`M(adHl24(A zrkXRS{S#N=T+Q)vIqEoED?w`(C|4lmOh_XQY`L`Tdc99|!yx$Aer?^mo=NRYOH80+ zJdz|Zz%km=4 zxnw(BshI9TkX4FSaBF4Ew#r-={ujDDR-mq!5DU(#5eA6(Ul znGVY`>Uc$$WBLnX{cz;JgYRYb6KB+BpF_8o*<&>4!f20GIOqqdUy< zK;;mRhmTK4FX2>Y2Q<=QNlQuzIf)ZEiQ`fN$MMTgx)n*4K%zd5Y28?oB`m)9Q3f6}LN2W1* z9pD7xuo-|U@2D_akTwg>e-{J}Bnmi7iLz}lNcVD0FwQC$*o!b{TSXI)P0O1Q=!(T; zAre|l{12J9Gw)en9Dr~J{|+Z)kIKTIP84XjCuFjo4Oo%QvW-Ghso20L;c6xl9a6~3 txdE0o