SpeechRecognition: install() static method

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The install() static method of the Web Speech API installs the required language packs for on-device speech recognition in the specified languages.

To check if the language packs are already available, use the SpeechRecognition.available() method.

Access to the install() method is controlled by the on-device-speech-recognition Permissions-Policy directive. Specifically, where a defined policy blocks usage, any attempts to call the method will fail.

Syntax

js
install(options)

Parameters

options

An object specifying options for the installation. Possible properties include:

langs

An array of one or more strings containing BCP 47 language tags, each representing a language that you want to install the language pack for.

Return value

A Promise that resolves with a boolean value indicating whether the language pack was installed successfully. The conditions that result in each return value are as follows:

true

All installation attempts succeeded for the requested languages, or the languages were already installed.

false

One or more of the requested languages are not supported, a supported language pack failed to install, or an empty array was passed for the langs property.

Exceptions

InvalidStateError DOMException

The current document is not fully active.

SyntaxError DOMException

One or more of the strings specified in langs is not a valid BCP 47 language tag.

Examples

Checking on-device availability and installing language packs

For on-device speech recognition to work, the browser must have a language pack installed for the language you want to recognize. If you run the start() method after specifying processLocally = true but the correct language pack isn't installed, the function call will fail with a language-not-supported error.

To get the correct language pack installed, ensure you follow these two steps:

  1. Check whether the language pack is available on the user's computer using the SpeechRecognition.available() method.
  2. Install the language pack if it isn't available using the install() method.

These steps are handled using the following code snippet:

js
startBtn.addEventListener("click", () => {
  // check availability of target language
  SpeechRecognition.available({ langs: ["en-US"], processLocally: true }).then(
    (result) => {
      if (result === "unavailable") {
        diagnostic.textContent = `en-US not available to download at this time. Sorry!`;
      } else if (result === "available") {
        recognition.start();
        console.log("Ready to receive a color command.");
      } else {
        diagnostic.textContent = `en-US language pack downloading`;
        SpeechRecognition.install({
          langs: ["en-US"],
          processLocally: true,
        }).then((result) => {
          if (result) {
            diagnostic.textContent = `en-US language pack downloaded. Try again.`;
          } else {
            diagnostic.textContent = `en-US language pack failed to download. Try again later.`;
          }
        });
      }
    },
  );
});

We first run the available() method, specifying one language (langs: ["en-US"]) to check availability for, and processLocally: true. We test for three different possibilities of the return value:

  • If the resulting value is unavailable, it means that no suitable language pack is available to download. We also print an appropriate message to the output.
  • If the resulting value is available, it means that the language pack is available locally, so recognition can begin. In this case, we run start() and log a message to the console when the app is ready to receive speech.
  • If the value is something else (downloadable or downloading), we print a diagnostic message to inform the user that a language pack download is starting, then run the install() method to handle the download.

The install() method works in a similar way to the available() method, except that its options object only takes the langs array. When run, it starts downloading the en-US language pack and returns a Promise that resolves with a boolean indicating whether the specified language packs were downloaded and installed successfully (true) or not (false).

This code is excerpted from our on-device speech color changer (run the demo live). See Using the Web Speech API for a full explanation.

Specifications

Specification
Web Speech API
# dom-speechrecognition-install

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
install() static method
Experimental
Chrome – Full support
Chrome 139 (Release date: 2025-08-05)
footnote Full support
Edge – Full support
Edge 139 (Release date: 2025-08-07)
footnote Full support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 123 (Release date: 2025-10-28)
footnote Full support
Safari – No support
Safari
footnote No support
Chrome Android – No support
Chrome Android
footnote No support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

See also