From 9bf1128f4ac239bfee719ac8e059c95599bed233 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Fri, 5 Sep 2025 22:27:58 +0800 Subject: [PATCH] 'commit' --- dsLightRag/Routes/XunFeiRoute.py | 55 +++++++++++++----- .../__pycache__/XunFeiRoute.cpython-310.pyc | Bin 1213 -> 1898 bytes ...audio_76c396992ca94dd4b94250ac67e31820.wav | Bin 0 -> 34937 bytes 3 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 dsLightRag/static/audio/audio_76c396992ca94dd4b94250ac67e31820.wav diff --git a/dsLightRag/Routes/XunFeiRoute.py b/dsLightRag/Routes/XunFeiRoute.py index ae904d51..8045807a 100644 --- a/dsLightRag/Routes/XunFeiRoute.py +++ b/dsLightRag/Routes/XunFeiRoute.py @@ -1,11 +1,10 @@ import logging import os import uuid -import time -import asyncio -from fastapi import APIRouter, HTTPException, UploadFile, File -from pydantic import BaseModel -from typing import Optional +import tempfile +import shutil +import sys +from fastapi import APIRouter, UploadFile, File # 配置日志 logger = logging.getLogger(__name__) @@ -15,24 +14,52 @@ router = APIRouter(prefix="/api/xunFei", tags=["讯飞"]) UPLOAD_DIR = os.path.join(os.path.dirname(__file__), "..", "static", "audio") os.makedirs(UPLOAD_DIR, exist_ok=True) +# 讯飞配置 +sys.path.append(os.path.join(os.path.dirname(__file__), "..")) +from Config.Config import XF_APPID, XF_APIKEY, XF_APISECRET + @router.post("/save-audio") async def save_audio(audio: UploadFile = File(...)): - """保存音频文件""" + """保存音频文件并评分""" + temp_file = None try: - # 生成文件名 + # 1. 保存音频到临时文件 + temp_dir = tempfile.mkdtemp() + temp_file = os.path.join(temp_dir, f"temp_{uuid.uuid4().hex}.wav") + + content = await audio.read() + with open(temp_file, "wb") as f: + f.write(content) + + # 2. 讯飞评分 + from KeDaXunFei.XunFeiAudioEvaluator import XunFeiAudioEvaluator + evaluator = XunFeiAudioEvaluator( + appid=XF_APPID, + api_key=XF_APIKEY, + api_secret=XF_APISECRET, + audio_file=temp_file, + language="english" + ) + results, eval_time = evaluator.run_evaluation() + + # 3. 保存到正式目录 file_name = f"audio_{uuid.uuid4().hex}.wav" file_path = os.path.join(UPLOAD_DIR, file_name) + shutil.copy2(temp_file, file_path) - # 保存文件 - content = await audio.read() - with open(file_path, "wb") as f: - f.write(content) - print(file_path) return { "success": True, "file_name": file_name, - "file_path": f"/static/audio/{file_name}" + "file_path": f"/static/audio/{file_name}", + "evaluation": results, + "evaluation_time": str(eval_time) } except Exception as e: - return {"success": False, "error": str(e)} \ No newline at end of file + logger.error(f"处理失败: {str(e)}") + return {"success": False, "error": str(e)} + + finally: + # 4. 清理临时文件 + if temp_file and os.path.exists(temp_file): + shutil.rmtree(os.path.dirname(temp_file), ignore_errors=True) \ No newline at end of file diff --git a/dsLightRag/Routes/__pycache__/XunFeiRoute.cpython-310.pyc b/dsLightRag/Routes/__pycache__/XunFeiRoute.cpython-310.pyc index 8e53d407598cff97db591a5fd030f46a39cddc82..7e6a024564caecb94d06823a1e49557fc85ee7e5 100644 GIT binary patch literal 1898 zcmaJBU2hddbY}MZe)Uocl!EAkK3pShRP=!uV?*26&|p(Ag-w&qdS`mO?Y+A^n-VNW-yXl*Hw|onB(zIKS@3dUs zZF#h?^35O}-UAoXbBA^~{| z?hXC-c8~NhR-P4`ds=(_y{&!zzSgim3=-w;ep>2b=F##dUc}U8?joTTI&j|F#Qq4y zCsD1s4e_B9HA8yiv(s})CK#86H`~o5q*GCoNmId%;#k;@#@4cUiba_X5_iA7zWwEA zH6racXN%FAG)34*H^}Iyv{Mm^s4lHAqfv6IhNa8aqErOQ3Yc+EPX*(%v(ppO)7bR! z$uqLlM^8>3o0~iZ#?tUCJFLY=>sUGX@GHTt>h?4I>DO@b4yL$+H-6f9SD-HLp$-vb z+31=%p+s0+yN8yYONbg*j2`LW9Ch6unucn=jyi_$a!k!l@?p7S=4Q8$8!D6YaB3nG zZ5kNG?(-;paTT~~oq?ZP)NU4ArH+MBZi%v}hyl<76}xD4?A-2FduV}loQ_Mqf75ktAViD~JwH4on8n7^kb_vE;T`2{h! zyjRov6io}Xth(c*UM3R5>$frL6fxR3EcSOtXa%$tH?h*J`(&U`)9Ph1k8Fqu@>hJj zsO{X`VdvKW+3Cxy;#K9{FFT}ueZ15vQmeKrI{RVh@A3A90v~Im|)lrjY!)6wWgiD9Tjb@ZC z)huYXb~~cdfi?|R*t%a(NXqJ*3BZ+Du&CPEZH93p3meS0``l9-m9c)qj%mgiD09-R zUT0}4JtY&wVT(OP+o4#J1=jZ*j5)2sp!Y+XJ7$43{o zu6}p-hp&!4HB}>gH*lq;uhb4mSB0(pb6P7@5t1aSG_^T%If-IvW*Nk1DR@L0OAIEC zvye(NX|q^bt2`3SfATn+2>YoTeO$)4a)zr3;zb42Joy!##lfR6VESig-WZ<;CyH+g29Zin9B08Bwmafqy6n)?Ep=eK$Vr-I=ef-OIqD4 gt%PPx_Nto9R0ZN97gEt*L%0Cx8G-+hF{BguH#OfNSpWb4 literal 1213 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 LtZnBxDQk7VwRdqu literal 0 HcmV?d00001