A voice assistant in the browser, until Chrome said 'no'
Artyom.js wraps Web Speech APIs to let you build Siri-like voice commands and synthesis in JavaScript, then Google gated it behind user clicks.

What it does
Artyom.js is a TypeScript-to-JavaScript wrapper around webkitSpeechRecognition and speechSynthesis. It lets you register voice commands (including wildcards and regexes), dictate text, and make the browser talk back. Ships as both a CommonJS module and a plain <script> tag file.
The interesting bit
The library includes a Soundex algorithm to fuzzy-match misheard commands, and it can chunk through “extreme huge blocks of text” — the README claims +20K words — while still firing onStart and onEnd callbacks. The real story, though, is the giant Chrome 71 breaking change plastered at the top of the README: Google now requires a user gesture before any speech synthesis will fire, so your “Jarvis” needs a click-to-activate button before it can run hands-free.
Key highlights
- Smart commands with wildcards (
Repeat after me *) and regex support - Optional wake-word mode (say “Jarvis” before a command)
- Supports ~13 languages including English variants, Spanish, German, Japanese, Mandarin, Cantonese
- Includes a local HTTPS sandbox at
localhost:3000for testing continuous recognition - Single-file TypeScript source; build scripts for both browser and module targets
Caveats
- Chrome 71+ requires at least one user click per page before speech synthesis works; the README calls this out as a hard limitation, not a bug
- The “complete” language support claim is unclear — the table cuts off and some flag labels look suspect (“Brazil” uses
pt-PT, notpt-BR) - Last meaningful update appears to center on the Chrome 71 workaround; activity level is unclear from the README alone
Verdict Worth a look if you need quick voice prototyping in a controlled web app where you can guarantee a click interaction. Skip it if you need fully autonomous voice startup or cross-browser support beyond Chrome/Edge’s Web Speech implementations.