Why EchoControl Doesn't Use Windows Speech Recognition

EchoControl listening for a command, with the Elite Dangerous command list open showing categories like Propulsion and Power
EchoControl listening for an Elite Dangerous command — checked against a closed list of phrases, not open dictation.

No, EchoControl doesn't rely on Windows Speech Recognition. It runs on Vosk, a speech engine that works entirely on your own computer, with no cloud server involved.

Vosk logo
Vosk, the open-source offline speech recognition toolkit EchoControl runs on.

We're saying this straight up because it's the most common complaint about other voice software: stuck with Windows' native recognizer, year after year, with no real alternative. We decided early on not to depend on it. We also didn't build our own cloud service, which would have been the other easy route.

The other easy route, and why we skipped it

A cloud service would have been simpler to build. But a game doesn't wait. If recognition has to travel to a server and back, every command carries your connection's delay, and it stops working the moment the internet drops.

Vosk solves both problems at once. The model runs loaded on your machine (vosk-model-small-en-us-0.15 for English, vosk-model-small-es-0.42 for Spanish), so there's no round trip to wait for.

Vosk vs. Whisper, vs. Google, AWS, and Azure

We're naming names here because the comparison actually explains the decision.

OpenAI's Whisper is the better transcriber. Punctuation, accents, noisy rooms — Whisper handles all of it better than Vosk does out of the box. What it doesn't handle well is waiting on you mid-fight: getting Whisper fast enough to feel instant takes a real GPU, not the CPU that's already busy running the game. Vosk streams as you speak and stays under half a second of latency on ordinary hardware, which is the one number a game actually cares about. Whisper's extra accuracy has nowhere to go on a system that isn't guessing at open-ended speech — it's just checking your words against a short, known list.

Google, AWS Transcribe, and Azure Speech swap that GPU problem for a network one. Every command has to leave your PC, get processed on someone else's server, and travel back — and the moment your connection drops or lags, so does EchoControl. Vosk never sends anything anywhere. Your voice stays on your machine, there's no per-minute usage fee stacking up, and no dependency on a cloud service that can change its pricing or its terms whenever it wants.

The model itself is small enough that this was even possible. Vosk's models run from around 40MB up to a little over 1GB for the largest ones — a fraction of what Whisper or a cloud SDK needs just to get started. vosk-model-small-en-us-0.15, the one we ship for English, is light enough to run on hardware well below a gaming PC. That footprint is the actual reason offline, real-time recognition was realistic to build at all — not a side benefit.

Why it doesn't try to understand everything

There's a technical detail almost nobody asks about from the outside, and we cover it in more depth in how EchoControl recognizes your commands: the engine doesn't transcribe anything you say. Each game profile defines a closed list of phrases, and it only listens for those.

That's what makes it fast and accurate at the same time. The problem it solves is much smaller than "understand natural language". But a closed list has a risk: if someone says a command a little differently from how we recorded it while building the profile, it can sound like something else to the engine.

The audit that exists because of that risk

That's why every profile goes through its own audit, per game and per language, before it ships. Each phrase gets synthesized as speech, run through Vosk with an open grammar (to see what it could be confused with), and any mismatch gets flagged before a real player runs into it. Some real results from that audit:

  • Elite Dangerous (English): 64 phrases sounded different than expected — "deploy heatsink" was heard as "deploy heat sink".
  • Shadow Tactics (Spanish): 43 phrases failed — "cargar última partida" (load last save) was heard as "cargar última partir".
  • Commandos 2 (English): 32 phrases — "beret" was confused with "bahrain".

Each of those gets fixed with a phonetic alias before that profile ships. Not after someone complains.

We're not saying it's perfect. We keep finding phrases that fail every time we audit a new profile, and we'll probably keep finding them. What we can say is this:

The engine doesn't depend on Windows. It doesn't depend on the internet. And every mistake we find gets fixed before it ships. Never hidden behind "it works most of the time".

See EchoControl in action →