Commit 8f64d38

benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-04-21 15:48:48
chore(asr): send long results as txt file
1 parent 06f06fa
Changed files (1)
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}")