concept · Web API · Speech

Command vs. Dictation

Two SpeechRecognition instances listen to the same microphone — one with quality: 'command' for fast, low-resource recognition, one with quality: 'dictation' for higher-accuracy continuous speech. Compare the transcripts side by side to see the model selection in action.

Your browser does not support the Web Speech API (SpeechRecognition). Try Chrome 150+ on desktop.
Try speaking: "schedule a meeting for Monday at two PM" — or read a full paragraph from any article at normal pace. Notice how the command model optimises for short utterances while the dictation model handles continuous speech.
Click "Start both" to listen simultaneously with both quality levels
quality: 'command'
Command model output…
Fast · low-resource · best for ≤ 5 words
quality: 'dictation'
Dictation model output…
Accurate · continuous speech · long-form

when to use each

Use 'command' for:
  • Voice controls ("next slide", "go back")
  • Smart home commands ("turn off the lights")
  • Search queries ("search for Italian restaurants")
  • Short form fills (city name, zip code)
  • Any UX where latency matters more than accuracy
Use 'dictation' for:
  • Note-taking and journaling
  • Email and message composition
  • Document creation
  • Long text fields (product reviews, support forms)
  • Any UX where accuracy matters more than speed
Both recognizers share the same microphone input. The difference is purely in which on-device model the browser selects for each. On devices with multiple on-device models available, you may notice that the command model responds faster but produces fewer words before stopping, while the dictation model continues transcribing across natural pauses.

the pattern

// Command recognizer — fast and lightweight const cmd = new SpeechRecognition(); cmd.processLocally = true; cmd.quality = 'command'; cmd.continuous = true; cmd.interimResults = true; // Dictation recognizer — accurate for long speech const dict = new SpeechRecognition(); dict.processLocally = true; dict.quality = 'dictation'; dict.continuous = true; dict.interimResults = true; // Both listen to the same mic simultaneously cmd.start(); dict.start();

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗