Start · Sprachen · JavaScript · Referenz · SpeechRecognitionPhrase

SpeechRecognitionPhrase

Schnittstelle

Beschreibt einen Begriff samt Gewichtung, den die Spracherkennung der Web Speech API bevorzugt erkennen soll (kontextuelle Bevorzugung).

seit JavaScript Experimentell: bisher nur Chromium (ab ca. Chrome Kategorie: webapi

Signatur

interface SpeechRecognitionPhrase

Beschreibung

Das Interface SpeechRecognitionPhrase gehört zur Web Speech API. Ein Objekt dieses Typs steht für einen einzelnen Ausdruck, etwa einen Fachbegriff, Produktnamen oder Eigennamen, und für einen Gewichtungsfaktor (boost). Solche Ausdrücke übergibt man über die Eigenschaft SpeechRecognition.phrases an die Spracherkennung. Die Erkennung bevorzugt diese Wörter dann, wenn sie ähnlich klingende Alternativen gegeneinander abwägt. Dieses Verfahren heißt kontextuelle Bevorzugung (engl. contextual biasing).

Das lohnt sich überall dort, wo das allgemeine Sprachmodell schwächelt: bei Namen in einem Adressbuch, Medikamentennamen, Befehlen in einer Sprachsteuerung oder Markennamen. Ein Beispiel: Ohne Bevorzugung versteht die Erkennung „Kubernetes“ oft als „Kuba Netties“. Hinterlegt man den Begriff als Phrase mit höherem boost, sinkt die Fehlerquote deutlich.

Man erzeugt ein Objekt mit new SpeechRecognitionPhrase(phrase, boost). Beide Eigenschaften, phrase und boost, sind danach schreibgeschützt. Um die Liste zu ändern, weist man recognition.phrases ein neues Array zu, und zwar vor dem Aufruf von start().

Bisher unterstützen Browser die kontextuelle Bevorzugung in der Praxis nur bei der Erkennung auf dem Gerät (processLocally = true). Kann die Erkennung keine Phrasen verarbeiten, löst sie ein error-Ereignis mit dem Fehlercode "phrases-not-supported" aus.

Parameter

Name Typ Default Beschreibung
$phrase Pflicht string Das Wort oder die Wortfolge, die bevorzugt erkannt werden soll. Später lesbar über die schreibgeschützte Eigenschaft phrase.
$boost number 1.0 Gewichtung von 0.0 bis 10.0 (Grenzen eingeschlossen). Je höher der Wert, desto stärker wird der Ausdruck bevorzugt. Liegt der Wert außerhalb dieses Bereichs, wirft der Konstruktor einen Fehler. Später lesbar über die schreibgeschützte Eigenschaft boost.

Rückgabewert

Typ
SpeechRecognitionPhrase
Beschreibung
Ein neues Phrasen-Objekt mit den schreibgeschützten Eigenschaften phrase (string) und boost (number). Man übergibt es in einem Array an SpeechRecognition.phrases.

Beispiele

Phrase erzeugen und Eigenschaften lesen

if ('SpeechRecognitionPhrase' in window) {
  const phrase = new SpeechRecognitionPhrase('Kubernetes', 5.0);
  console.log(phrase.phrase, phrase.boost);

  // Ohne zweites Argument gilt boost = 1.0
  const standard = new SpeechRecognitionPhrase('Docker');
  console.log(standard.boost);
} else {
  console.log('Kontextuelle Bevorzugung wird nicht unterstützt');
}
Kubernetes 5 1

Fachbegriffe an die Spracherkennung auf dem Gerät übergeben

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

const begriffe = [
  ['Ibuprofen', 4.0],
  ['Paracetamol', 4.0],
  ['Dr. Wojciechowski', 8.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('Phrasen werden hier nicht unterstützt – Start ohne Bevorzugung');
    recognition.phrases = [];
  }
});

recognition.start();
Erkannt: Dr. Wojciechowski verschreibt Ibuprofen

Ungültigen boost-Wert abfangen

const erstellePhrase = (text, boost) => {
  try {
    return new SpeechRecognitionPhrase(text, boost);
  } catch (err) {
    console.error(`Ungültige Phrase "${text}":`, err.name);
    return null;
  }
};

erstellePhrase('Mehrwertsteuer', 12); // außerhalb von 0.0–10.0
Ungültige Phrase "Mehrwertsteuer": SyntaxError

Phrasen je nach Kontext austauschen

const Recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new Recognition();
recognition.processLocally = true;

const kontexte = {
  musik: ['Rammstein', 'Die Ärzte', 'Kraftklub'],
  navigation: ['Hauptbahnhof', 'Alexanderplatz', 'Ostkreuz']
};

const starteMitKontext = (name) => {
  // phrases ist nicht veränderbar im Sinne von push – neues Array zuweisen
  recognition.phrases = kontexte[name].map((t) => new SpeechRecognitionPhrase(t, 3));
  recognition.start();
};

starteMitKontext('navigation');
console.log(recognition.phrases.map((p) => p.phrase));
["Hauptbahnhof", "Alexanderplatz", "Ostkreuz"]

// Wichtig · Fallstricke

  • Experimentell: Das Interface ist bisher nur in Chromium-basierten Browsern verfügbar, und das erst seit kurzem. Firefox und Safari unterstützen es nicht. Vor der Nutzung sollte man mit 'SpeechRecognitionPhrase' in window prüfen, ob es vorhanden ist.
  • Nur auf dem Gerät: Chrome wertet Phrasen bisher nur bei processLocally = true aus. Das lokale Sprachpaket muss dafür vorhanden sein oder zuerst installiert werden, siehe SpeechRecognition.available() und SpeechRecognition.install(). Andernfalls gibt es ein error-Ereignis mit "phrases-not-supported".
  • Wertebereich: boost muss zwischen 0.0 und 10.0 liegen, sonst wirft der Konstruktor einen Fehler. Sehr hohe Werte können dazu führen, dass die Erkennung die bevorzugten Wörter auch dort „hört“, wo sie gar nicht gesagt wurden. Am besten beginnt man mit moderaten Werten zwischen 1 und 5.
  • Schreibgeschützt: phrase und boost lassen sich nach dem Erzeugen nicht ändern. Man legt stattdessen neue Objekte an und weist recognition.phrases neu zu, und zwar vor start().
  • Die Spracherkennung setzt einen sicheren Kontext (HTTPS) und die Mikrofonfreigabe durch den Nutzer voraus.