Start · Sprachen · JavaScript · Referenz · SpeechRecognitionPhrase.boost

SpeechRecognitionPhrase.boost

Eigenschaft

Schreibgeschützte Gleitkommazahl (0.0–10.0), die angibt, wie stark die Spracherkennung die zugehörige <code>phrase</code> bevorzugen soll.

seit JavaScript Experimentell: Chromium-basierte Browser (Chrome 1 Kategorie: webapi

Signatur

SpeechRecognitionPhrase.boost

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

Typ
number
Beschreibung
Gleitkommazahl zwischen 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.');
}
Kubernetes 5 1

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();
programmierung.net: 8 TypeScript: 4 Vite: 3.5

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);
SyntaxError: boost 12 ist ungültig 10

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie phrase.boost = 3 ändert nichts (im Strict Mode wird ein TypeError geworfen). Für ein anderes Gewicht musst du ein neues SpeechRecognitionPhrase-Objekt erzeugen.
  • Wertebereich: Werte kleiner als 0.0 oder größer als 10.0 sowie ein leerer phrase-String führen im Konstruktor zu einer DOMException vom Typ SyntaxError.
  • Keine Garantie: boost ist 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 mit error === '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.