优化了部分代码
This commit is contained in:
@@ -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 "[发了一段语音,网卡了加载不出来]"
|
||||||
|
|||||||
@@ -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 "[语音]"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user