Commit 8f64d38
Changed files (1)
src
src/asr/voice_recognition.py
@@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
import asyncio
import contextlib
+import io
import re
from pathlib import Path
@@ -14,8 +15,8 @@ from asr.tecent_asr import create_async_asr, flash_asr, query_async_asr, single_
from config import ASR_MAX_DURATION, CAPTION_LENGTH, FILE_SERVER, PREFIX
from messages.parser import parse_msg
from messages.progress import modify_progress
-from messages.sender import send2tg, send_texts
-from messages.utils import equal_prefix, get_reply_to, smart_split, startswith_prefix
+from messages.sender import send2tg
+from messages.utils import count_without_entities, equal_prefix, get_reply_to, startswith_prefix
from multimedia import convert_to_audio
from utils import to_int
@@ -183,12 +184,15 @@ async def voice_to_text(
logger.success(f"{final!r}")
# send results
- caption = (await smart_split(final, CAPTION_LENGTH))[0]
- remaining_texts = final.removeprefix(caption)
- reply_parameters = get_reply_to(trigger_info["mid"], kwargs.get("reply_msg_id", 0))
target_chat = kwargs["target_chat"] if kwargs.get("target_chat") else this_info["cid"]
- await client.copy_message(chat_id=to_int(target_chat), from_chat_id=trigger_info["cid"], message_id=trigger_info["mid"], caption=caption, reply_parameters=reply_parameters)
- await send_texts(client, target_chat, reply_parameters, texts=remaining_texts)
+ reply_parameters = get_reply_to(trigger_info["mid"], kwargs.get("reply_msg_id", 0))
+ length = await count_without_entities(final)
+ if length < CAPTION_LENGTH: # short
+ await client.copy_message(chat_id=to_int(target_chat), from_chat_id=trigger_info["cid"], message_id=trigger_info["mid"], caption=final, reply_parameters=reply_parameters)
+ else: # long
+ final = final.removeprefix(f"{BEGINNING}\n")
+ with io.BytesIO(final.encode("utf-8")) as f:
+ await client.send_document(to_int(target_chat), f, file_name="语音识别结果.txt", reply_parameters=reply_parameters)
await modify_progress(del_status=True, **kwargs)
except Exception as e:
logger.error(f"Failed to recognize audio: {e}")