12 — 简单模式

分支:dev/simple-pro-modes(已合并)。设计文档:simple_ui_plan.md。验证清单:simple_ui_validation.md

目标

将完整 Pro UI 收敛为一键 Start All / Stop All,同时不丢失底层能力。两种模式共享同一代码库,通过主窗口全局模式开关切换。

Simple 面板

vocal10n.ui.widgets.simple_mode_panel.SimpleModePanel 提供:

  • 源语言选择。
  • 目标语言选择。
  • TTS 后端选择(GPT-SoVITS / Qwen3-TTS)。
  • 音频输出设备选择。
  • “保存字幕”开关(绑定 output.*)。
  • Start All / Stop All 按钮。
  • STT / LLM / TTS / 会话状态胶囊。
  • 紧凑单行指标(替代 Pro 的 Section A2)。
  • source/translation 选项卡文本面板(替代 Pro 的 A1 分屏)。
  • 所有控件均有 tooltip(6db6b27)。

激活 Simple 模式后,Section A 会切换为专用布局(e96bcb9)。

分阶段启动

Start All 会按固定顺序启动,每阶段带超时与进度状态,便于用户理解流程并可回滚恢复。状态机在 simple_ui_plan.md 中定义,核心实现见 0a9cc555ca655581cedf4fdf978c

stateDiagram-v2
    [*] --> Idle
    Idle --> LoadingSTT: Start All clicked
    LoadingSTT --> LoadingLLM: STT ready
    LoadingLLM --> WarmingTTS: LLM ready
    WarmingTTS --> Ready: TTS warm
    Ready --> Stopping: Stop All
    Stopping --> Idle

    LoadingSTT --> RollingBack: timeout / error
    LoadingLLM --> RollingBack: timeout / error
    WarmingTTS --> RollingBack: timeout / error
    RollingBack --> Idle: unload loaded modules

    note right of WarmingTTS
        Qwen3-TTS uses a longer
        warm-up budget (commit 81cedf4)
    end note

任一阶段失败/超时时,面板会自动回滚已加载模块并回到 Idle,同时显示错误状态。过渡期间启用 busy 锁,避免重复点击 Start。

Stop 并保留已加载模型

Stop All 结束会话。默认会卸载 STT/LLM/TTS 以释放显存。5ca6555 增加“保留模型已加载”选项,可用于连续会话快速重启。

Simple 默认策略

为降低复杂度,Simple 与 Pro 的默认行为略有差异:

  • 选择 Qwen3-TTS 时,强制 tts_qwen3.voice_mode = clone 并使用已配置参考音频(fdf978c)。
  • STT 与 LLM 始终联动开启;不暴露 Pro 模式中的手动输入捷径路径。
  • 文件输出由单个“保存字幕”开关统一控制,联动 source/target 的 SRT/TXT。

验证

simple_ui_validation.md 是手工 QA 清单。当前矩阵覆盖两种 TTS 后端的 Start/Stop、中途模式切换、模型路径缺失、过渡阶段 busy 锁行为等场景。