Push-to-talk dictation as a two-way-radio gesture: hold the tangent, speak, release. The transcript types straight into your cursor. The host needs no software, no admin rights, no driver: it sees an ordinary USB keyboard. And the voice never leaves the house: recognition runs only on a private server. This page shows the concept with its statuses stated honestly: what is decided, what is still being chosen, and the one link of the chain that has actually been measured.
Dictation today means switching focus to a special app, sending your voice to someone else's cloud, or being unable to install anything at all on a locked corporate Windows or an MDM-managed Mac. Three different walls, one gesture behind all of them.
One measure of an architecture is what it lets you delete. This concept closed a sibling project outright: a browser robot that would have driven dictation into a chat window over CDP: selectors, sessions, a moving DOM, a whole class of fragile parts. A device the host mistakes for a keyboard solves the same task with none of them, so the robot is closed, not shelved.
decidedOne gesture, one boundary: everything left of the USB plug is the device's business; the host only ever sees a keyboard that types.
being chosenPure HID keyboard, or a composite gadget (keyboard + USB audio) whose second face is a plain PTT microphone for calls. The composite is possible on paper and untested on this hardware. A software daemon for Linux hosts stays as the v1.5 fallback, not the first build.
This page describes a pattern, not one installation. The device-as-keyboard front never changes; the speech-to-text seat behind it is whatever you plug in. That is the key that opens this whole class of problems.
decidedVoiceBridge on a private server: faster-whisper large-v3-turbo on an RTX 3060, Russian and English auto-detected per utterance. The voice never leaves the house. A principle, not an implementation detail.
The price: you need a box of your own: a GPU machine that is on when you dictate, and yours to maintain.
OpenAI's Whisper API or any compatible endpoint slots into the same seat: the device posts audio, gets the transcript back, and everything else on this page stays exactly the same. No server, no GPU, nothing to maintain.
The price: your voice travels to a vendor, per-minute billing, and the privacy thesis above no longer holds. An honest trade, stated plainly.
The same rule as everywhere on this shelf: the machine shows, the human confirms, and what is not yet designed is listed as not yet designed.
decidedThe device types only the transcript, only after the button is released. There is no autonomous input path: no keystroke the human did not just speak.
decidedRecording is indicated by an LED, a sound, or both. A microphone you cannot see working is a microphone you cannot trust.
proposedCancel by long hold. Proposed, not yet approved, and no hold duration has been chosen, so this page names none.
proposedA layout test string before typing into a real document. How the human confirms it is not yet worked out.
in the specA length cap and a physical cancel. Not a detail: scancode typing runs at human speed, and for that whole time the device owns the host's keyboard. A minute of dictation is a minute when the user is not in command of their own machine. That is exactly why the spec carries a typing length limit and a physical way to stop it mid-stream.
The prices of the pattern, stated plainly, none of them hidden behind the demo.
being chosenA keyboard sends position codes; the host's layout picks the characters, so no layout-independent Cyrillic exists. Three candidate answers, each with its price: layout-dependent scancodes (fast, but a wrong guess fails silently, leaving Latin gibberish in a real document, which is what the layout test string exists to catch), per-OS Unicode input (breaks the "nothing to install" promise, differently on every OS), or a translit fallback (always works; the price is obvious). The v1 default is not yet chosen.
documented, untested hereA Pi 5 wants 5 V/5 A over USB-C PD; an ordinary laptop USB-A port gives 2.5–4.5 W, below the Pi 5's quiet draw with Wi-Fi up.
The price: "one cable and it works" is not a Pi 5 story: it needs its own power. That single-cable story belongs to the Zero 2 W fallback (roughly a watt under load), which is why the fallback exists.
This shelf does not publish figures it does not have. Today exactly one link of the chain exists and was measured; the rest is a commitment.
Recognition of a short phrase on that private server takes about 0.7 seconds on a warm model (0.70 s and 0.73 s, two consecutive runs, full HTTP round trip on a real 1.8 s clip). The first request after idle takes about 4 seconds, because the model reloads, and that is exactly the problem the warm-model mode exists to solve. This is a server-side figure only: no microphone, no Wi-Fi, no HID typing in it.
End-to-end, hold, speak, release, text on screen, is not measured, because there is nothing to measure yet. When the first build lives, this receipt gets two numbers: the end-to-end latency, and a layout test string typed on a locked corporate machine.
runningThe VoiceBridge server is real, live for over a month: dictation, recognition, per-utterance language auto-detection (mixed-language speech is the normal case here), web, Android and desktop clients.
not builtVB Tangent is a specified concept. The specification is written (a vb-tangent goal in the VoiceBridge project: the server-side warm-model toggle, plus the device itself, still a draft, holding one open owner decision). No code yet, hardware not assembled, gadget mode not yet brought up on this Pi. The server piece builds first.