Skip to content

[Bug]aiocqhttp 适配器未处理 record 消息的裸文件名,导致语音转文字失败 #9199

Description

@NoFizz

What happened / 发生了什么

使用 LuckyLilliaBot(LLOneBot)作为 QQ 协议端时,发送语音消息会导致语音转文字(STT)失败。
根本原因是 aiocqhttp_platform_adapter.pyrecord 类型消息走的是通用 else 分支,直接用协议端返回的裸文件名(如 0d2bb1468a87d64414f8e563cc61c33c.amr)创建 Record 组件。该文件在本地不存在,MediaResolver 创建了一个几乎为空的文件(144 字节),MiMo STT 的 WAV 校验失败并抛出异常。
值得注意的是,file 类型消息已有专门的处理逻辑(通过 get_group_file_url API 获取真实链接),但 record 类型缺少类似的处理。

Reproduce / 如何复现?

  1. 配置 MiMo STT 作为语音转文字提供商
  2. 在 QQ 中向机器人发送一条语音消息
  3. 观察日志,出现 MiMoAPIError: Audio for MiMo STT could not be converted to WAV 错误

AstrBot version, deployment method (e.g., Windows Docker Desktop deployment), provider used, and messaging platform used. / AstrBot 版本、部署方式(如 Windows Docker Desktop 部署)、使用的提供商、使用的消息平台适配器

AstrBot 启动器部署
AstrBot v4.26.5
LuckyLilliaBot v8.0.7
MiMo STT 提供商(模型mimo-v2.5-asr)

OS

Windows

Logs / 报错日志

[2026-07-09 19:15:27.605] [Core]
[INFO]
[core.event_bus:74]: [阿紫(独享型)] [阿紫(aiocqhttp)] 知野/1589165102: [ComponentType.Record]
[2026-07-09 19:15:28.038] [Core]
[ERRO]
[v4.26.5] [preprocess_stage.stage:201]: Traceback (most recent call last):
File "astrbot\core\pipeline\preprocess_stage\stage.py", line 189, in _stt_record
result = await stt_provider.get_text(audio_url=path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astrbot\core\provider\sources\mimo_stt_api_source.py", line 77, in get_text
audio_data_url, cleanup_paths = await prepare_audio_input(audio_url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astrbot\core\provider\sources\mimo_api_common.py", line 80, in prepare_audio_input
_validate_wav_payload(audio_data.base64_data, audio_source)
File "astrbot\core\provider\sources\mimo_api_common.py", line 118, in _validate_wav_payload
raise MiMoAPIError(
astrbot.core.provider.sources.mimo_api_common.MiMoAPIError: Audio for MiMo STT could not be converted to WAV (unrecognized audio bytes): local media path name='media_audio_cf72f3a4fcd344f2ac7b406016997d3c.wav' len=144
[2026-07-09 19:15:28.038] [Core]
[ERRO]
[v4.26.5] [preprocess_stage.stage:203]: 语音转文本失败: Audio for MiMo STT could not be converted to WAV (unrecognized audio bytes): local media path name='media_audio_cf72f3a4fcd344f2ac7b406016997d3c.wav' len=144

Are you willing to submit a PR? / 你愿意提交 PR 吗?

  • Yes!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:platformThe bug / feature is about IM platform adapter, such as QQ, Lark, Telegram, WebChat and so on.bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions