holdtotype
Questa pagina non è ancora tradotta. La home è già tradotta, il resto arriva.
what is inside

Every part of the program, and what it is doing there

Nothing here is a black box. This is the complete list of what ships in the archive, what each piece does, when it runs, and under which licence — including every model the catalogue offers.

all permissive licencesno part of it phones homebuilt in Docker from pinned sources
engines

The programs that do the actual work

Each is a separate executable next to the app. The program starts one when it is needed, talks to it over a loopback port, and stops it after ten idle minutes.

PartWhat it does hereWhen it runsLicence
whisper.cppwhisper-server.exe — runs the Whisper family of models and their translate-to-English mode.While a Whisper model serves the language you are dictating in.MIT
sherpa-onnxsherpa-server.exe and sherpa-online-server.exe — everything that is not Whisper, in one pass or streaming as you speak.While a sherpa model serves the language, or a streaming model is chosen.Apache 2.0
llama.cppllama-server.exe — the editor model that runs your prompts after recognition.Only while post-processing is switched on.MIT
ggmlThe tensor maths inside whisper.cpp and llama.cpp. Not a separate file; compiled into both.With the engine that uses it.MIT
ONNX RuntimeRuns the models inside sherpa-onnx. Compiled into the sherpa executables.With sherpa.MIT
libraries

What the program itself is built from

The app is written in Go. These are the only outside libraries it uses.

PartWhat it does hereLicence
go-webview2Draws the settings window, which is an HTML page rendered by the WebView2 component already present in Windows.MIT
go-winloaderLoads the WebView2 libraries. Used by go-webview2.MIT
malgo / miniaudioCaptures the microphone: the audio callback that fills the buffer while you hold the keys.Unlicense
gorilla/websocketThe websocket link to the streaming recogniser, which sends text back while you are still speaking.BSD-2
golang.org/x/sysThe Windows API calls: the keyboard hook, the tray icon, the overlay window, job objects for the child processes.BSD-3
IBM PlexSans for the Neon design and Mono for Terminal, both carried inside the executable so nothing is fetched at runtime.OFL 1.1
WebView2 RuntimePart of Windows, not shipped by us. It is what actually paints the settings page.Microsoft
models

What the catalogue offers, and what each one is good at

Models are downloaded on request, from the repositories below, and every file is compared against a published SHA-256 before it is used. None of them is bundled with the program.

ModelWhat it is forLicence
Whisper Base, Small, Medium, TurboThe default choice for every language, and the only models that translate speech into English by themselves. Quantised builds are marked q5.MIT
GigaAM v3A single-language model that punctuates by itself. On an 11-second phrase it took 0.47 s against Whisper Medium's 11.6 s, and 277 MB of memory against 814 MB.MIT
GigaAM v2The previous generation of the same model: the same speed, without the punctuation.MIT
Parakeet TDT 0.6B v325 European languages in one narrow model, punctuates by itself.CC-BY-4.0
Nemotron 3.5 StreamingTypes as you speak: partial text on the plate, 40 languages, punctuation included.OpenMDW-1.1
Canary 180M FlashEnglish, German, Spanish and French, and it translates between them without Whisper.CC-BY-4.0
Qwen3 ASRAbout 30 languages, the heaviest and the most accurate in the catalogue.Apache 2.0
MoonshineSmall and quick, for one language at a time on modest hardware.MIT
Any GGUF editor modelPost-processing runs whatever GGUF model you point it at, searched and downloaded from Hugging Face inside the program.per model
how the parts talk

Loopback ports, and nothing beyond them

The engines are ordinary HTTP and websocket servers bound to 127.0.0.1. They are not reachable from the network, and the program refuses to start one on a port another process already holds.

check it yourself
C:\Apps\HoldToType> 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 C:\Apps\HoldToType> tasklist | findstr server whisper-server.exe 9132 Console 1 412,908 K sherpa-server.exe 9188 Console 1 284,112 K Both bound to 127.0.0.1, so nothing outside this machine can reach them.
The build is reproducible. Everything is compiled in Docker from pinned sources: the engine versions are fixed in the Dockerfile, the sherpa release is verified by its SHA-256, and the result is the two files on the releases page. The whole recipe is in the repository.

Read the source, or just run it

Both are equally welcome. The repository has the build recipe, the tests and every line of the program.

Open the repository