Skip to content

[desktop][omni] 多模态开启时选区语音编辑仍强制传统 ASR+LLM(AsrOnly 残留) #1119

Description

@HKLHaoBin

现象

开启「多模态识别管线」且切换到「多模态模式」后,使用选区语音编辑(选中文字 → 热键口述指令 → 提问 / 编辑选区):

  • 期望(按设置文案):语音也走 Omni,一步完成「音频 + 提示词 → 文本」
  • 实际:仍走 传统 ASR 转写指令 → LLM 润色 / 意图分类 / EditPlan
  • 多模态开关对这条路径无效;主听写 / QA 语音在同一偏好下会走 Omni

影响

  1. 产品文案与行为不一致(「各语音管线」改用 Omni,但选区语音编辑未覆盖)。
  2. 多模态模式下若未配置 ASR,选区语音编辑会在捕获阶段失败,尽管 Omni 已验证通过。
  3. 历史里 pipeline_mode 为 None / 写死 traditional,无法归因。

环境

  • 平台:桌面(Selection Voice;Less Computer 语音同源闸门)
  • 调研:仓库内 docs/omni-pipeline-mobile-and-voice-edit-research.md §4

根因分析(调研结论)

不是偏好读写 bug,是代码硬编码。

  1. start_selection_voice_capture(及 Less Computer 语音)传入 DictationContextPurpose::AsrOnly(api.rs)。
  2. capture_dictation_context 注释写明 Less/Selection audio always uses ASR,对 AsrOnly 强制 PipelineMode::Traditional,无视 effective_pipeline_mode。
  3. 捕获走 start_voice_capture(ASR),而非 QA 的 start_audio_capture + PCM → Omni。
  4. 后处理 selection_voice_service::model_text 解析真实 LLM,占位 "selection-voice-unused-omni";Host 将 selection_polisher 接到传统 LLM,不是 SharedAuxiliaryTextPolisher。
  5. 对照:start_qa_voice_capture(QaVoice)已按 multimodal 正确分支。

行为矩阵(multimodal ON)

场景 实际管线
主听写 Omni
QA 语音 Omni
选区语音编辑 ASR → LLM(传统)
Less Computer 语音 ASR(传统)

接受标准(产品二选一,需先定)

A. 文档化例外(最小)

  • 设置 / 文案写明:选区语音编辑与 Less 语音暂固定传统 ASR+LLM
  • 多模态下缺 ASR 时给出明确错误(勿暗示「已用 Omni」)

B. 对齐 QA(完整)

  • Selection Voice 不再用 AsrOnly 强制 Traditional;尊重 effective_pipeline_mode
  • multimodal 时 start_audio_capture + Omni 产出指令文本,再走既有意图 / EditPlan
  • 历史写入真实 pipeline_mode
  • Less Computer 语音是否一并改动需明确 scope
  • 后处理接线:若仅第一段 Omni,文案需说明 EditPlan 仍可能走 LLM

相关代码

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium prioritybugSomething isn't workingexperimentalExperimental feature or changeneeds-designNeeds design discussion

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions