feat(gui): expose the streaming and debug options in the advanced page

These were command-line only. Add them to the settings dialog so the whole
feature set is reachable without arguments: stream mode, window limit,
segment limit, prefix-rollback token count, cold-start chunk count, max
tokens per step, thread count, verbose logging and the model directory. The
streaming group is grouped and greyed out for streaming-ONNX models, which
only use the commit granularity. The backend fingerprint now includes them,
so changing one restarts the recogniser; appearance changes still apply live.

Also add a test-only --settings-tab so a specific page can be screenshotted.

设置「高级」页补上原来只有命令行才有的选项:流式策略/滑窗上限/单段最长/前缀回滚
token 数/冷启动 chunk 数/单段最多生成 token/线程数/详细日志/模型目录。流式那一组
单独成组,选了流式 ONNX 模型时置灰(它们只用「更新粒度」)。这些值纳入「后端指纹」,
改动会重启识别后端;外观类改动仍然即时生效。另加测试用 --settings-tab 以便给单个
页签截图。
This commit is contained in:
blumia committed 2026-10-12 17:36:43 +08:00
1 parent d234b9658d
commit 6c04071bb5
8 files changed
+252 -25

No files matched your search

+2
View File
@@ -28,6 +28,7 @@
参数的选择与实测见 [docs/phase2-streaming.md](phase2-streaming.md)。
**这些参数只影响 `llama` 后端**(Qwen3-ASR);`sherpa` 的流式模型只用到「提交粒度」一个参数。
同一组参数在 GUI 的「高级 → 流式」里也有(选了流式 ONNX 模型时那一组会置灰)。
| 选项 | 默认 | 说明 |
|---|---|---|
@@ -84,6 +85,7 @@
| `--screenshot <path>` | — | 启动后自动截图并退出;同时截折叠态与展开态(`-expanded.png`) |
| `--screenshot-delay <sec>` | `6` | 截图前等待秒数 |
| `--screenshot-settings <path>` | — | 打开设置对话框、截图后退出 |
| `--settings-tab <tab>` | — | 截图设置对话框时先切到某个页签(`0`–`2` 或 `模型`/`显示`/`高级`) |
| `--settings-autoclose <how>` | — | 自动操作设置对话框:`reject` / `close` / `accept` / `ok` / `apply`(`ok`/`apply` 是真的去点按钮) |
| `--quit-after <sec>` | — | 运行若干秒后优雅退出(测退出路径) |
+29 -3
View File
@@ -47,8 +47,9 @@
| 取消 | 放弃本次改动(已经用「应用」生效过的改动不会被回滚) |
| 确定 | 应用并关闭 |
**哪些改动要重启识别后端?** 只有**模型 / 识别语言 / 采集设备**这三项变化时才会重建后端并重启转写;
透明度、字号、行数、灰色尾部这类外观改动是即时生效的,不会打断正在进行的转写。
**哪些改动要重启识别后端?** 只有**模型 / 识别语言 / 采集设备**,以及高级页里的**流式参数、
线程数、模型目录**变化时才会重建后端并重启转写;透明度、字号、行数、灰色尾部这类外观改动是
即时生效的,不会打断正在进行的转写。
### 模型页
@@ -80,10 +81,31 @@
### 高级页
**通用**
| 项 | 说明 |
|---|---|
| 更新粒度(秒) | 累积多少秒音频跑一步;「自动」= 由后端决定(流式模型 0.32s) |
| 线程数 | 推理线程数;**只影响 Qwen3-ASR**,流式模型固定单线程(多线程反而更慢) |
**流式(只影响 Qwen3-ASR)** —— 这一组对应 llama 后端的流式参数,改动会重启识别后端。
选了流式 ONNX 模型(zipformer / X-ASR / Nemotron)时整组会**置灰**,因为那些模型只用「更新粒度」。
| 项 | 对应命令行 | 说明 |
|---|---|---|
| 策略 | `--stream-mode` | `incremental`(增量复用,1~2 秒就出字,推荐)/ `append`(追加式,成本平坦但需要大 chunk)/ `window`(早期的对比实现) |
| 滑窗上限(秒) | `--stream-window` | 仅 window 模式;「不限」= 不滑窗 |
| 单段最长时长(秒) | `--stream-segment` | 超过就提交并重置上下文;「不限」= 不设上限 |
| 前缀回滚 token 数 | `--unfixed-tokens` | 回滚丢弃最后 N 个 token —— 它们会显示成灰色的不稳定尾部 |
| 冷启动 chunk 数 | `--unfixed-chunks` | 前 N 个 chunk 不带前缀,避免开头重复 |
| 单段最多生成 token | `--max-tokens` | 单段生成的 token 上限 |
| 线程数 | `--threads` | 只影响 Qwen3-ASR;流式模型固定单线程(多线程反而更慢) |
**调试**
| 项 | 对应命令行 | 说明 |
|---|---|---|
| 输出详细日志 | `--verbose` | 打印 llama.cpp / mtmd 的详细日志(排查加载/推理问题时用) |
| 模型目录 | `--model-dir` | 留空 = 默认目录(占位符会显示实际路径);一般不需要改 |
## 配置文件
@@ -101,6 +123,10 @@ windowX=179 windowY=725 ; 拖动后记录的位置
mirrorBase=https://hf-mirror.com
proxyMode=0 ; 0=不使用 1=跟随系统 2=手动
chunkSec=0 threads=8 ; 高级
streamMode=incremental ; 高级:流式参数(只影响 Qwen3-ASR)
streamWindowSec=16 streamSegmentSec=30
unfixedTokens=5 unfixedChunks=2 maxTokens=256
verbose=false modelDir= ; 高级:调试
```
删掉这个文件(或其中某个键)就回到默认值。模型文件在