Skip to content

[asr] 百炼「验证」必然失败(EmptyAudio);「拉取模型」硬编码假成功;https 地址只报笼统「操作失败」 #772

Description

@bigsongeth

现象

三个缺陷叠加,导致「阿里云百炼实时 ASR」的连接检查完全不可用,且用户无法自助定位:

  1. 「验证」对有效凭据也必然失败validate_bailian_asr_provider 只发送 1 个 100ms 静音块(TARGET_AUDIO_CHUNK_BYTES = 3200B)就 finish-task;DashScope 对 <200ms 的音频固定返回 task-failed: EmptyAudio(2026-07 用独立 WebSocket 脚本实测边界:单帧 100ms 拒收、200ms 起接受)。该错误串无前端映射,显示为笼统的「操作失败」。
  2. 「拉取模型」永远假成功list_provider_models 对 bailian 直接返回硬编码的 ["fun-asr-realtime"],不发任何网络请求;Key/endpoint 全错也显示"已拉取 1 个模型"(其他厂商这颗按钮是真实带 Key GET /models)。
  3. 接口地址协议头不校验。用户容易把百炼控制台展示的 https:// 兼容模式/业务空间专属域名地址粘进来,WebSocket 握手报 "URL scheme not supported",同样被前端兜底成「操作失败」。
  • 触发条件:供应商选 bailian,填任意有效或无效凭据,点「验证」/「拉取模型」。
  • 证据:
    • 代码位置:commands/providers.rs(validate 只喂 1 块静音;list_provider_models 硬编码返回);asr/bailian.rs::open_sessionProvidersSection.tsx::providerErrorMessage 兜底分支。
    • 线上行为实测(同一有效 Key,独立脚本直连 wss://dashscope.aliyuncs.com/api-ws/v1/inference/):单帧 100ms 静音 → task-failed: EmptyAudio;单帧 200/300/500/1000ms 静音 → task-finished

影响

  • 用户拿着有效的百炼 Key,得到「拉取模型成功 + 验证失败(操作失败)」的矛盾信号,误判为 Key 无效或功能损坏(实际听写通路对真实语音是正常的,因为真实语音远超 200ms)。
  • 配合缺陷 3,用户把控制台的 https 地址粘进来后完全无从定位问题。

建议接受标准

  • 「验证」发送 ≥200ms(建议 500ms 留余量)的静音,有效凭据下返回成功。
  • 「拉取模型」在返回静态列表前执行真实连通性检查,凭据错误时如实报错。
  • ws:///wss:// 协议头的接口地址返回专门错误码,前端显示含默认 wss 地址的明确提示,覆盖全部 5 种语言。
  • 已知同类残留:xiaomi-mimo-asr 的「拉取模型」同样是硬编码列表(本 issue 不展开,可另立)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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