← Chrome 150 reference

v150 · web api · shipped

Web Speech API: On-Device Recognition Quality

A new quality member of the SpeechRecognitionOptions dictionary that lets developers request the semantic capability of an on-device speech model — command, dictation, or conversation — when checking availability or installing language packs. Ships in Chrome 150 on desktop.

at a glance

Shipped inChrome 150 (desktop)
StatusEnabled by default (Finch: OnDeviceWebSpeechQuality)
Depends onOn-device speech recognition (Chrome 139+); processLocally: true
ChromeStatus5136859632107520 — Web Speech API: On-Device Recognition Quality

context: on-device speech in Chrome

Chrome 139 shipped on-device speech recognition for desktop via the processLocally: true option on SpeechRecognition. This ensures audio and transcripts never leave the user's device. On-device models range widely in capability — a small command model can recognise "play", "stop", "next" reliably but may fail on free-form dictation; a large model handles meetings and conversations but requires significant RAM and a capable CPU.

Before Chrome 150, there was no way for a site to express which tier of model it needs, or to learn whether a suitable model is installed. A site requesting transcription for meeting notes would silently receive lower-quality results if only a command model was available. The quality property solves this.

Source: chromestatus.com — Web Speech API: On-Device Recognition Quality.

the quality option

syntax

const availability = await SpeechRecognition.available({
  langs: ["en-US"],
  processLocally: true,
  quality: "command", // "command" | "dictation" | "conversation"
});

quality belongs to the SpeechRecognitionOptions argument of SpeechRecognition.available() and SpeechRecognition.install(), not to a SpeechRecognition instance. The dictionary defaults to "command" when quality is omitted. Source: Web Speech API, SpeechRecognitionOptions dictionary.

quality values

ValueUse caseModel requirements
"command"Short spoken commands — navigation, media controls, voice buttonsLightest; fast, low latency
"dictation"Free-form text entry — composing messages, notes, form fieldsMedium; handles full vocabulary
"conversation"Extended back-and-forth dialogue — meeting transcription, interviewsHeaviest; context-aware, most accurate

Set processLocally: true in an availability check to require on-device recognition. quality sets the requested model capability floor; it does not configure the recognition instance. Source: Web Speech API, available(options).

Source: Intent to Prototype thread, blink-dev, January 2026.

checking model availability

The static SpeechRecognition.available() method (shipping Chrome 150) accepts quality options so sites can confirm a suitable model is installed before starting recognition:

const availability = await SpeechRecognition.available({
  langs: ["en-US"],
  processLocally: true,
  quality: "dictation",
});

if (availability === "downloadable") {
  // Offer an install control; only after user consent, call:
  // await SpeechRecognition.install({ langs: ["en-US"], quality: "dictation" });
  // Recheck availability after installation.
} else if (availability === "available") {
  // A local model matching the requested quality is ready.
}

The spec defines "unavailable", "downloadable", "downloading", and "available". Source: Web Speech API, AvailabilityStatus values.

example: falling back gracefully

const availability = await SpeechRecognition.available({
  langs: ["en-US"], processLocally: true, quality: "dictation",
});

if (availability === "available") {
  const recognition = new SpeechRecognition();
  recognition.lang = "en-US";
  recognition.processLocally = true;
  recognition.onresult = (event) => {
    console.log(event.results[0][0].transcript);
  };
  recognition.start();
} else {
  // Explain unavailable/downloading/downloadable status; ask before installing
  // a language pack or using a remote speech service.
  console.log(`Local dictation: ${availability}`);
}

browser support

Chrome (desktop)150 (enabled by default)
Chrome (Android)Not yet
FirefoxNo signal
SafariNo signal
Source: chromestatus.com browser positions, May 2026.

see also