about
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.
I do: Vitalii Yemets, one developer. There is no company, no team and no investors: one person writes it, answers the issues and ships the releases, all in the open on GitHub.
I wrote HoldToType for my own Windows computer: I wanted to dictate without a subscription and without my voice going anywhere. Then my colleagues started using it, and now it is available to everyone. It is free and it will stay free.
If something is wrong, write to me: an issue on GitHub or holdtotype@outlook.com.
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.
whisper-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-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-server.exe — the editor model that runs your prompts after recognition.
Only while post-processing is switched on.
MIT
The tensor maths inside whisper.cpp and llama.cpp. Not a separate file; compiled into both.
With the engine that uses it.
MIT
Runs the models inside sherpa-onnx. Compiled into the sherpa executables.
With sherpa.
MIT
The app is written in Go. These are the only outside libraries it uses.
Draws the settings window, which is an HTML page rendered by the WebView2 component already present in Windows.
MIT
Loads the WebView2 libraries. Used by go-webview2.
MIT
Captures the microphone: the audio callback that fills the buffer while you hold the keys.
Unlicense
The websocket link to the streaming recogniser, which sends text back while you are still speaking.
BSD-2
The Windows API calls: the keyboard hook, the tray icon, the overlay window, job objects for the child processes.
BSD-3
The one typeface every design is set in, carried inside the executable so it reads the same on any machine.
OFL 1.1
Part of Windows, not shipped by us. It is what actually paints the settings page.
Microsoft
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.
The default choice for every language, and the models that carry translation: into English through their own translate task, into other languages by being told the speech is already in the target one. Quantised builds are marked q5.
MIT
A 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
The previous generation of the same model: the same speed, without the punctuation.
MIT
25 European languages in one narrow model, punctuates by itself.
CC-BY-4.0
Types as you speak: partial text on the plate, 40 languages, punctuation included.
OpenMDW-1.1
English, German, Spanish and French, and it translates between them without Whisper.
CC-BY-4.0
About 30 languages, the heaviest and the most accurate in the catalogue.
Apache 2.0
Small and quick, for one language at a time on modest hardware.
MIT
Post-processing runs whatever GGUF model you point it at, searched and downloaded from Hugging Face inside the program.
per model
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.
8910whisper-server
HTTP
a Whisper model serves the language
8911llama-server
HTTP, session key
post-processing is on
8912sherpa-server
HTTP
a sherpa model serves the language
8913sherpa-online-server
websocket
a streaming model is chosen
HoldToType itself is published under the MIT licence: use it, read it, change it, ship your own. Every engine and library above carries its own permissive licence, listed next to it.
holdtotype@outlook.com for anything. Issues on GitHub for problems and requests, where other people can see and add to them. The program is also listed on AlternativeTo.