Signatur
Beschreibung
Die Eigenschaft boost eines SpeechRecognitionPhrase-Objekts liefert das Gewicht, mit dem eine bestimmte Phrase bei der Spracherkennung bevorzugt werden soll. Das nennt man Contextual Biasing: Du gibst der Erkennung Hinweise auf Begriffe, die in deinem Anwendungskontext wahrscheinlich vorkommen, z. B. Produktnamen, Fachbegriffe oder Eigennamen, die ein allgemeines Sprachmodell sonst oft falsch erkennt.
Der Wert wird beim Erzeugen über den Konstruktor new SpeechRecognitionPhrase(phrase, boost) festgelegt und kann danach nicht mehr geändert werden. Erlaubt sind Werte von 0.0 bis 10.0, der Standardwert ist 1.0. Je höher der Wert, desto eher wählt die Erkennung diese Phrase, wenn das Gesprochene ähnlich klingt.
Wirksam werden die Phrasen erst, wenn du sie der Eigenschaft SpeechRecognition.phrases zuweist. Nach aktuellem Stand unterstützen Browser Contextual Biasing nur bei der Erkennung auf dem Gerät (processLocally = true).
Rückgabewert
0.0 und 10.0 (Standard: 1.0), die das Gewicht der Phrase angibt.Beispiele
Phrase mit Gewicht erzeugen und boost auslesen
// Merkmalserkennung, weil die API experimentell ist
if ('SpeechRecognitionPhrase' in window) {
const phrase = new SpeechRecognitionPhrase('Kubernetes', 5.0);
console.log(phrase.phrase, phrase.boost);
// Ohne zweites Argument gilt der Standardwert
const standard = new SpeechRecognitionPhrase('Docker');
console.log(standard.boost);
} else {
console.log('Contextual Biasing wird nicht unterstützt.');
}
Fachbegriffe für die lokale Spracherkennung gewichten
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.processLocally = true; // Biasing funktioniert derzeit nur lokal
const begriffe = [
['programmierung.net', 8.0],
['TypeScript', 4.0],
['Vite', 3.5]
];
recognition.phrases = begriffe.map(
([text, gewicht]) => new SpeechRecognitionPhrase(text, gewicht)
);
recognition.phrases.forEach((p) => console.log(`${p.phrase}: ${p.boost}`));
recognition.addEventListener('result', (event) => {
console.log('Erkannt:', event.results[0][0].transcript);
});
recognition.addEventListener('error', (event) => {
if (event.error === 'phrases-not-supported') {
console.warn('Phrasen werden von dieser Erkennung nicht unterstützt.');
}
});
recognition.start();
Ungültige boost-Werte abfangen
const erstellePhrase = (text, gewicht) => {
try {
return new SpeechRecognitionPhrase(text, gewicht);
} catch (err) {
console.error(`${err.name}: boost ${gewicht} ist ungültig`);
return null;
}
};
erstellePhrase('Grafana', 12); // außerhalb von 0–10
const ok = erstellePhrase('Grafana', 10);
console.log(ok.boost);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
phrase.boost = 3ändert nichts (im Strict Mode wird einTypeErrorgeworfen). Für ein anderes Gewicht musst du ein neuesSpeechRecognitionPhrase-Objekt erzeugen. - Wertebereich: Werte kleiner als
0.0oder größer als10.0sowie ein leererphrase-String führen im Konstruktor zu einerDOMExceptionvom TypSyntaxError. - Keine Garantie:
boostist nur ein Hinweis an die Erkennung. Ein hoher Wert macht die Phrase wahrscheinlicher, erzwingt sie aber nicht. Setzt du zu viele Phrasen auf sehr hohe Werte, kann es zu Fehlerkennungen kommen, weil ähnlich klingende Wörter dann fälschlich als diese Phrase erkannt werden. - Nur lokale Erkennung: Nicht jede Erkennung unterstützt Phrasen. In dem Fall wird ein
error-Event miterror === 'phrases-not-supported'ausgelöst. - Kompatibilität: Die Eigenschaft ist experimentell und bisher nur in Chromium-basierten Browsern verfügbar. Firefox und Safari unterstützen sie derzeit nicht. Prüfe deshalb vorher mit
'SpeechRecognitionPhrase' in window, ob sie vorhanden ist.