SpeechRecognition: available() 静的メソッド
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
available() はウェブ音声 API の静的メソッドで、指定された言語が音声認識に使用可能かどうかを確認します。
音声認識用の言語パックをローカルにインストールするには、SpeechRecognition.install() メソッドを使用します。
available() メソッドへのアクセスは、 on-device-speech-recognition Permissions-Policy によって制御されます。具体的には、定義されたポリシーが使用をブロックしている場合、メソッドの呼び出しはすべて失敗します。
構文
available(options)
引数
options-
可用性チェックのオプションを指定するオブジェクト。 以下のプロパティが利用可能です。
langs-
BCP 47 言語タグを含む 1 つ以上の文字列の配列。各タグは利用可能性を確認する言語を表します。空の
langs配列を渡してもエラーは発生しませんが、返値は常にunavailableとなります。 processLocally省略可-
端末上の音声認識のみ (
true) か、端末上またはリモート音声認識の両方 (false) の言語利用可能性を確認するかを指定する論理値。デフォルト値はfalseです。メモ:
available()を使用して、リモートサービスが指定された言語に対応していることを保証することはできません。falseの値は、端末上の音声認識サービス、またはリモート音声認識サービスのいずれかがそれらに対応していることを意味します。
返値
指定された言語の音声認識の可用性を示す列挙型値で解決する Promise です。
取りうる値は次の通りです。
available-
指定されたすべての言語への対応が利用可能であることを示します。
processLocallyがtrueに設定されている場合、availableは、それらの言語の音声認識が端末上で利用可能であることを意味します(必要な言語パックがユーザーのコンピューターにダウンロードされ、インストール済みです)。processLocallyがfalseに設定されている場合、availableは、それらの言語に対して音声認識が端末上またはリモートで利用可能であることを意味します。
downloading-
指定された言語の対応が端末上で利用可能であり、少なくとも 1 つの言語に関連する言語パックのダウンロードが進行中であることを示します。
processLocallyがtrueの場合にのみ関連します。 downloadable-
指定された言語の対応が端末上で利用可能であることを示しますが、少なくとも 1 つの言語に対応する言語パックがまだダウンロードされていません。
processLocallyがtrueの場合にのみ関連します。 -
指定された言語のうち少なくとも 1 つに対する対応が利用できないことを示します。
processLocallyがtrueに設定されている場合、unavailableは、指定された言語のうち少なくとも 1 つについて、端末上の音声認識が利用できないことを意味します。processLocallyがfalseに設定されている場合、unavailableは、指定された言語のうち少なくとも 1 つについて、端末上またはリモートで音声認識が利用できないことを意味します。
異なるステータスを持つ複数言語に対する最終的な返値
langs 配列に複数の言語が指定されていても、返されるステータス値は1つだけです。指定された言語ごとに利用可能ステータスが異なる場合、最終的な返値は、以下のリストに示される順序で、いずれかの言語において available から最も遠いステータスとなります。
processLocally が false の場合、
- すべての言語が
availableであれば、availableを返します。 - そうでなければ
unavailableを返します。
processLocally が true の場合、
- すべての言語が
availableであれば、availableを返します。 - 1 つ以上の言語が
downloadingであれば、downloadingを返します。 - 1 つ以上の言語が
downloadableであれば、downloadableを返します。 - 1 つ以上の言語が
unavailableであれば、unavailableを返します。
例外
InvalidStateErrorDOMException-
現在の文書は完全に有効ではありません。
SyntaxErrorDOMException-
langsで指定された文字列のうち、 1 つ以上が有効な BCP 47 言語タグではありません。
例
>端末での利用可能性の確認と言語パックのインストール
端末上で音声認識を機能させるには、ブラウザーに認識したい言語の言語パックがインストールされている必要があります。processLocally = true を指定した後に start() メソッドを実行しても、正しい言語パックがインストールされていない場合、関数呼び出しは language-not-supported エラーで失敗します。
正しい言語パックをインストールするには、次の 2 つの手順を必ず踏んでください。
available()メソッドを使用して、ユーザーのコンピューターに言語パックが利用可能かどうかを確認します。- 言語パックが利用できない場合は、
SpeechRecognition.install()メソッドを使用してインストールしてください。
これらの手順は、以下のコードスニペットを使用して処理されます。
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-available> |