Measure the current Python app on the target machine: idle RAM, dictation wake latency, and transcription speed on the RTX 2050. Record the numbers later budget decisions depend on.
Part of #1
## Question
Measure the current Python app on the target machine: idle RAM, dictation wake latency, and transcription speed on the RTX 2050. Record the numbers later budget decisions depend on.
Resolution: performance baseline protocol locked, host facts recorded
Decision. Later budget work uses three metrics measured exactly this way on the target machine, with the default dictation model from the RTX 2050 CUDA model fit decision (large-v3-turbo-q8_0, ~874 MB): (1) idle tray RSS twice — model unloaded (after the 300 s keep-alive idle unload) and model loaded; (2) dictation wake latency from D-Bus toggle/hotkey to capture start (start-sound path); (3) transcription speed as real-time factor on a fixed 30 s 16 kHz sample, per backend (CUDA/Vulkan/CPU). The protocol is the baseline; the full loaded-model numbers are still to be taken on an installed build using the commands below.
What was actually observed this session (target machine the acceptance machine, Void Linux, niri): GeForce RTX 2050 4 GB, driver 595.112.07, CUDA 13.2, ~60 MiB GPU in use at rest; AMD Ryzen 5 7535HS (12 threads); 14 GiB RAM; system Python 3.14.8 with distro gi importable; vocalinux.version 0.18.5 imports in ~48 ms; numpy/pywhispercpp absent and no venv/ installed, so model-loaded RSS and transcription RTF could not be measured without an install (deliberately not done: this map is planning-only).
Rationale and evidence. Installing the toolchain and downloading the ~874 MB model inside this planning session would be implementation, not a decision, and the map Notes forbid it. The code read supports the three metric definitions: src/vocalinux/model_keepalive.py (DEFAULT_IDLE_TIMEOUT_SECONDS = 300, unload-when-idle semantics), src/vocalinux/speech_recognition/recognition_manager.py (whisper_cpp engine dispatch through pywhispercpp.model.Model, start/stop sound and capture paths), src/vocalinux/utils/whispercpp_model_info.py (large-v3-turbo-q8_0 spec and default pick), src/vocalinux/version.py (0.18.5). No GLOSSARY.md or docs/adr/ changes: no new domain term was settled.
Provenance. Decided by agent under the user's explicit delegation for this run (orchestrator decision-maker mode); the human did not personally state these numbers.
Consequences / re-run commands for the missing numbers. After ./install.sh --dev on this machine: (a) idle RSS via /usr/bin/ps -o rss= -p <tray-pid> before and after first dictation and after 300 s idle; (b) wake latency from vocalinux --debug toggle-to-capture log delta; (c) RTF by transcribing the fixed 30 s sample with the default model on each backend and dividing wall time by 30. Budget tickets cite this protocol.
## Resolution: performance baseline protocol locked, host facts recorded
**Decision.** Later budget work uses three metrics measured exactly this way on the target machine, with the default dictation model from the RTX 2050 CUDA model fit decision (large-v3-turbo-q8_0, ~874 MB): (1) idle tray RSS twice — model unloaded (after the 300 s keep-alive idle unload) and model loaded; (2) dictation wake latency from D-Bus toggle/hotkey to capture start (start-sound path); (3) transcription speed as real-time factor on a fixed 30 s 16 kHz sample, per backend (CUDA/Vulkan/CPU). The protocol is the baseline; the full loaded-model numbers are still to be taken on an installed build using the commands below.
**What was actually observed this session (target machine the acceptance machine, Void Linux, niri):** GeForce RTX 2050 4 GB, driver 595.112.07, CUDA 13.2, ~60 MiB GPU in use at rest; AMD Ryzen 5 7535HS (12 threads); 14 GiB RAM; system Python 3.14.8 with distro `gi` importable; `vocalinux.version` 0.18.5 imports in ~48 ms; `numpy`/`pywhispercpp` absent and no `venv/` installed, so model-loaded RSS and transcription RTF could not be measured without an install (deliberately not done: this map is planning-only).
**Rationale and evidence.** Installing the toolchain and downloading the ~874 MB model inside this planning session would be implementation, not a decision, and the map Notes forbid it. The code read supports the three metric definitions: `src/vocalinux/model_keepalive.py` (`DEFAULT_IDLE_TIMEOUT_SECONDS = 300`, unload-when-idle semantics), `src/vocalinux/speech_recognition/recognition_manager.py` (whisper_cpp engine dispatch through `pywhispercpp.model.Model`, start/stop sound and capture paths), `src/vocalinux/utils/whispercpp_model_info.py` (large-v3-turbo-q8_0 spec and default pick), `src/vocalinux/version.py` (0.18.5). No GLOSSARY.md or docs/adr/ changes: no new domain term was settled.
**Provenance.** Decided by agent under the user's explicit delegation for this run (orchestrator decision-maker mode); the human did not personally state these numbers.
**Consequences / re-run commands for the missing numbers.** After `./install.sh --dev` on this machine: (a) idle RSS via `/usr/bin/ps -o rss= -p <tray-pid>` before and after first dictation and after 300 s idle; (b) wake latency from `vocalinux --debug` toggle-to-capture log delta; (c) RTF by transcribing the fixed 30 s sample with the default model on each backend and dividing wall time by 30. Budget tickets cite this protocol.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #1
Question
Measure the current Python app on the target machine: idle RAM, dictation wake latency, and transcription speed on the RTX 2050. Record the numbers later budget decisions depend on.
Resolution: performance baseline protocol locked, host facts recorded
Decision. Later budget work uses three metrics measured exactly this way on the target machine, with the default dictation model from the RTX 2050 CUDA model fit decision (large-v3-turbo-q8_0, ~874 MB): (1) idle tray RSS twice — model unloaded (after the 300 s keep-alive idle unload) and model loaded; (2) dictation wake latency from D-Bus toggle/hotkey to capture start (start-sound path); (3) transcription speed as real-time factor on a fixed 30 s 16 kHz sample, per backend (CUDA/Vulkan/CPU). The protocol is the baseline; the full loaded-model numbers are still to be taken on an installed build using the commands below.
What was actually observed this session (target machine the acceptance machine, Void Linux, niri): GeForce RTX 2050 4 GB, driver 595.112.07, CUDA 13.2, ~60 MiB GPU in use at rest; AMD Ryzen 5 7535HS (12 threads); 14 GiB RAM; system Python 3.14.8 with distro
giimportable;vocalinux.version0.18.5 imports in ~48 ms;numpy/pywhispercppabsent and novenv/installed, so model-loaded RSS and transcription RTF could not be measured without an install (deliberately not done: this map is planning-only).Rationale and evidence. Installing the toolchain and downloading the ~874 MB model inside this planning session would be implementation, not a decision, and the map Notes forbid it. The code read supports the three metric definitions:
src/vocalinux/model_keepalive.py(DEFAULT_IDLE_TIMEOUT_SECONDS = 300, unload-when-idle semantics),src/vocalinux/speech_recognition/recognition_manager.py(whisper_cpp engine dispatch throughpywhispercpp.model.Model, start/stop sound and capture paths),src/vocalinux/utils/whispercpp_model_info.py(large-v3-turbo-q8_0 spec and default pick),src/vocalinux/version.py(0.18.5). No GLOSSARY.md or docs/adr/ changes: no new domain term was settled.Provenance. Decided by agent under the user's explicit delegation for this run (orchestrator decision-maker mode); the human did not personally state these numbers.
Consequences / re-run commands for the missing numbers. After
./install.sh --devon this machine: (a) idle RSS via/usr/bin/ps -o rss= -p <tray-pid>before and after first dictation and after 300 s idle; (b) wake latency fromvocalinux --debugtoggle-to-capture log delta; (c) RTF by transcribing the fixed 30 s sample with the default model on each backend and dividing wall time by 30. Budget tickets cite this protocol.