diff --git a/src/chat/message_receive/message.py b/src/chat/message_receive/message.py index a0241fe01..11b8c86c3 100644 --- a/src/chat/message_receive/message.py +++ b/src/chat/message_receive/message.py @@ -162,7 +162,7 @@ class MessageRecv(Message): self.has_picid = False self.is_picid = False self.is_emoji = False - self.is_voice == True + self.is_voice = True if isinstance(segment.data, str): return await get_voice_text(segment.data) return "[发了一段语音,网卡了加载不出来]" @@ -247,7 +247,7 @@ class MessageRecvS4U(MessageRecv): self.has_picid = False self.is_picid = False self.is_emoji = False - self.is_voice == True + self.is_voice = True if isinstance(segment.data, str): return await get_voice_text(segment.data) return "[发了一段语音,网卡了加载不出来]" diff --git a/src/chat/utils/utils_voice.py b/src/chat/utils/utils_voice.py index 9dbf9933b..960ea0b1f 100644 --- a/src/chat/utils/utils_voice.py +++ b/src/chat/utils/utils_voice.py @@ -17,7 +17,6 @@ from src.llm_models.utils_model import LLMRequest from src.common.logger import get_logger from rich.traceback import install -import traceback install(extra_lines=3) logger = get_logger("chat_voice") @@ -25,7 +24,7 @@ logger = get_logger("chat_voice") async def get_voice_text(voice_base64: str) -> str: """获取音频文件描述""" try: - # 计算图片哈希 + # 解码base64音频数据 # 确保base64字符串只包含ASCII字符 if isinstance(voice_base64, str): 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}]" except Exception as e: - traceback.print_exc() logger.error(f"语音转文字失败: {str(e)}") return "[语音]" diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index a81fc09d6..9d834afe9 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -668,15 +668,21 @@ class LLMRequest: async def _build_formdata_payload(self, file_bytes: str, file_format: str): """构建form-data请求体""" - # 非常丑陋的方法,先将文件写入本地,然后再读取,应该有更好的办法 - with open(f"file.{file_format}","wb") as f: - f.write(file_bytes) - + # 目前只适配了音频文件 + # 如果后续要支持其他类型的文件,可以在这里添加更多的处理逻辑 data = aiohttp.FormData() + content_type_list = { + "wav": "audio/wav", + "mp3": "audio/mpeg", + "ogg": "audio/ogg", + "flac": "audio/flac", + "aac": "audio/aac", + } + data.add_field( - "file",open(f"file.{file_format}","rb"), + "file",io.BytesIO(file_bytes), filename=f"file.{file_format}", - content_type='audio/wav' + content_type=f'audio/{content_type_list[file_format]}' # 根据实际文件类型设置 ) data.add_field( "model", self.model_name