优化了部分代码

This commit is contained in:
Windpicker-owo
2025-07-17 15:12:20 +08:00
parent 835ea24351
commit 367be4e7d7
3 changed files with 15 additions and 11 deletions

View File

@@ -162,7 +162,7 @@ class MessageRecv(Message):
self.has_picid = False self.has_picid = False
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
self.is_voice == True self.is_voice = True
if isinstance(segment.data, str): if isinstance(segment.data, str):
return await get_voice_text(segment.data) return await get_voice_text(segment.data)
return "[发了一段语音,网卡了加载不出来]" return "[发了一段语音,网卡了加载不出来]"
@@ -247,7 +247,7 @@ class MessageRecvS4U(MessageRecv):
self.has_picid = False self.has_picid = False
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
self.is_voice == True self.is_voice = True
if isinstance(segment.data, str): if isinstance(segment.data, str):
return await get_voice_text(segment.data) return await get_voice_text(segment.data)
return "[发了一段语音,网卡了加载不出来]" return "[发了一段语音,网卡了加载不出来]"

View File

@@ -17,7 +17,6 @@ from src.llm_models.utils_model import LLMRequest
from src.common.logger import get_logger from src.common.logger import get_logger
from rich.traceback import install from rich.traceback import install
import traceback
install(extra_lines=3) install(extra_lines=3)
logger = get_logger("chat_voice") logger = get_logger("chat_voice")
@@ -25,7 +24,7 @@ logger = get_logger("chat_voice")
async def get_voice_text(voice_base64: str) -> str: async def get_voice_text(voice_base64: str) -> str:
"""获取音频文件描述""" """获取音频文件描述"""
try: try:
# 计算图片哈希 # 解码base64音频数据
# 确保base64字符串只包含ASCII字符 # 确保base64字符串只包含ASCII字符
if isinstance(voice_base64, str): if isinstance(voice_base64, str):
voice_base64 = voice_base64.encode("ascii", errors="ignore").decode("ascii") voice_base64 = voice_base64.encode("ascii", errors="ignore").decode("ascii")
@@ -40,7 +39,6 @@ async def get_voice_text(voice_base64: str) -> str:
return f"[语音:{text}]" return f"[语音:{text}]"
except Exception as e: except Exception as e:
traceback.print_exc()
logger.error(f"语音转文字失败: {str(e)}") logger.error(f"语音转文字失败: {str(e)}")
return "[语音]" return "[语音]"

View File

@@ -668,15 +668,21 @@ class LLMRequest:
async def _build_formdata_payload(self, file_bytes: str, file_format: str): async def _build_formdata_payload(self, file_bytes: str, file_format: str):
"""构建form-data请求体""" """构建form-data请求体"""
# 非常丑陋的方法,先将文件写入本地,然后再读取,应该有更好的办法 # 目前只适配了音频文件
with open(f"file.{file_format}","wb") as f: # 如果后续要支持其他类型的文件,可以在这里添加更多的处理逻辑
f.write(file_bytes)
data = aiohttp.FormData() data = aiohttp.FormData()
content_type_list = {
"wav": "audio/wav",
"mp3": "audio/mpeg",
"ogg": "audio/ogg",
"flac": "audio/flac",
"aac": "audio/aac",
}
data.add_field( data.add_field(
"file",open(f"file.{file_format}","rb"), "file",io.BytesIO(file_bytes),
filename=f"file.{file_format}", filename=f"file.{file_format}",
content_type='audio/wav' content_type=f'audio/{content_type_list[file_format]}' # 根据实际文件类型设置
) )
data.add_field( data.add_field(
"model", self.model_name "model", self.model_name