Start · Sprachen · JavaScript · Referenz · SpeechRecognition.phrases

SpeechRecognition.phrases

Eigenschaft

Liest oder setzt ein Array von <code>SpeechRecognitionPhrase</code>-Objekten, mit denen die Spracherkennung gezielt auf bestimmte Wörter oder Begriffe ausgerichtet wird (kontextbezogenes Biasing).

seit JavaScript Experimentell: nur neuere Chromium-Versionen, kein Kategorie: webapi

Signatur

SpeechRecognition.phrases

Beschreibung

Mit der Eigenschaft phrases eines SpeechRecognition-Objekts gibst du der Spracherkennung eine Liste von Begriffen vor, die in deinem Anwendungskontext wahrscheinlich vorkommen. Das nennt man kontextbezogenes Biasing. Jeder Eintrag ist ein SpeechRecognitionPhrase-Objekt. Es besteht aus einem Text (phrase) und einem Gewichtungsfaktor (boost). Je höher der boost-Wert, desto eher erkennt die Engine genau diese Phrase und nicht ein ähnlich klingendes Wort.

Das hilft vor allem bei Fachbegriffen, Produktnamen, Eigennamen oder Abkürzungen, die ein allgemeines Sprachmodell selten oder falsch erkennt. Beispiele sind Medikamentennamen in einer Medizin-App, Artikelbezeichnungen in einem Shop oder Befehle in einer Sprachsteuerung. Die Phrasen legst du fest, bevor du start() aufrufst. Änderungen während einer laufenden Sitzung wirken erst ab der nächsten Sitzung.

Laut Spezifikation funktioniert Biasing derzeit vor allem mit der Erkennung auf dem Gerät (processLocally = true). Unterstützt der Erkennungsdienst kein Biasing und ist phrases nicht leer, löst ein Aufruf von start() ein error-Ereignis mit dem Fehlercode "phrases-not-supported" aus. Standardmäßig ist das Array leer, es findet also kein Biasing statt.

Parameter

Name Typ Default Beschreibung
$value Array<SpeechRecognitionPhrase> [] (leeres Array) Beim Setzen: ein Array von SpeechRecognitionPhrase-Objekten, erzeugt mit new SpeechRecognitionPhrase(phrase, boost). boost ist optional, Standardwert 1.0, laut Spezifikation erlaubt von 0.0 bis 10.0.

Rückgabewert

Typ
Array<SpeechRecognitionPhrase>
Beschreibung
Die aktuell gesetzten Phrasen für das Biasing. Ohne Konfiguration ist das Array leer.

Beispiele

Fachbegriffe für eine Medizin-App vorgeben

const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.processLocally = true; // Biasing braucht meist Erkennung auf dem Gerät

recognition.phrases = [
  new SpeechRecognitionPhrase('Ibuprofen', 5.0),
  new SpeechRecognitionPhrase('Metformin', 5.0),
  new SpeechRecognitionPhrase('Blutdruckmessung') // boost = 1.0
];

console.log(recognition.phrases.map(p => `${p.phrase} (${p.boost})`));

recognition.addEventListener('result', (event) => {
  console.log('Erkannt:', event.results[0][0].transcript);
});

recognition.start();
["Ibuprofen (5)", "Metformin (5)", "Blutdruckmessung (1)"]

Verfügbarkeit prüfen und Modell installieren

const setupRecognition = async () => {
  const options = { langs: ['de-DE'], processLocally: true };
  const status = await SpeechRecognition.available(options);

  if (status === 'unavailable') {
    console.warn('Erkennung auf dem Gerät nicht verfügbar – kein Biasing möglich.');
    return null;
  }
  if (status !== 'available') {
    // 'downloadable' oder 'downloading'
    await SpeechRecognition.install(options);
  }

  const recognition = new SpeechRecognition();
  recognition.lang = 'de-DE';
  recognition.processLocally = true;
  recognition.phrases = [
    new SpeechRecognitionPhrase('Warenkorb', 3.0),
    new SpeechRecognitionPhrase('Zur Kasse', 3.0)
  ];
  return recognition;
};

const recognition = await setupRecognition();
recognition?.start();

Fehler „phrases-not-supported“ abfangen und ohne Biasing weitermachen

const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.phrases = [new SpeechRecognitionPhrase('programmierung.net', 8.0)];

recognition.addEventListener('error', (event) => {
  if (event.error === 'phrases-not-supported') {
    console.warn('Biasing nicht unterstützt – neuer Versuch ohne Phrasen.');
    recognition.phrases = [];
    recognition.start();
  }
});

recognition.start();
Biasing nicht unterstützt – neuer Versuch ohne Phrasen.

// Wichtig · Fallstricke

  • Experimentell: phrases und SpeechRecognitionPhrase gibt es bisher nur in neueren Chromium-Browsern. Firefox und Safari unterstützen sie nicht. Prüfe die Unterstützung vorher, z. B. mit 'phrases' in SpeechRecognition.prototype und typeof SpeechRecognitionPhrase !== 'undefined'.
  • Präfix: Ältere Chromium-Versionen kennen nur webkitSpeechRecognition. Dort fehlt phrases häufig ganz.
  • Gerät vs. Server: Biasing ist meist an processLocally = true gebunden. Wird es nicht unterstützt, meldet start() das Fehler-Ereignis "phrases-not-supported".
  • Wertebereich: boost-Werte außerhalb von 0.0–10.0 bzw. ein leerer Phrasentext lösen laut Spezifikation beim Erzeugen des SpeechRecognitionPhrase-Objekts einen Fehler aus.
  • Nicht übertreiben: Viele Phrasen mit sehr hohem boost verschlechtern die Erkennung normaler Sprache, weil die Engine dann ähnlich klingende Wörter fälschlich als Phrase erkennt. Nimm moderate Werte und nur wirklich relevante Begriffe.
  • Zeitpunkt: Setze die Phrasen vor start(). Änderungen während einer laufenden Sitzung wirken nicht sofort.