11 — 用户界面
源码目录:src/vocal10n/ui/。框架:PySide6(Qt6, LGPL)。
窗口结构
主窗口纵向分为两大区域:
flowchart TB
subgraph A["Section A — Monitoring"]
direction LR
subgraph A1["A1 · Live text"]
direction TB
A1a["A1a · Source stream"]
A1b["A1b · Translation stream"]
end
subgraph A2["A2 · Metrics + Status"]
direction TB
M1["GPU / VRAM"]
M2["STT / LLM / TTS latency"]
M3["Module status flags"]
end
end
subgraph B["Section B — QTabWidget"]
direction LR
T1["STT"] --- T2["Translation"] --- T3["TTS"] --- T4["Output"] --- T5["OBS"] --- T6["KB"] --- T7["Training"]
end
A --- B
section_a.py 与 section_b.py 构建这两个区域,main_window.py 负责组装并添加菜单栏和 Simple/Pro 模式切换(详见第 12 章)。
Section A — 监控区
A1 为上下两块流式文本:
- A1a:源语言(实时 + 累计,默认 30/70 分配,见
971bf66)。 - A1b:目标语言(同结构)。
A2 显示:
- GPU 利用率与显存占用(
utils.gpu)。 - STT 到 OBS partial、STT confirmed、translation、TTS TTFA 延迟。
- STT/LLM/TTS/OBS 运行状态、当前源/目标语言等状态标识。
Section B Tabs(Pro 模式)
| Tab | 文件 | 用途 |
|---|---|---|
| STT | tabs/stt_tab.py | 启用、模型选择、加载/卸载、语言、参数提示、术语容量展示 |
| Translation | tabs/translation_tab.py | 启用、后端、源/目标语言、prompt 编辑、KB 挂载、参数 |
| TTS | tabs/tts_container_tab.py(+ tts_tab.py, qwen3_tts_tab.py) | 后端选择、source/target 开关、设备路由、参考音频、参数 |
| Output | tabs/output_tab.py | 各类输出开关、输出目录 |
| OBS | tabs/obs_tab.py | 叠加启用、按语言样式配置、实时预览 |
| KB | tabs/kb_tab.py | STT 术语文件与幻觉过滤编辑器(eb263e5 整合) |
| Training | tabs/training_tab.py | 基于 SRT 的训练数据审核(占位) |
可复用组件
param_slider.py:带说明 tooltip 与重置按钮的参数控件。model_selector.py:模型下拉 + Load/Unload,状态与SystemState同步。stream_text.py:流式追加文本控件,partial 可被 confirmed 覆盖。term_file_list.py:STT 术语文件拖拽列表。filter_list_editor.py:config/filters.txt编辑器。simple_mode_panel.py:见第 12 章。
主题
styles/theme.qss 提供深色主题。QComboBox 箭头与按钮可点区域经过多轮修复(bfccf49、c500a0b、ec49e38、2f7e207、9f14379、e272bbe、a2a7031、2e3bcef)。
布局重置
提交 d4055ca 引入 source/translation 面板清空重置逻辑,Simple 模式 Stop 按钮会调用,确保每次启动前界面状态可预测。