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

瀏覽器相容性

另見