holdtotype
Ta strona nie jest jeszcze przetłumaczona. Strona główna jest już przetłumaczona, reszta w drodze.
docs

Reference

Everything the interface exposes is also a line in a text file, a command-line flag, or a port on localhost. This page is the list, for anyone who would rather script it than click it.

config.json

One file next to the executable, plain JSON, written atomically whenever a setting changes. Edit it by hand and pick Re-read config.json from the tray menu; the program applies what it can without a restart. An unreadable file is renamed to config.json.broken and replaced with defaults, so a typo never loses more than the typo.

dictation

KeyMeaningDefault
hotkeyThe combination that starts a dictation."ctrl+win"
hotkey_modehold or toggle."hold"
languageThe language you speak. Decides which model is used."auto"
lang_modelsWhich model serves which language, as a map.{}
min_record_msShorter presses are ignored as accidental.300
max_record_secondsA hard stop, so a stuck key cannot record forever.120
whisper_promptThe dictionary hint given to Whisper models.a starter set

insertion

KeyMeaningDefault
paste_modeclipboard, or type for character by character."clipboard"
restore_clipboardPut the clipboard back after pasting.true
auto_enterPress Enter after inserting.false
paste_delay_msExtra wait before the paste, for slow windows.0
replacementsThe list of what to fix after recognition.[]
commandsVoice commands and what each does.[]

engines

KeyMeaningDefault
stt_sourcelocal, or remote to send audio to server_url."local"
server_urlThe address of a recognition server on another machine.""
server_exePath to whisper-server."whisper-server.exe"
server_portLoopback port for whisper-server.8910
server_autostartStart it yourself, or let the program do it.true
sherpa_portLoopback port for sherpa-server.8912
stream_portLoopback port for the streaming server.8913
llm_portLoopback port for llama-server.8911
threadsCPU threads given to the recogniser.4
engine_idle_minutesUnload an engine after this many idle minutes.10

post-processing

KeyMeaningDefault
post_enabledRun prompts after recognition.false
post_sourcelocal or api."local"
post_api_urlYour endpoint, when the source is api.""
post_api_keyStored encrypted with Windows DPAPI, never in the log.""
profilesThe prompts themselves, in order.two presets
active_profilesWhich of them run.[]
llm_modelPath to the GGUF editor model.""

history, interface, updates

KeyMeaningDefault
historyKeep a history of dictations at all.false
history_keep_minHow long an entry lives, in minutes.10080
history_maxHow many entries at most.200
history_skipPrograms never recorded from.""
ui_languageInterface language, or auto."auto"
skinterminal, editor, neon, soft, paper."terminal"
themeColour inside the terminal design."green"
overlayShow the plate while recording.true
overlay_positionbottom, caret, or a saved place."bottom"
check_updatesAsk GitHub for a newer version at start.false
config_versionWritten by the program. Used for migrations.5
Before a migration the program copies the file to config.json.vN.bak, once per version, and never overwrites that copy. Downgrading is a matter of putting it back.

Command line

The program is one executable. Passing a flag to a running copy makes that copy act; there is never a second instance.

everyday

FlagWhat it does
-settings [tab]Open the settings window, optionally on a tab: state, system, mic, history, dictation, models, text, post, help, about, contacts.
-quitStop the running copy, engines included.
-wizardRun the first-run wizard again.
-uninstallRemove an installed copy. Add -silent for no questions.

checking things

FlagWhat it does
-listmicsPrint every capture device with its index.
-miclevelPrint the input level, to see whether the microphone is heard at all.
-modelcheckVerify every downloaded model against its reference hash.
-routecheckPrint which model would serve which language, and whether it can translate.
-replcheck "phrase"Run the replacement rules over a phrase and show the result.
-transcribe file.wavRecognise a file with the current settings and print the text.
-postcheck "text"Send a sample through the prompt chain.
-testpaste "text"Insert a string the way a dictation would, to test insertion alone.
-dpiPrint how Windows is scaling each monitor.

installer

FlagWhat it does
-silentInstall without a window.
-dir "path"Where to install.
-model nameDownload a model during the install: base, small, medium, turbo, gigaam, or none.
-lang xxInterface language of the installer itself.
-uninstallRemove, with -silent if wanted.

Files and folders

PathWhat it isSurvives an update
holdtotype.exeThe program. Sits in the tray, owns the shortcut.replaced
whisper-server.exe sherpa-server.exe sherpa-online-server.exe llama-server.exeThe engines.replaced
config.jsonEvery setting.kept
config.json.vN.bakA copy made once before each migration.kept
models\Everything downloaded, several gigabytes typically.kept
holdtotype.log holdtotype.log.oldOne megabyte each, then it rolls over.kept
holdtotype-history.jsonOnly if history is switched on. Text, never audio.kept
%TEMP%\holdtotype-webview-*Scratch for the settings window, removed on exit.temporary

Ports and engines

Every engine is an ordinary local server bound to 127.0.0.1. Nothing listens on any other interface, and since 0.75.4 the program refuses to start an engine on a port another process already holds rather than talking to whatever is there.

PortEngineProtocolStarted when
8910whisper-serverHTTPa Whisper model serves the language
8911llama-serverHTTP, session keypost-processing is on
8912sherpa-serverHTTPa sherpa model serves the language
8913sherpa-online-serverwebsocketa streaming model is chosen
netstat -ano | findstr LISTENING | findstr 891
  TCP    127.0.0.1:8910     0.0.0.0:0     LISTENING     9132
  TCP    127.0.0.1:8912     0.0.0.0:0     LISTENING     9188

Engines are attached to a Windows job object, so they die with the program even if it is killed. After engine_idle_minutes without work, the one not in use unloads itself and gives the memory back.