docs: add screenshots to README and MANUAL, rename screenshot files

- Renamed 21 raw screenshots to meaningful filenames under Screenshots/
- Updated README.md and linux/README.md: added organized screenshot
  sections (Main panel & overlay, Settings pages, Setup wizard) using
  new filenames with click-to-enlarge links
- Updated MANUAL.md: rewrote intro to reflect new sidebar navigation
  (Presets · General · Keyboard · Wakeword · STT Engines · LLM Engines ·
  Benchmark — STT · Benchmark — Wakeword · Log · Manual · About);
  renamed section headers to match; added screenshot at each section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mARTin-B78 2026-06-10 17:22:34 +02:00
parent a9c08a54c8
commit 4b8b9db43e
24 changed files with 316 additions and 124 deletions

210
MANUAL.md
View File

@ -1,10 +1,11 @@
# Blitztext — User Manual # Blitztext — User Manual
A reference for every setting in the Blitztext **Settings** window, tab by tab. A reference for every setting in the Blitztext **Settings** window, page by page.
Open Settings from the system-tray menu (**Settings…**) or the control panel. The Open Settings from the system-tray menu (**Settings…**) or the control panel. The
window has seven tabs — **Presets · Engines · Input · General · Benchmark · Log · sidebar lists all pages: **Presets · General · Keyboard · Wakeword · STT Engines ·
About** — and three buttons along the bottom. LLM Engines · Benchmark — STT · Benchmark — Wakeword · Log · Manual · About**.
Three buttons run along the top: **Save**, **Save & Restart**, and **✕ Close**.
> **Where settings are stored:** `~/.config/blitztext/config.toml` > **Where settings are stored:** `~/.config/blitztext/config.toml`
> (or `$XDG_CONFIG_HOME/blitztext/config.toml`). You can edit that file directly; > (or `$XDG_CONFIG_HOME/blitztext/config.toml`). You can edit that file directly;
@ -20,7 +21,11 @@ About** — and three buttons along the bottom.
--- ---
## Presets tab ## Presets
<p align="center">
<a href="Screenshots/settings-presets.png"><img src="Screenshots/settings-presets.png" alt="Presets page" width="100%"></a>
</p>
Presets are your dictation **actions**. Each one either types what you say, or Presets are your dictation **actions**. Each one either types what you say, or
rewrites it through the language model first (e.g. into a polished email). Trigger rewrites it through the language model first (e.g. into a polished email). Trigger
@ -44,54 +49,35 @@ Use the dropdown at the top to pick a preset to edit, **+ Add** to create one, o
--- ---
## Engines tab ## General
Engines do the work: the **speech-to-text (STT)** engine turns your voice into <p align="center">
text; the **language model (LLM)** rewrites it. Each engine can run locally or on <a href="Screenshots/settings-general.png"><img src="Screenshots/settings-general.png" alt="General page" width="100%"></a>
a server you specify. A **green dot** means it's reachable, **red** means offline. </p>
The currently selected engine in each dropdown is the **active** one.
### Speech-to-text engine Microphone, text delivery, language, notifications, the on-screen overlay, and
autostart.
Buttons: **+ Add** (cloud/OpenAI-style), **+ Stream** (realtime Riva/NIM),
**Delete**, **Test** (records 4 s and transcribes), **Refresh** (re-check status).
Each engine maps to a `[[stt_engine]]` entry; the active one is `[stt] active`.
| Setting | TOML key | Description | | Setting | TOML key | Description |
|---|---|---| |---|---|---|
| **Name** | `name` | A label for this engine (e.g. "faster-whisper GPU"). | | **Microphone** | `mic` | Which input device Blitztext records from. |
| **Type** | `type` | `local` (in-process faster-whisper) · `openai` (any OpenAI-compatible `/v1` STT server) · `riva_realtime` (live streaming engine). | | **Input level** | — | Live level bar (read-only); should move when you speak. |
| **URL** | `url` | Server endpoint. Example: `http://localhost:8010/v1` · realtime: `http://localhost:8006/v1`. Ignored for `local`. | | **Output** | `output` | `type` types the text key-by-key · `paste` copies it and presses Ctrl+V (faster for long text). |
| **Model** | `model` | Model name. For `local`: `tiny`/`base`/`small`/`medium`/`large-v3` or a path. For remote: blank = server default, or pick from the searchable list fetched from the URL. | | **Language hint** | `language` | Spoken-language code (`de`, `en`, …). Blank = auto-detect. |
| **API key env** | `api_key_env` | *Name of the environment variable* holding the API key (e.g. `GROQ_API_KEY`). Optional. | | **Notifications** | `notify` | Show desktop notifications for recording/transcription status and errors (manual sessions). |
| **Announce matched preset** | `notify_routing` | After a voice command, pop a notification showing which preset (and spoken keyword) matched — shown **even for hands-free** sessions, with the preset's emoji. Only fires on a real match. |
**Local engine (faster-whisper) — device & precision** (global, `[whisper]`): | **Visual overlay** | `overlay_enabled` | Show a translucent bubble at the cursor while you dictate — a pulsing **microphone**, a **live waveform** of your mic level, and the **recognised text** (word-by-word with a streaming engine, or the final result as a brief confirmation). The tail points at where the text lands, and it gives **hands-free** sessions visible feedback. Click-through; never takes focus. *(X11 only.)* |
| **Launch on login** | *(autostart file)* | Start Blitztext automatically when you log in (writes a desktop autostart entry, not `config.toml`). |
| Setting | TOML key | Description |
|---|---|---|
| **Device** | `device` | `auto` (try CUDA, fall back to CPU) · `cpu` · `cuda`. |
| **Compute type** | `compute_type` | `auto` · `int8` · `float16` · `int8_float16`. Lower precision is faster and uses less memory. |
### Language model (rewrite)
Buttons: **+ Add**, **Delete**, **Refresh**. Each maps to a `[[llm_engine]]`
entry; the active one is `[llm] active`.
| Setting | TOML key | Description |
|---|---|---|
| **Name** | `name` | A label for this LLM (e.g. "Local Qwen"). |
| **Type** | `type` | `local` (a server on this machine) or `cloud`. |
| **Base URL** | `url` | OpenAI-compatible endpoint, e.g. `http://localhost:28080/v1` or `https://api.openai.com/v1`. |
| **Model** | `model` | The model to use; pick from the list once the URL is set. |
| **API key env** | `api_key_env` | Environment-variable name holding the key (e.g. `OPENAI_API_KEY`). Blank for local servers. |
| **Temperature** | `temperature` | Default creativity for rewrites (e.g. `0.3`). Presets can override this. |
--- ---
## Input tab ## Keyboard
Controls **how you start and stop** dictating, the noise filter, hands-free <p align="center">
wakeword, and audio cues. <a href="Screenshots/settings-keyboard.png"><img src="Screenshots/settings-keyboard.png" alt="Keyboard page" width="100%"></a>
</p>
Controls **how you start and stop** dictating with the keyboard, the noise filter, and audio cues.
### Input mode & keys ### Input mode & keys
@ -120,7 +106,26 @@ in the `[quality]` section.
| **Reject hallucinations** | `reject_hallucinations` | Drop STT "ghost" outputs like *"Thank you."* / *"Bye."* that Whisper invents from silence. | | **Reject hallucinations** | `reject_hallucinations` | Drop STT "ghost" outputs like *"Thank you."* / *"Bye."* that Whisper invents from silence. |
| **Strip trailing punctuation** | `strip_trailing_punctuation` | Remove ending periods from delivered text — handy for code insertion. | | **Strip trailing punctuation** | `strip_trailing_punctuation` | Remove ending periods from delivered text — handy for code insertion. |
### Hands-free (Wakeword) ### Audio cues (manual dictation)
These control the chimes for **manual** (keyboard/hotkey) dictation only. The
hands-free wakeword sounds are **separate and independent** (see Wakeword page).
| Setting | TOML key | Description |
|---|---|---|
| **Play audio cues** | `[sounds] enabled` | On/off for the **manual** start/stop chimes below. Does **not** affect the wakeword sounds. |
| **Play before** | `[sounds] before` | Chime when recording **starts** (manual dictation). Empty = built-in system sound. |
| **Play after** | `[sounds] after` | Chime when recording **stops** (paste, paste+Enter, or auto-stop on silence). Empty = built-in system sound. |
> Each sound row has ▶ (preview) and ⌫ (clear).
---
## Wakeword
<p align="center">
<a href="Screenshots/settings-wakeword.png"><img src="Screenshots/settings-wakeword.png" alt="Wakeword page" width="100%"></a>
</p>
Start dictation with a spoken keyword via an external Start dictation with a spoken keyword via an external
[Wyoming](https://github.com/rhasspy/wyoming) openWakeWord server. Maps to the [Wyoming](https://github.com/rhasspy/wyoming) openWakeWord server. Maps to the
@ -143,20 +148,7 @@ Start dictation with a spoken keyword via an external
> You can also pause/resume detection from the tray ("Pause wakeword"), which > You can also pause/resume detection from the tray ("Pause wakeword"), which
> toggles the `/tmp/wake_muted` flag. > toggles the `/tmp/wake_muted` flag.
### Audio cues (manual dictation) > **The two sound pairs differ by trigger *and* by empty-behaviour:**
These control the chimes for **manual** (keyboard/hotkey) dictation only. The
hands-free wakeword sounds above are **separate and independent**.
| Setting | TOML key | Description |
|---|---|---|
| **Play audio cues** | `[sounds] enabled` | On/off for the **manual** start/stop chimes below. Does **not** affect the wakeword sounds above. |
| **Play before** | `[sounds] before` | Chime when recording **starts** (manual dictation). Empty = built-in system sound. |
| **Play after** | `[sounds] after` | Chime when recording **stops** (paste, paste+Enter, or auto-stop on silence). Empty = built-in system sound. |
> Each sound row has ▶ (preview) and ⌫ (clear).
>
> **The two pairs differ by trigger *and* by empty-behaviour:**
> >
> | | Plays on | Used for | When empty | > | | Plays on | Used for | When empty |
> |---|---|---|---| > |---|---|---|---|
@ -165,28 +157,69 @@ hands-free wakeword sounds above are **separate and independent**.
--- ---
## General tab ## STT Engines
Microphone, text delivery, language, notifications, the on-screen overlay, and <p align="center">
autostart. <a href="Screenshots/settings-stt-engines.png"><img src="Screenshots/settings-stt-engines.png" alt="STT Engines page" width="100%"></a>
</p>
The **speech-to-text** engine turns your voice into text. Each engine can run
locally or on a server. A **green dot** means it's reachable, **red** means
offline. The active engine is the one selected in the top dropdown.
Buttons: **+ Add** (batch/cloud/OpenAI-style), **+ Stream** (realtime Riva/NIM),
**Delete**, **Test** (records 4 s and transcribes), **Refresh** (re-check status).
Each engine maps to a `[[stt_engine]]` entry; the active one is `[stt] active`.
| Setting | TOML key | Description | | Setting | TOML key | Description |
|---|---|---| |---|---|---|
| **Microphone** | `mic` | Which input device Blitztext records from. | | **Name** | `name` | A label for this engine (e.g. "faster-whisper GPU"). |
| **Input level** | — | Live level bar (read-only); should move when you speak. | | **Type** | `type` | `local` (in-process faster-whisper) · `openai` (any OpenAI-compatible `/v1` STT server) · `riva_realtime` (live streaming engine). |
| **Output** | `output` | `type` types the text key-by-key · `paste` copies it and presses Ctrl+V (faster for long text). | | **URL** | `url` | Server endpoint. Example: `http://localhost:8010/v1` · realtime: `http://localhost:8006/v1`. Ignored for `local`. |
| **Language hint** | `language` | Spoken-language code (`de`, `en`, …). Blank = auto-detect. | | **Model** | `model` | Model name. For `local`: `tiny`/`base`/`small`/`medium`/`large-v3` or a path. For remote: blank = server default, or pick from the searchable list fetched from the URL. |
| **Notifications** | `notify` | Show desktop notifications for recording/transcription status and errors (manual sessions). | | **API key env** | `api_key_env` | *Name of the environment variable* holding the API key (e.g. `GROQ_API_KEY`). Optional. |
| **Announce matched preset** | `notify_routing` | After a voice command, pop a notification showing which preset (and spoken keyword) matched — shown **even for hands-free** sessions, with the preset's emoji. Only fires on a real match. |
| **Visual overlay** | `overlay_enabled` | Show a translucent bubble at the cursor while you dictate — a pulsing **microphone**, a **live waveform** of your mic level, and the **recognised text** (word-by-word with a streaming engine, or the final result as a brief confirmation). The tail points at where the text lands, and it gives **hands-free** sessions visible feedback. Click-through; never takes focus. *(X11 only.)* | **Local engine (faster-whisper) — device & precision** (global, `[whisper]`):
| **Launch on login** | *(autostart file)* | Start Blitztext automatically when you log in (writes a desktop autostart entry, not `config.toml`). |
| Setting | TOML key | Description |
|---|---|---|
| **Device** | `device` | `auto` (try CUDA, fall back to CPU) · `cpu` · `cuda`. |
| **Compute type** | `compute_type` | `auto` · `int8` · `float16` · `int8_float16`. Lower precision is faster and uses less memory. |
--- ---
## Benchmark tab ## LLM Engines
<p align="center">
<a href="Screenshots/settings-llm-engines.png"><img src="Screenshots/settings-llm-engines.png" alt="LLM Engines page" width="100%"></a>
</p>
The **language model** rewrites your dictated text (e.g. into a polished email).
Each engine can be a local LAN server or a cloud service. The active engine is
the one selected in the top dropdown.
Buttons: **+ Add**, **Delete**, **Refresh**. Each maps to a `[[llm_engine]]`
entry; the active one is `[llm] active`.
| Setting | TOML key | Description |
|---|---|---|
| **Name** | `name` | A label for this LLM (e.g. "Local Qwen"). |
| **Type** | `type` | `local` (a server on this machine) or `cloud`. |
| **Base URL** | `url` | OpenAI-compatible endpoint, e.g. `http://localhost:28080/v1` or `https://api.openai.com/v1`. |
| **Model** | `model` | The model to use; pick from the list once the URL is set. |
| **API key env** | `api_key_env` | Environment-variable name holding the key (e.g. `OPENAI_API_KEY`). Blank for local servers. |
| **Temperature** | `temperature` | Default creativity for rewrites (e.g. `0.3`). Presets can override this. |
---
## Benchmark — STT
<p align="center">
<a href="Screenshots/settings-benchmark-stt.png"><img src="Screenshots/settings-benchmark-stt.png" alt="Benchmark — STT page" width="100%"></a>
</p>
Compare your STT engines for **speed and accuracy** on the same clip. Add an Compare your STT engines for **speed and accuracy** on the same clip. Add an
engine preset (Engines tab) for each model you want to compare. No persistent engine in the STT Engines page for each model you want to compare. No persistent
settings — it's a one-off tool. settings — it's a one-off tool.
1. **Audio (.wav)** — a recording to transcribe. 1. **Audio (.wav)** — a recording to transcribe.
@ -213,7 +246,24 @@ A summary line names the **fastest** and **most accurate** engine. Click any col
--- ---
## Log tab ## Benchmark — Wakeword
<p align="center">
<a href="Screenshots/settings-benchmark-wakeword.png"><img src="Screenshots/settings-benchmark-wakeword.png" alt="Benchmark — Wakeword page" width="100%"></a>
</p>
Stress-test your wakeword detection by generating speech with a TTS server and
checking whether the wake word fires correctly. Reports **recall** (how often it
fires when it should) and **false-fire rate** (how often it fires on non-wake
speech) across multiple synthetic voices.
---
## Log
<p align="center">
<a href="Screenshots/settings-log.png"><img src="Screenshots/settings-log.png" alt="Log page" width="100%"></a>
</p>
A live activity log — useful to watch a model load/download or to diagnose a A live activity log — useful to watch a model load/download or to diagnose a
problem (recording, transcription, routing, and wakeword events all appear here). problem (recording, transcription, routing, and wakeword events all appear here).
@ -227,7 +277,21 @@ problem (recording, transcription, routing, and wakeword events all appear here)
--- ---
## About tab ## Manual
<p align="center">
<a href="Screenshots/settings-manual.png"><img src="Screenshots/settings-manual.png" alt="Manual page" width="100%"></a>
</p>
Inline copy of this manual, readable without leaving the app.
---
## About
<p align="center">
<a href="Screenshots/settings-about.png"><img src="Screenshots/settings-about.png" alt="About page" width="100%"></a>
</p>
Read-only information: Read-only information:

135
README.md
View File

@ -8,9 +8,13 @@ Blitztext is a native Linux dictation tool that captures your voice, transcribes
> No hosted backend — bring your own models and endpoints. > No hosted backend — bring your own models and endpoints.
<p align="center"> <p align="center">
<img src="Screenshots/panel.png" alt="Blitztext control panel" width="380"> <img src="Screenshots/main-panel.png" alt="Blitztext control panel" width="360">
</p>
<p align="center">
<img src="Screenshots/overlay-listening.png" alt="On-screen overlay while listening" width="360">
&nbsp;&nbsp; &nbsp;&nbsp;
<img src="Screenshots/tray-menu.png" alt="Blitztext system-tray menu" width="300"> <img src="Screenshots/overlay-result.png" alt="On-screen overlay showing transcription result" width="360">
</p> </p>
📖 **[User manual](MANUAL.md)** — every setting in every tab, explained. 📖 **[User manual](MANUAL.md)** — every setting in every tab, explained.
@ -65,47 +69,124 @@ Stream: hotkey → mic PCM chunks → Riva/NIM WebSocket → live words typed
## Screenshots ## Screenshots
Everything is configured in the GTK **Settings** window — every tab has tooltips Everything is configured in the GTK **Settings** window — the sidebar gives quick
and screen-reader (ATK) support. Click any image to open it full size. access to every page. All controls have tooltips and screen-reader (ATK) support.
Click any image to open it full size.
### Main panel & overlay
<p align="center"> <p align="center">
<a href="Screenshots/settings-presets.png"><img src="Screenshots/settings-presets.png" alt="Presets settings tab" width="100%"></a><br> <a href="Screenshots/main-panel.png"><img src="Screenshots/main-panel.png" alt="Blitztext main panel" width="46%"></a>
<em><b>Presets</b> — your dictation actions. Each preset is either a plain transcription or an LLM rewrite, and carries its own spoken keyword(s) for voice routing, an optional global hotkey, and a custom rewrite prompt.</em> &nbsp;
<a href="Screenshots/overlay-listening.png"><img src="Screenshots/overlay-listening.png" alt="Overlay — listening" width="46%"></a>
</p>
<p align="center">
<em><b>Left:</b> Control panel listing all presets with icons, descriptions, and hotkeys.</em>
&nbsp;&nbsp;
<em><b>Right:</b> On-screen overlay showing the live waveform while listening.</em>
</p> </p>
<p align="center"> <p align="center">
<a href="Screenshots/settings-engines.png"><img src="Screenshots/settings-engines.png" alt="Engines settings tab" width="100%"></a><br> <a href="Screenshots/overlay-result.png"><img src="Screenshots/overlay-result.png" alt="Overlay — transcription result" width="46%"></a>
<em><b>Engines</b> — your speech-to-text and language-model back-ends, local or remote. Add and rename engines, watch live online/offline status, and pick models from a searchable list fetched straight from the endpoint.</em> </p>
<p align="center">
<em>Overlay after transcription — preset name and recognised text appear at the cursor.</em>
</p>
### Settings — General & Input
<p align="center">
<a href="Screenshots/settings-presets.png"><img src="Screenshots/settings-presets.png" alt="Presets page" width="48%"></a>
&nbsp;
<a href="Screenshots/settings-general.png"><img src="Screenshots/settings-general.png" alt="General page" width="48%"></a>
</p>
<p align="center">
<em><b>Presets</b> — dictation actions with keywords, hotkeys, LLM mode, and custom prompts.</em>
&nbsp;&nbsp;
<em><b>General</b> — microphone, output mode, language hint, notifications, overlay, autostart.</em>
</p> </p>
<p align="center"> <p align="center">
<a href="Screenshots/settings-input.png"><img src="Screenshots/settings-input.png" alt="Input settings tab" width="100%"></a><br> <a href="Screenshots/settings-keyboard.png"><img src="Screenshots/settings-keyboard.png" alt="Keyboard page" width="48%"></a>
<em><b>Input</b> — how you start and stop dictation: the modifier-key scheme (Ctrl+Win / Ctrl / Alt / Esc) or custom hotkeys, plus the silence-based auto-stop (VAD), the quality gate, and audio cues.</em> &nbsp;
<a href="Screenshots/settings-wakeword.png"><img src="Screenshots/settings-wakeword.png" alt="Wakeword page" width="48%"></a>
</p>
<p align="center">
<em><b>Keyboard</b> — modifier-key scheme or direct hotkeys, quality gate, audio cues.</em>
&nbsp;&nbsp;
<em><b>Wakeword</b> — hands-free dictation via a Wyoming/openWakeWord server, with live level meter and model picker.</em>
</p>
### Settings — Engines
<p align="center">
<a href="Screenshots/settings-stt-engines.png"><img src="Screenshots/settings-stt-engines.png" alt="STT Engines page" width="48%"></a>
&nbsp;
<a href="Screenshots/settings-llm-engines.png"><img src="Screenshots/settings-llm-engines.png" alt="LLM Engines page" width="48%"></a>
</p>
<p align="center">
<em><b>STT Engines</b> — speech-to-text back-ends (local faster-whisper, OpenAI-compatible server, or Riva realtime), with green/red status dot and Test button.</em>
&nbsp;&nbsp;
<em><b>LLM Engines</b> — language-model back-ends for text rewriting (LAN server or cloud service).</em>
</p>
### Settings — Benchmark
<p align="center">
<a href="Screenshots/settings-benchmark-stt.png"><img src="Screenshots/settings-benchmark-stt.png" alt="Benchmark — STT page" width="48%"></a>
&nbsp;
<a href="Screenshots/settings-benchmark-wakeword.png"><img src="Screenshots/settings-benchmark-wakeword.png" alt="Benchmark — Wakeword page" width="48%"></a>
</p>
<p align="center">
<em><b>Benchmark — STT</b> — compare every configured engine against a reference WAV + transcript; results table shows speed, accuracy, device, and language support.</em>
&nbsp;&nbsp;
<em><b>Benchmark — Wakeword</b> — stress-test wakeword detection using a TTS server to synthesise wake phrases in random voices, reporting recall and false-fire rates.</em>
</p>
### Settings — Log & About
<p align="center">
<a href="Screenshots/settings-log.png"><img src="Screenshots/settings-log.png" alt="Log page" width="48%"></a>
&nbsp;
<a href="Screenshots/settings-about.png"><img src="Screenshots/settings-about.png" alt="About page" width="48%"></a>
</p>
<p align="center">
<em><b>Log</b> — live activity log for recording, transcription, routing, and wakeword events.</em>
&nbsp;&nbsp;
<em><b>About</b> — version, source link, inline changelog, and licence.</em>
</p>
### Setup Wizard
The first-run wizard guides you through the essentials in a few steps.
<p align="center">
<a href="Screenshots/setup-welcome.png"><img src="Screenshots/setup-welcome.png" alt="Setup — Welcome" width="32%"></a>
&nbsp;
<a href="Screenshots/setup-trigger.png"><img src="Screenshots/setup-trigger.png" alt="Setup — Trigger mode" width="32%"></a>
&nbsp;
<a href="Screenshots/setup-shortcuts.png"><img src="Screenshots/setup-shortcuts.png" alt="Setup — Keyboard shortcuts" width="32%"></a>
</p>
<p align="center">
<em>Welcome &nbsp;·&nbsp; Choose trigger mode (keyboard / wakeword / both) &nbsp;·&nbsp; Set keyboard shortcuts</em>
</p> </p>
<p align="center"> <p align="center">
<a href="Screenshots/wakeword.png"><img src="Screenshots/wakeword.png" alt="Wakeword (hands-free) settings" width="100%"></a><br> <a href="Screenshots/setup-voice.png"><img src="Screenshots/setup-voice.png" alt="Setup — Voice activation" width="32%"></a>
<em><b>Wakeword (hands-free)</b> — point Blitztext at a Wyoming/openWakeWord server, choose a wake model, and test the connection live so a spoken keyword starts dictation with no keys at all.</em> &nbsp;
<a href="Screenshots/setup-stt.png"><img src="Screenshots/setup-stt.png" alt="Setup — STT engine" width="32%"></a>
&nbsp;
<a href="Screenshots/setup-ai.png"><img src="Screenshots/setup-ai.png" alt="Setup — AI rewriting" width="32%"></a>
</p>
<p align="center">
<em>Voice activation (wakeword server) &nbsp;·&nbsp; Choose STT engine &nbsp;·&nbsp; Optional AI text rewriting</em>
</p> </p>
<p align="center"> <p align="center">
<a href="Screenshots/settings-general.png"><img src="Screenshots/settings-general.png" alt="General settings tab" width="100%"></a><br> <a href="Screenshots/setup-done.png"><img src="Screenshots/setup-done.png" alt="Setup — All done" width="32%"></a>
<em><b>General</b> — core preferences: microphone with a live level meter, output mode (type vs. paste), language hint, type delay, the on-screen dictation overlay, and autostart on login.</em>
</p> </p>
<p align="center"> <p align="center">
<a href="Screenshots/settings-benchmark.png"><img src="Screenshots/settings-benchmark.png" alt="Benchmark settings tab" width="100%"></a><br> <em>Summary screen — ready to dictate.</em>
<em><b>Benchmark</b> — compare every configured STT engine against a reference WAV + transcript to find the fastest and most accurate, with a Device column (CPU / GPU / remote).</em>
</p>
<p align="center">
<a href="Screenshots/settings-log.png"><img src="Screenshots/settings-log.png" alt="Log settings tab" width="100%"></a><br>
<em><b>Log</b> — the in-app log buffer: a live view of recording, transcription, routing, and wakeword events for quick troubleshooting.</em>
</p>
<p align="center">
<a href="Screenshots/settings-about.png"><img src="Screenshots/settings-about.png" alt="About settings tab" width="100%"></a><br>
<em><b>About</b> — version, source link, changelog, and licence.</em>
</p> </p>
--- ---

BIN
Screenshots/main-panel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
Screenshots/setup-ai.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
Screenshots/setup-done.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
Screenshots/setup-stt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
Screenshots/setup-voice.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -13,9 +13,13 @@ experiment along those lines was moved out to
the optional rewrite step calls out to an LLM. the optional rewrite step calls out to an LLM.
<p align="center"> <p align="center">
<img src="../Screenshots/panel.png" alt="Blitztext control panel" width="380"> <img src="../Screenshots/main-panel.png" alt="Blitztext control panel" width="360">
</p>
<p align="center">
<img src="../Screenshots/overlay-listening.png" alt="On-screen overlay while listening" width="360">
&nbsp;&nbsp; &nbsp;&nbsp;
<img src="../Screenshots/tray-menu.png" alt="Blitztext system-tray menu" width="300"> <img src="../Screenshots/overlay-result.png" alt="On-screen overlay showing transcription result" width="360">
</p> </p>
## Inspiration ## Inspiration
@ -61,47 +65,90 @@ visible feedback. Tune the anchor with `[general] overlay_anchor`. X11 only.
## Screenshots ## Screenshots
Everything is configured in the **Settings** window — every tab has tooltips and Everything is configured in the **Settings** window — the sidebar gives quick
screen-reader (ATK) support. Click any image to open it full size. access to every page. Click any image to open it full size.
### Main panel & overlay
<p align="center"> <p align="center">
<a href="../Screenshots/settings-presets.png"><img src="../Screenshots/settings-presets.png" alt="Presets settings tab" width="100%"></a><br> <a href="../Screenshots/main-panel.png"><img src="../Screenshots/main-panel.png" alt="Blitztext main panel" width="46%"></a>
<em><b>Presets</b> — your dictation actions. Each preset is either a plain transcription or an LLM rewrite, and carries its own spoken keyword(s) for voice routing, an optional global hotkey, and a custom rewrite prompt.</em> &nbsp;
<a href="../Screenshots/overlay-listening.png"><img src="../Screenshots/overlay-listening.png" alt="Overlay — listening" width="46%"></a>
</p>
<p align="center">
<em><b>Left:</b> Control panel listing all presets with icons, descriptions, and hotkeys.</em>
&nbsp;&nbsp;
<em><b>Right:</b> On-screen overlay showing the live waveform while listening.</em>
</p> </p>
<p align="center"> <p align="center">
<a href="../Screenshots/settings-engines.png"><img src="../Screenshots/settings-engines.png" alt="Engines settings tab" width="100%"></a><br> <a href="../Screenshots/overlay-result.png"><img src="../Screenshots/overlay-result.png" alt="Overlay — transcription result" width="46%"></a>
<em><b>Engines</b> — your speech-to-text and language-model back-ends, local or remote. Add and rename engines, watch live online/offline status, and pick models from a searchable list fetched straight from the endpoint.</em> </p>
<p align="center">
<em>Overlay after transcription — preset name and recognised text appear at the cursor.</em>
</p>
### Settings — General & Input
<p align="center">
<a href="../Screenshots/settings-presets.png"><img src="../Screenshots/settings-presets.png" alt="Presets page" width="48%"></a>
&nbsp;
<a href="../Screenshots/settings-general.png"><img src="../Screenshots/settings-general.png" alt="General page" width="48%"></a>
</p>
<p align="center">
<em><b>Presets</b> — dictation actions with keywords, hotkeys, LLM mode, and custom prompts.</em>
&nbsp;&nbsp;
<em><b>General</b> — microphone, output mode, language hint, notifications, overlay, autostart.</em>
</p> </p>
<p align="center"> <p align="center">
<a href="../Screenshots/settings-input.png"><img src="../Screenshots/settings-input.png" alt="Input settings tab" width="100%"></a><br> <a href="../Screenshots/settings-keyboard.png"><img src="../Screenshots/settings-keyboard.png" alt="Keyboard page" width="48%"></a>
<em><b>Input</b> — how you start and stop dictation: the modifier-key scheme (Ctrl+Win / Ctrl / Alt / Esc) or custom hotkeys, plus the silence-based auto-stop (VAD), the quality gate, and audio cues.</em> &nbsp;
<a href="../Screenshots/settings-wakeword.png"><img src="../Screenshots/settings-wakeword.png" alt="Wakeword page" width="48%"></a>
</p>
<p align="center">
<em><b>Keyboard</b> — modifier-key scheme or direct hotkeys, quality gate, audio cues.</em>
&nbsp;&nbsp;
<em><b>Wakeword</b> — hands-free dictation via a Wyoming/openWakeWord server, with live level meter and model picker.</em>
</p> </p>
<p align="center"> ### Settings — Engines
<a href="../Screenshots/wakeword.png"><img src="../Screenshots/wakeword.png" alt="Wakeword (hands-free) settings" width="100%"></a><br>
<em><b>Wakeword (hands-free)</b> — point Blitztext at a Wyoming/openWakeWord server, choose a wake model, and test the connection live so a spoken keyword starts dictation with no keys at all.</em>
</p>
<p align="center"> <p align="center">
<a href="../Screenshots/settings-general.png"><img src="../Screenshots/settings-general.png" alt="General settings tab" width="100%"></a><br> <a href="../Screenshots/settings-stt-engines.png"><img src="../Screenshots/settings-stt-engines.png" alt="STT Engines page" width="48%"></a>
<em><b>General</b> — core preferences: microphone with a live level meter, output mode (type vs. paste), language hint, type delay, the on-screen dictation overlay, and autostart on login.</em> &nbsp;
<a href="../Screenshots/settings-llm-engines.png"><img src="../Screenshots/settings-llm-engines.png" alt="LLM Engines page" width="48%"></a>
</p>
<p align="center">
<em><b>STT Engines</b> — speech-to-text back-ends (local faster-whisper, OpenAI-compatible server, or Riva realtime), with green/red status dot and Test button.</em>
&nbsp;&nbsp;
<em><b>LLM Engines</b> — language-model back-ends for text rewriting (LAN server or cloud service).</em>
</p> </p>
<p align="center"> ### Settings — Benchmark
<a href="../Screenshots/settings-benchmark.png"><img src="../Screenshots/settings-benchmark.png" alt="Benchmark settings tab" width="100%"></a><br>
<em><b>Benchmark</b> — compare every configured STT engine against a reference WAV + transcript. The results table shows <b>time</b>, <b>accuracy</b> (WER), <b>device</b> (CPU / GPU / remote), <b>language support</b>, and <b>RAM usage</b> (MB loaded during first run — useful for sizing local models). Also includes a <b>wakeword benchmark</b>: point it at any OpenAI-compatible TTS server (Kokoro, XTTS, …), and it synthesizes your wake phrase in random voices, streams it to your wyoming-openwakeword server, and reports recall + false-fires per voice.</em>
</p>
<p align="center"> <p align="center">
<a href="../Screenshots/settings-log.png"><img src="../Screenshots/settings-log.png" alt="Log settings tab" width="100%"></a><br> <a href="../Screenshots/settings-benchmark-stt.png"><img src="../Screenshots/settings-benchmark-stt.png" alt="Benchmark — STT page" width="48%"></a>
<em><b>Log</b> — the in-app log buffer: a live view of recording, transcription, routing, and wakeword events for quick troubleshooting.</em> &nbsp;
<a href="../Screenshots/settings-benchmark-wakeword.png"><img src="../Screenshots/settings-benchmark-wakeword.png" alt="Benchmark — Wakeword page" width="48%"></a>
</p>
<p align="center">
<em><b>Benchmark — STT</b> — compare engines against a reference WAV + transcript; table shows speed, accuracy, device, and language support.</em>
&nbsp;&nbsp;
<em><b>Benchmark — Wakeword</b> — stress-test wakeword detection via a TTS server, reporting recall and false-fire rates per voice.</em>
</p> </p>
### Settings — Log & About
<p align="center"> <p align="center">
<a href="../Screenshots/settings-about.png"><img src="../Screenshots/settings-about.png" alt="About settings tab" width="100%"></a><br> <a href="../Screenshots/settings-log.png"><img src="../Screenshots/settings-log.png" alt="Log page" width="48%"></a>
<em><b>About</b> — version, source link, changelog, and licence.</em> &nbsp;
<a href="../Screenshots/settings-about.png"><img src="../Screenshots/settings-about.png" alt="About page" width="48%"></a>
</p>
<p align="center">
<em><b>Log</b> — live activity log for recording, transcription, routing, and wakeword events.</em>
&nbsp;&nbsp;
<em><b>About</b> — version, source link, inline changelog, and licence.</em>
</p> </p>
## Requirements ## Requirements