SpeechRecognition: Statische Methode available()
Die statische Methode available() der Web Speech API prüft, ob die angegebenen Sprachen für die Spracherkennung auf der gewünschten Qualitätsstufe verfügbar sind.
Um ein Sprachpaket für die Spracherkennung lokal zu installieren, verwenden Sie die Methode SpeechRecognition.install().
Der Zugriff auf die Methode available() wird durch die on-device-speech-recognition Permissions-Policy gesteuert. Wenn eine festgelegte Richtlinie die Verwendung untersagt, schlagen Aufrufe der Methode fehl.
Syntax
available(options)
Parameter
options-
Ein Objekt mit Optionen für die Verfügbarkeitsprüfung. Mögliche Eigenschaften sind:
langs-
Ein Array aus einer oder mehreren Zeichenfolgen mit BCP-47-Sprachtags. Jede Zeichenfolge steht für eine Sprache, deren Verfügbarkeit geprüft werden soll. Ein leeres
langs-Array verursacht keinen Fehler, der Rückgabewert wird jedoch immer zuunavailableaufgelöst. qualityOptional-
Ein Aufzählungswert, der den ungefähren Anwendungsfall Ihrer Spracherkennungs-App und damit die erforderliche Komplexität des Sprachpakets und des Spracherkennungsdienstes angibt. Mögliche Werte sind:
command-
Stufe 1: Kurze, isolierte Äußerungen mit begrenztem Wortschatz und einer sprechenden Person. Ein Anwendungsfall sind Sprachbefehle für Apps. Dies ist der Standardwert.
dictation-
Stufe 2: Fortlaufende Sprache bei mäßigen Hintergrundgeräuschen und einer hauptsächlich sprechenden Person. Anwendungsfälle sind das Diktieren längerer Texteingaben wie SMS-Nachrichten, E-Mail-Texten oder Zeichenfolgen zur Übersetzung.
conversation-
Stufe 3: Fortlaufende Sprache mit komplexem Wortschatz, hoher Toleranz gegenüber Hintergrundgeräuschen und mehreren hauptsächlich sprechenden Personen. Anwendungsfälle sind die Transkription von Besprechungen und die fortlaufende Live-Untertitelung.
processLocallyOptional-
Ein boolescher Wert, der angibt, ob die Verfügbarkeit der Sprachen nur für die Spracherkennung auf dem Gerät (
true) oder für die Spracherkennung auf dem Gerät oder über einen entfernten Dienst (false) geprüft werden soll. Der Standardwert istfalse.Hinweis: Mit
available()lässt sich nicht garantieren, dass ein entfernter Dienst die angegebenen Sprachen unterstützt. Ein Wert vonfalsebedeutet, dass entweder ein Spracherkennungsdienst auf dem Gerät oder ein entfernter Spracherkennungsdienst sie unterstützt.
Rückgabewert
Eine Promise, die mit einem Aufzählungswert aufgelöst wird, der die Verfügbarkeit der angegebenen Sprachen für die Spracherkennung angibt.
Mögliche Werte sind:
available-
Gibt an, dass alle angegebenen Sprachen auf der gewählten
quality-Stufe unterstützt werden.- Wenn
processLocallyauftruegesetzt ist, bedeutetavailable, dass die Spracherkennung für diese Sprachen auf dem Gerät verfügbar ist (die erforderlichen Sprachpakete wurden heruntergeladen und auf dem Computer der nutzenden Person installiert). - Wenn
processLocallyauffalsegesetzt ist, bedeutetavailable, dass die Spracherkennung für diese Sprachen entweder auf dem Gerät oder über einen entfernten Dienst verfügbar ist.
- Wenn
downloading-
Gibt an, dass alle angegebenen Sprachen auf der gewählten
quality-Stufe für die Verarbeitung auf dem Gerät unterstützt werden und das entsprechende Sprachpaket für mindestens eine Sprache gerade heruntergeladen wird. Nur relevant, wennprocessLocallyauftruegesetzt ist. downloadable-
Gibt an, dass die angegebenen Sprachen auf der gewählten
quality-Stufe auf dem Gerät unterstützt werden, das entsprechende Sprachpaket für mindestens eine Sprache jedoch noch nicht heruntergeladen wurde. Nur relevant, wennprocessLocallyauftruegesetzt ist. -
Gibt an, dass mindestens eine der angegebenen Sprachen auf der gewählten
quality-Stufe nicht unterstützt wird.- Wenn
processLocallyauftruegesetzt ist, bedeutetunavailable, dass die Spracherkennung auf dem Gerät für mindestens eine der angegebenen Sprachen nicht verfügbar ist. - Wenn
processLocallyauffalsegesetzt ist, bedeutetunavailable, dass die Spracherkennung für mindestens eine der angegebenen Sprachen weder auf dem Gerät noch über einen entfernten Dienst verfügbar ist.
- Wenn
Endgültiger Rückgabewert bei mehreren Sprachen mit unterschiedlichem Status
Auch wenn im langs-Array mehrere Sprachen angegeben sind, wird nur ein Statuswert zurückgegeben. Wenn die angegebenen Sprachen unterschiedliche Verfügbarkeitsstatus haben, ist der endgültige Rückgabewert der Status, der für eine der Sprachen am weitesten von available entfernt ist – entsprechend der Reihenfolge in den folgenden Listen:
Wenn processLocally auf false gesetzt ist:
- Wenn alle Sprachen
availablesind, wirdavailablezurückgegeben. - Andernfalls wird
unavailablezurückgegeben.
Wenn processLocally auf true gesetzt ist:
- Wenn alle Sprachen
availablesind, wirdavailablezurückgegeben. - Wenn mindestens eine Sprache
downloadingist, wirddownloadingzurückgegeben. - Wenn mindestens eine Sprache
downloadableist, wirddownloadablezurückgegeben. - Wenn mindestens eine Sprache
unavailableist, wirdunavailablezurückgegeben.
Ausnahmen
InvalidStateErrorDOMException-
Das aktuelle Dokument ist nicht vollständig aktiv.
SyntaxErrorDOMException-
Mindestens eine der in
langsangegebenen Zeichenfolgen ist kein gültiger BCP-47-Sprachtag.
Beispiele
>Verfügbarkeit auf dem Gerät prüfen und Sprachpakete installieren
Damit die Spracherkennung auf dem Gerät funktioniert, muss im Browser ein Sprachpaket für die Sprache installiert sein, die Sie erkennen möchten. Wenn Sie nach dem Festlegen von processLocally = true die Methode start() ausführen, ohne dass das passende Sprachpaket installiert ist, schlägt der Methodenaufruf mit einem language-not-supported-Fehler fehl.
Gehen Sie in zwei Schritten vor, um das passende Sprachpaket zu installieren:
- Prüfen Sie mit der Methode
available(), ob das Sprachpaket auf dem Computer der nutzenden Person verfügbar ist. - Installieren Sie das Sprachpaket mit der Methode
SpeechRecognition.install(), falls es nicht verfügbar ist.
Der folgende Codeausschnitt führt diese Schritte aus:
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.`;
}
});
}
},
);
});
Zuerst führen wir die Methode available() aus und geben mit langs: ["en-US"] eine Sprache an, deren Verfügbarkeit geprüft werden soll. Außerdem setzen wir processLocally: true. Wir prüfen drei mögliche Rückgabewerte:
- Wenn der Rückgabewert
unavailableist, steht kein geeignetes Sprachpaket zum Herunterladen bereit. Außerdem geben wir eine entsprechende Meldung aus. - Wenn der Rückgabewert
availableist, ist das Sprachpaket lokal verfügbar und die Erkennung kann beginnen. In diesem Fall führen wirstart()aus und protokollieren eine Meldung in der Konsole, sobald die App bereit ist, Spracheingaben zu empfangen. - Wenn der Rückgabewert ein anderer ist (
downloadableoderdownloading), geben wir eine Statusmeldung aus, die über den Beginn des Downloads eines Sprachpakets informiert. Anschließend führen wir die Methodeinstall()aus, um den Download abzuwickeln.
Die Methode install() startet den Download des Sprachpakets en-US und gibt eine Promise zurück. Diese wird mit einem booleschen Wert aufgelöst, der angibt, ob die angegebenen Sprachpakete erfolgreich heruntergeladen und installiert wurden (true) oder nicht (false).
Dieser Code ist ein Auszug aus unserem Farbwechsler mit Spracherkennung auf dem Gerät (Live-Demo ausführen). Eine ausführliche Erklärung finden Sie unter Verwendung der Web Speech API.
Fähigkeiten des Modells auf dem Gerät prüfen
Der folgende Codeausschnitt ist eine Abwandlung des vorherigen Beispiels. Wir rufen die Methode available() mit der auf dictation gesetzten Option quality auf, um zu prüfen, ob die Spracherkennung auf dem Gerät diese Qualitätsstufe unterstützt. Wenn der Rückgabewert unavailable ist, setzen wir die Eigenschaft processLocally des SpeechRecognition-Objekts auf false (unter der Annahme, dass sie zuvor auf true gesetzt war). Dadurch zwingen wir die API, einen cloudbasierten Spracherkennungsdienst zu verwenden. Anschließend starten wir den Erkennungsdienst mit start().
Wenn der Rückgabewert available ist, können wir direkt start() aufrufen, um die Spracherkennung auf dem Gerät zu starten. Bei jedem anderen Rückgabewert führen wir die Methode install() mit der auf dictation gesetzten Option quality aus, um die erforderlichen Sprachpakete zu installieren.
startBtn.addEventListener("click", () => {
// Check availability of on-device target language dictation quality
SpeechRecognition.available({
langs: ["en-US"],
processLocally: true,
quality: "dictation",
}).then((result) => {
if (result === "unavailable") {
diagnostic.textContent = `On-device recognition for dictation not available, running with cloud recognition`;
recognition.processLocally = false;
recognition.start();
} 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,
quality: "dictation",
}).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.`;
}
});
}
});
});
Spezifikationen
| Spezifikation |
|---|
| Web Speech API> # dom-speechrecognition-available> |