このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

SpeechRecognition: install() 静的メソッド

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

install()ウェブ音声 API の静的メソッドで、指定された言語における端末上音声認識のための必要な言語パックをインストールします。

言語パックが利用可能かどうかを確認するには、SpeechRecognition.available() メソッドを使用してください。

install() メソッドへのアクセスは、 on-device-speech-recognition Permissions-Policy ディレクティブで制御されます。具体的には、定義されたポリシーが使用をブロックしている場合、メソッドを呼び出そうとする試みはすべて失敗します。

構文

js
install(options)

引数

options

インストール時のオプションを指定するオブジェクト。取りうるプロパティは次の通りです。

langs

BCP 47 言語タグを含む 1 つ以上の文字列の配列。それぞれは言語パックをインストールしようとしている言語を表します。

返値

言語パックが正常にインストールされたかどうかを示す論理値で解決する Promise です。 それぞれの返値となる条件は以下の通りです。

true

要求された言語のインストールがすべて成功した。または、それらの言語は既にインストール済みだった。

false

要求された言語の 1 つ以上に対応していない、対応している言語パックのインストールに失敗した、langs プロパティに空の配列が渡された。

例外

InvalidStateError DOMException

現在の文書が完全にはアクティブではない。

SyntaxError DOMException

langs で指定された文字列のうち 1 つ以上が有効な BCP 47 言語タグではない。

端末での利用可能性の確認と言語パックのインストール

端末上で音声認識を機能させるには、ブラウザーに認識したい言語の言語パックがインストールされている必要があります。processLocally = true を指定した後に start() メソッドを実行しても、正しい言語パックがインストールされていない場合、関数呼び出しは language-not-supported エラーで失敗します。

正しい言語パックをインストールするには、次の 2 つの手順を必ず踏んでください。

  1. SpeechRecognition.available() メソッドを使用して、ユーザーのコンピューターに言語パックが利用可能かどうかを確認します。
  2. 言語パックが利用できない場合は、install() メソッドを使用してインストールしてください。

これらの手順は、以下のコードスニペットを使用して処理されます。

js
startBtn.addEventListener("click", () => {
  // 対象言語の利用可能性を確認
  SpeechRecognition.available({ langs: ["en-US"], processLocally: true }).then(
    (result) => {
      if (result === "unavailable") {
        diagnostic.textContent = `en-US は現在ダウンロードができません。すみません。`;
      } else if (result === "available") {
        recognition.start();
        console.log("カラーコマンドを受け取る準備ができました。");
      } else {
        diagnostic.textContent = `en-US 言語パックをダウンロード中`;
        SpeechRecognition.install({
          langs: ["en-US"],
          processLocally: true,
        }).then((result) => {
          if (result) {
            diagnostic.textContent = `en-US 言語パックがダウンロードされました。やりなおしてください。`;
          } else {
            diagnostic.textContent = `en-US 言語パックのダウンロードに失敗しました。後でやりなおしてください。`;
          }
        });
      }
    },
  );
});

まず available() メソッドを実行し、利用可能な言語を確認するために 1 つの言語 (langs: ["en-US"]) を指定し、processLocally: true を設定します。返値の 3 つの異なる可能性について検査します。

  • 結果の値が unavailable の場合、ダウンロード可能な適切な言語パックが存在しないことを意味します。また、出力に適切なメッセージを表示します。
  • 結果の値が available の場合、言語パックがローカルで利用可能であることを意味し、認識を開始できます。この場合、start() を実行し、アプリが音声受信の準備が整った際にコンソールへメッセージをログ出力します。
  • 値が他のもの(downloadable または downloading)の場合、言語パックのダウンロードが開始されることをユーザーに通知する診断メッセージを出力し、その後ダウンロード処理を実行するために install() メソッドを呼び出します。

install() メソッドは available() メソッドと同様に動作しますが、そのオプションオブジェクトは langs 配列のみを受け取ります。実行されると、en-US 言語パックのダウンロードを開始し、指定された言語パックが正常にダウンロードおよびインストールされたか (true)、そうでないか (false) を示す論理値で解決される Promise を返します。

このコードは、端末上音声カラーチェンジャーデモをライブで実行)からの抜粋です。詳細な説明についてはウェブ音声 API の使用方法をご覧ください。

仕様書

Specification
Web Speech API
# dom-speechrecognition-install

ブラウザーの互換性

関連情報