Skip to content

feat(pipeline): 多模态识别管线(实验性),传统/多模态模式与 omni 凭据隔离 (#902) - #924

Open
H-Chris233 wants to merge 1 commit into
Open-Less:betafrom
H-Chris233:codex/omni-pipeline
Open

feat(pipeline): 多模态识别管线(实验性),传统/多模态模式与 omni 凭据隔离 (#902)#924
H-Chris233 wants to merge 1 commit into
Open-Less:betafrom
H-Chris233:codex/omni-pipeline

Conversation

@H-Chris233

Copy link
Copy Markdown
Collaborator

背景

实现 issue #902:两段式「ASR 转写 + LLM 润色」无法解决专有名词误识别(ASR 不知道词典词,后处理模型无法从同音错词还原)。新增实验性「多模态识别管线」:用单个多模态模型一步完成「提示词(风格包 + 词典热词 + 工作语言)+ 音频 → 最终文本」。

改动

  • 高级设置新增实验开关「多模态识别管线」;开启后「服务 → AI 提供商」顶部出现「传统模式 / 多模态模式」切换。
  • 多模态模式:一个模型直接出文,覆盖全部语音管线:
    • 主听写:录音 PCM → WAV → omni 一次调用(含词典热词提示词),不再走 ASR+LLM 两段式;
    • 划词问答:音频 + 选区/历史一次回答,OpenAI 兼容通道流式输出、Gemini 一次性;
    • 选区润色 / 历史重润色:omni 作为纯文本 LLM;
    • Less Computer:omni 负责逐字转写指令后再交 CLI agent。
  • 配置完全隔离:凭据库新增独立 omni 命名空间(apiKey/baseURL/model/temperature/extraHeaders),与传统 ASR/LLM 槽位互不读写;切换模式不删除另一套配置,切回即恢复;运行时只读当前模式,缺 omni 配置明确报错、不回退传统配置。
  • 通道:OpenAI 兼容 chat completions(input_audio base64 WAV,SSE 流式)+ Gemini 原生 generateContent(inlineData audio/wav);复用现有 thinking 控制、SSRF 校验、SSE 解析与重试。
  • 历史归因:多模态会话新增 pipelineMode 字段,历史页显示「多模态」徽标并隐藏「重新转录」。

验证

  • cargo check 通过;cargo test --lib 全绿(新增 omni 请求体、凭据隔离、模式门控测试);backend-tests 170 项通过。
  • 前端 tscfrontend-test-runnernpm run build(tsc + vite)全部通过。
  • 两个失败项为既有环境问题、与本 PR 无关:net::system_proxy_toggle...(并行下全局状态抖动,单独跑通过)、backend-tests Windows symlink PIN 测试(权限环境)。

备注

实现期间 cargo fmt --all 曾格式化一批未改动的 Rust 文件,已还原且未纳入本 PR(备份位于本机临时目录,可恢复)。

新增实验性「多模态识别管线」:高级设置开启后,服务页出现传统/多模态模式切换。多模态模式用单个模型(OpenAI 兼容 input_audio 或 Gemini 原生 generateContent)一步完成「提示词 + 音频 → 最终文本」,覆盖主听写、划词问答(OpenAI 兼容流式 / Gemini 一次性)、选区润色(omni 当纯文本 LLM)、Less Computer 转写。两套配置在凭据库中完全隔离(新增 omni 命名空间),切换不删数据、不回退传统配置。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant