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 中定义,核心实现见 0a9cc55、5ca6555、81cedf4、fdf978c。
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 锁行为等场景。