Signatur
Beschreibung
Die Eigenschaft phrase eines SpeechRecognitionPhrase-Objekts ist schreibgeschützt. Sie enthält den Text, den du beim Erzeugen mit new SpeechRecognitionPhrase(phrase, boost) übergeben hast. Solche Phrasen landen im Array SpeechRecognition.phrases. Dort sagen sie der Erkennungs-Engine, welche Begriffe im aktuellen Kontext wahrscheinlich vorkommen. Das nennt man kontextuelles Biasing (gezielte Bevorzugung bestimmter Begriffe).
Nützlich ist das vor allem bei Fachbegriffen, Produkt- und Eigennamen, Abkürzungen oder ungewöhnlichen Schreibweisen, die ein allgemeines Sprachmodell oft falsch versteht. Beispiele sind Medikamentennamen, Artikelnummern oder Namen von Personen im Adressbuch.
Wie stark eine Phrase bevorzugt wird, legt die zugehörige Eigenschaft boost fest. phrase liest du typischerweise aus, um die aktuelle Bias-Liste anzuzeigen, zu prüfen oder zu protokollieren. Ändern kannst du den Wert nicht. Für einen anderen Text erzeugst du ein neues SpeechRecognitionPhrase-Objekt und ersetzt damit das alte im Array.
Rückgabewert
Beispiele
Phrase anlegen und auslesen
const phrase = new SpeechRecognitionPhrase('Ibuprofen', 5.0);
console.log(phrase.phrase); // Text der Phrase
console.log(phrase.boost); // Gewichtung
Fachbegriffe für die Erkennung setzen und protokollieren
const SR = window.SpeechRecognition ?? window.webkitSpeechRecognition;
if (SR && 'SpeechRecognitionPhrase' in window) {
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.processLocally = true; // Biasing wird oft nur lokal unterstützt
const begriffe = ['Kubernetes', 'WebAssembly', 'TypeScript'];
recognition.phrases = begriffe.map((b) => new SpeechRecognitionPhrase(b, 3.0));
// Aktuelle Bias-Liste ausgeben
recognition.phrases.forEach((p) => console.log(`${p.phrase} (Boost ${p.boost})`));
recognition.onresult = (e) => console.log('Erkannt:', e.results[0][0].transcript);
recognition.onerror = (e) => console.error('Fehler:', e.error);
recognition.start();
} else {
console.warn('Kontextuelles Biasing wird nicht unterstützt.');
}
Phrase „ändern“ durch Ersetzen des Objekts
const liste = [
new SpeechRecognitionPhrase('Müller', 2.0),
new SpeechRecognitionPhrase('Schmitt', 2.0)
];
// phrase ist schreibgeschützt – deshalb neues Objekt erzeugen
const index = liste.findIndex((p) => p.phrase === 'Schmitt');
liste[index] = new SpeechRecognitionPhrase('Schmidt', liste[index].boost);
console.log(liste.map((p) => p.phrase));
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
p.phrase = 'x'wird im normalen Modus stillschweigend ignoriert. Im Strict Mode wirft sie einenTypeError. Für einen anderen Text erzeugst du ein neues Objekt. - Experimentell: Kontextuelles Biasing ist eine neue Ergänzung der Web Speech API. Bislang unterstützen es nur neuere Chromium-Versionen, und dort oft nur bei lokaler Verarbeitung (
processLocally = true). Firefox und Safari unterstützen es derzeit nicht. Prüfe die Unterstützung vorher, etwa mit'SpeechRecognitionPhrase' in window. - Kann die Engine keine Phrasen verarbeiten, kann die Erkennung mit einem
error-Ereignis abbrechen, dessen Code"phrases-not-supported"lautet. Fange diesen Fall imonerror-Handler ab. - Ein Bias ist nur ein Hinweis und keine Garantie. Zu viele Phrasen oder zu hohe
boost-Werte (erlaubt sind 0.0–10.0) können die Erkennung anderer Wörter verschlechtern. - Phrasen können sensible Daten enthalten, zum Beispiel Kontaktnamen. Bei Erkennung über einen Server werden sie unter Umständen an einen Clouddienst übertragen.