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.pysection_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文件用途
STTtabs/stt_tab.py启用、模型选择、加载/卸载、语言、参数提示、术语容量展示
Translationtabs/translation_tab.py启用、后端、源/目标语言、prompt 编辑、KB 挂载、参数
TTStabs/tts_container_tab.py(+ tts_tab.py, qwen3_tts_tab.py后端选择、source/target 开关、设备路由、参考音频、参数
Outputtabs/output_tab.py各类输出开关、输出目录
OBStabs/obs_tab.py叠加启用、按语言样式配置、实时预览
KBtabs/kb_tab.pySTT 术语文件与幻觉过滤编辑器(eb263e5 整合)
Trainingtabs/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.pyconfig/filters.txt 编辑器。
  • simple_mode_panel.py:见第 12 章。

主题

styles/theme.qss 提供深色主题。QComboBox 箭头与按钮可点区域经过多轮修复(bfccf49c500a0bec49e382f7e2079f14379e272bbea2a70312e3bcef)。

布局重置

提交 d4055ca 引入 source/translation 面板清空重置逻辑,Simple 模式 Stop 按钮会调用,确保每次启动前界面状态可预测。