SpeechRecognition: install() static method
The install()
static method of the Web Speech API installs the required language packs for on-device speech recognition of the specified languages.
To check existing availability of the language packs for on-device speech recognition, you can 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
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 installation was successful. The conditions that result in each return value are as follows:
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 occur, the browser needs to have a language pack installed for the language you are trying to recognize. If you run the start()
method after specifying processLocally = true
and you haven't got the correct language pack installed, it will fail with a language-not-supported
error.
To get the correct language pack installed, there are two steps to follow.
- You need to check whether the language pack is available on the user's computer using the
SpeechRecognition.available()
method. - You need to install the language pack if it isn't available using the
install()
method.
Both of the above steps are handled using the following code snippet:
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 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 the language is not available, and a suitable language pack is not available to download, so we 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 runstart()
and log a message to the console when the app is ready to receive speech. - If the value is something else (
downloadable
ordownloading
), we print a diagnostic message to inform the user that a language code download is commencing, then run theinstall()
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
Loading…