Start · Sprachen · JavaScript · Referenz · new SpeechRecognitionPhrase()

new SpeechRecognitionPhrase()

Methode

Erzeugt ein <code>SpeechRecognitionPhrase</code>-Objekt: einen Begriff samt Gewichtung, den die Spracherkennung bevorzugt erkennen soll.

seit JavaScript Experimentell: Chromium-basierte Browser (Web Spee Kategorie: webapi

Signatur

new SpeechRecognitionPhrase(phrase, boost)

Beschreibung

Der Konstruktor SpeechRecognitionPhrase() gehört zur kontextbezogenen Gewichtung (englisch „contextual biasing“) der Web Speech API. Ein Phrase-Objekt enthält einen Begriff oder eine Wortfolge (phrase) und einen Gewichtungsfaktor (boost). Damit sagen Sie der Spracherkennung, dass dieser Begriff in Ihrer Anwendung wahrscheinlich vorkommt.

Das ist nützlich bei Fachbegriffen, Produktnamen, Eigennamen oder ungewöhnlichen Schreibweisen, die ein allgemeines Sprachmodell oft falsch erkennt. Beispiele sind „Kubernetes“, „programmierung.net“ oder Namen von Medikamenten. Die erzeugten Objekte legen Sie als Array in der Eigenschaft SpeechRecognition.phrases ab, bevor Sie start() aufrufen.

Beide Werte lassen sich nach dem Erzeugen nur noch lesen: Die Eigenschaften phrase und boost sind schreibgeschützt. Wenn Sie etwas ändern wollen, erzeugen Sie ein neues Objekt und ersetzen das Array in phrases.

Wichtig: Die Gewichtung funktioniert derzeit nur bei der Erkennung auf dem Gerät (recognition.processLocally = true). Bei Erkennung über einen Server löst der Browser ein error-Ereignis mit dem Fehlercode "phrases-not-supported" aus.

Parameter

Name Typ Default Beschreibung
$phrase Pflicht string Der Begriff oder die Wortfolge, die bevorzugt erkannt werden soll.
$boost number 1.0 Gewichtungsfaktor als Gleitkommazahl von 0.0 bis einschließlich 10.0. Je höher der Wert, desto wahrscheinlicher wird die Phrase erkannt. Liegt der Wert außerhalb dieses Bereichs, wirft der Konstruktor eine SyntaxError-DOMException.

Rückgabewert

Typ
SpeechRecognitionPhrase
Beschreibung
Ein neues SpeechRecognitionPhrase-Objekt mit den schreibgeschützten Eigenschaften phrase und boost.

Beispiele

Phrase-Objekte erzeugen und auslesen

const p1 = new SpeechRecognitionPhrase('Kubernetes', 5.0);
const p2 = new SpeechRecognitionPhrase('programmierung.net'); // boost = 1.0

console.log(p1.phrase, p1.boost);
console.log(p2.phrase, p2.boost);
Kubernetes 5 programmierung.net 1

Fachbegriffe für die Erkennung auf dem Gerät gewichten

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.processLocally = true; // Gewichtung klappt nur auf dem Gerät

const begriffe = [
  ['Ibuprofen', 4.0],
  ['Paracetamol', 4.0],
  ['Metamizol', 6.0]
];

recognition.phrases = begriffe.map(
  ([text, boost]) => new SpeechRecognitionPhrase(text, 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('Kontextbezogene Gewichtung wird nicht unterstützt.');
  }
});

recognition.start();
Erkannt: Metamizol 500 Milligramm

Unterstützung prüfen und ungültigen boost-Wert abfangen

const createPhrase = (text, boost) => {
  if (typeof SpeechRecognitionPhrase === 'undefined') {
    console.warn('SpeechRecognitionPhrase wird nicht unterstützt.');
    return null;
  }
  try {
    return new SpeechRecognitionPhrase(text, boost);
  } catch (err) {
    console.error(`${err.name}: boost muss zwischen 0 und 10 liegen.`);
    return null;
  }
};

createPhrase('Vue.js', 12); // zu hoch
SyntaxError: boost muss zwischen 0 und 10 liegen.

// Wichtig · Fallstricke

  • Experimentell: Die API wird bisher nur von neueren Chromium-basierten Browsern unterstützt. Firefox und Safari unterstützen sie nicht. Prüfen Sie deshalb vor der Nutzung mit typeof SpeechRecognitionPhrase !== 'undefined', ob sie vorhanden ist.
  • Die Gewichtung wirkt nur bei processLocally = true. Vorher sollten Sie mit SpeechRecognition.available() bzw. install() prüfen, ob das Sprachpaket für die gewünschte Sprache auf dem Gerät vorhanden ist. Andernfalls erhalten Sie den Fehler "phrases-not-supported".
  • Ein Wert von boost außerhalb von 0.0–10.0 führt zu einer SyntaxError-Ausnahme. Sehr hohe Werte können zu Fehlerkennungen führen, weil ähnlich klingende Wörter dann falsch als die Phrase erkannt werden. Setzen Sie hohe Werte daher sparsam ein.
  • Ältere Entwürfe der Spezifikation sahen dafür ein SpeechRecognitionPhraseList-Objekt vor. Aktuell erwartet phrases ein normales Array.
  • Nur für den Browser verfügbar, nicht in Node.js. Die Spracherkennung selbst braucht außerdem einen sicheren Kontext (HTTPS) und die Freigabe des Mikrofons.