Voice input in the browser is a study in inconsistency.
Chrome, Edge, and most Chromium-based browsers have the Web Speech API with continuous recognition that works well for dictation. Firefox ships a stub that throws a not-supported error at runtime. Safari's implementation works but requires a permission gesture every few sentences. And all of them send your audio to a cloud service.
When I built voice dictation for PromptBoard, I needed something that worked everywhere and ran locally. Transcriber is the answer: a Node.js server that runs Whisper in-process and exposes a single HTTP endpoint. Any browser tool that wants voice input sends audio there and gets text back.
The cascade
Every Machina tool that supports voice uses the same three-level cascade:








