SpeechRecognition:install() 静态方法

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

install() 静态方法是 Web 语音 API 的一部分,用于在指定的语言中安装 设备端语音识别 所需的语言包。

要检查语言包是否已可用,请使用 SpeechRecognition.available() 方法。

install() 方法的访问受 on-device-speech-recognition Permissions-Policy 指令控制。具体来说,如果定义的策略阻止使用,任何尝试调用该方法的行为都将失败。

语法

js
install(options)

参数

options

一个指定安装选项的对象。可能的属性包括:

langs

一个或多个字符串组成的数组,包含 BCP 47 语言标签,每个标签代表您希望安装其语言包的一种语言。

返回值

一个 Promise,它将解析为一个布尔值,指示语言包是否成功安装。导致每种返回值的情况如下:

true

所有请求的语言的安装尝试均成功,或者这些语言已安装。

false

请求的语言中有一个或多个不受支持,或者受支持的语言包安装失败,或者为 langs 属性传递了空数组。

异常

InvalidStateError DOMException

当前文档未完全激活。

SyntaxError DOMException

langs 中指定的一个或多个字符串不是有效的 BCP 47 语言标签。

示例

检查设备端可用性和安装语言包

为了使设备上的语音识别工作,浏览器必须安装您要识别的语言的语言包。如果在指定 processLocally = true 后运行 start() 方法,但未安装正确的语言包,则函数调用将失败并出现 language-not-supported 错误。

要安装正确的语言包,请确保遵循以下两个步骤

  1. 使用 SpeechRecognition.available() 方法检查语言包是否在用户的计算机上可用。
  2. 如果语言包不可用,则使用 install() 方法安装它。

这些步骤使用以下代码片段进行处理:

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.`;
          }
        });
      }
    },
  );
});

我们首先运行 available() 方法,指定一种语言 (langs: ["en-US"]) 来检查可用性,并设置 processLocally: true。我们测试了返回值的三种不同可能性:

  • 如果结果值为 unavailable,则表示没有合适的语言包可供下载。我们还会向输出打印一条相应的消息。
  • 如果结果值为 available,则表示语言包可在本地使用,因此可以开始识别。在这种情况下,我们运行 start() 并在应用程序准备好接收语音时将消息记录到控制台。
  • 如果该值是其他值(downloadabledownloading),我们打印一条诊断消息,通知用户语言包下载正在开始,然后运行 install() 方法来处理下载。

install() 方法的工作方式与 available() 方法类似,只是其选项对象仅接受 langs 数组。运行时,它会开始下载 en-US 语言包,并返回一个 Promise,该 Promise 将解析为一个布尔值,指示指定的语言包是否已成功下载和安装 (true) 或未成功 (false)。

此代码摘自我们的 设备端语音颜色更改器在线运行演示)。有关完整解释,请参阅 使用 Web 语音 API

规范

规范
Web Speech API
# dom-speechrecognition-install

浏览器兼容性

另见