Signatur
Beschreibung
Die Eigenschaft unspokenPunctuation der Schnittstelle SpeechRecognition legt fest, ob die Erkennungs-Engine Satzzeichen selbst ableiten soll. Grundlage dafür sind die natürlichen Sprechmuster des Nutzers, also Pausen, Satzmelodie und Betonung. Ist sie auf true gesetzt, kann das Transkript Punkte, Kommas oder Fragezeichen enthalten, obwohl der Nutzer nicht „Punkt“ oder „Komma“ gesagt hat.
Das ist vor allem bei Diktierfunktionen, Notiz-Apps, Chat-Eingaben und Untertiteln nützlich. Ohne automatische Zeichensetzung liefert die Erkennung oft einen langen, ungegliederten Textblock, den man mühsam nachbearbeiten muss. Für Sprachbefehle („Licht an“, „nächste Seite“) ist die Option dagegen eher hinderlich: Ein angehängter Punkt oder ein Großbuchstabe am Satzanfang kann einen exakten Textvergleich scheitern lassen.
Setze die Eigenschaft vor dem Aufruf von start(). Wird sie während einer laufenden Sitzung geändert, ist nicht garantiert, dass die Änderung wirkt. Wie gut die Zeichensetzung ausfällt, hängt stark von der Engine, der eingestellten Sprache (lang) und davon ab, ob lokal oder auf einem Server erkannt wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | boolean | false (vermutlich; von der Implementierung abhängig) | Beim Setzen: true schaltet die automatische Zeichensetzung ein, false schaltet sie aus. Andere Werte werden in einen booleschen Wert umgewandelt. |
Beispiele
Diktierfunktion mit automatischer Zeichensetzung
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
if (!SR) {
console.warn('Web Speech API wird nicht unterstützt.');
} else {
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = false;
// Nur setzen, wenn der Browser die Eigenschaft kennt
if ('unspokenPunctuation' in recognition) {
recognition.unspokenPunctuation = true;
}
recognition.addEventListener('result', (event) => {
const last = event.results[event.results.length - 1];
console.log('Diktat:', last[0].transcript);
});
recognition.start();
}
Für Sprachbefehle abschalten und Text normalisieren
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
if ('unspokenPunctuation' in recognition) {
recognition.unspokenPunctuation = false;
}
// Zur Sicherheit trotzdem normalisieren
const normalize = (text) =>
text.toLowerCase().replace(/[.,!?;:]/g, '').trim();
const commands = {
'licht an': () => console.log('Licht wird eingeschaltet'),
'licht aus': () => console.log('Licht wird ausgeschaltet')
};
recognition.onresult = (event) => {
const spoken = normalize(event.results[0][0].transcript);
(commands[spoken] ?? (() => console.log('Unbekannt:', spoken)))();
};
recognition.start();
Unterstützung prüfen und aktuellen Wert auslesen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const supportsUnspokenPunctuation = () => {
if (!SR) return false;
return 'unspokenPunctuation' in SR.prototype;
};
console.log('Unterstützt:', supportsUnspokenPunctuation());
if (supportsUnspokenPunctuation()) {
const rec = new SR();
console.log('Standardwert:', rec.unspokenPunctuation);
}
// Wichtig · Fallstricke
- Experimentell: Die Eigenschaft ist eine neue Erweiterung der Web Speech API und wird bisher kaum unterstützt. Prüfe die Unterstützung immer mit
'unspokenPunctuation' in recognition. Browser, die sie nicht kennen, legen beim Zuweisen stillschweigend eine normale JavaScript-Eigenschaft an, die keine Wirkung hat. - Präfix: Chromium-basierte Browser und Safari stellen den Konstruktor teils nur als
webkitSpeechRecognitionbereit. Firefox unterstütztSpeechRecognitionstandardmäßig nicht. - Keine Garantie: Auch bei
truekann die Engine Satzzeichen weglassen oder falsch setzen, besonders bei Zwischenergebnissen (interimResults) und seltenen Sprachen. Umgekehrt können manche Engines auch beifalseSatzzeichen oder Großschreibung liefern. Transkripte für Befehle solltest du deshalb immer normalisieren. - Zeitpunkt: Setze den Wert vor
start(). Änderungen während einer laufenden Sitzung werden eventuell erst beim nächsten Start übernommen. - Datenschutz: Je nach Browser wird Audio zur Erkennung an einen Server übertragen. Die Spracherkennung erfordert eine sichere Umgebung (HTTPS) und die Freigabe des Mikrofons.