Signatur
Beschreibung
Mit der Eigenschaft lang legst du fest, in welcher Sprache die Spracherkennung die Eingaben vom Mikrofon auswerten soll. Du gibst dazu ein gültiges BCP-47-Sprachtag als Zeichenkette an, z. B. "de-DE", "de-AT", "en-US" oder "fr-FR". Die Erkennungsqualität hängt stark davon ab, ob diese Sprache zur tatsächlich gesprochenen Sprache passt.
Setzt du lang nicht (leere Zeichenkette), nimmt der Browser das lang-Attribut des Wurzelelements (<html lang="…">) oder, wenn das fehlt, die Spracheinstellung des Nutzers bzw. Browsers. Wer sich darauf nicht verlassen will, sollte lang immer ausdrücklich setzen.
Setze die Eigenschaft vor dem Aufruf von start(). Änderst du sie während einer laufenden Sitzung, gilt der neue Wert in der Regel erst beim nächsten Start. Zum Umschalten der Sprache beendest du die Erkennung mit stop() oder abort(), setzt lang neu und rufst start() wieder auf.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | "" (leer → Sprache des Dokuments bzw. Nutzers) | Beim Setzen: ein BCP-47-Sprachtag wie "de-DE" oder "en-GB". |
Rückgabewert
Beispiele
Deutsche Spracherkennung einrichten
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
if (!SpeechRecognition) {
console.warn('Spracherkennung wird in diesem Browser nicht unterstützt.');
} else {
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.interimResults = false;
recognition.addEventListener('result', (event) => {
const text = event.results[0][0].transcript;
console.log(`Erkannt (${recognition.lang}):`, text);
});
console.log(recognition.lang);
recognition.start();
}
Sprache aus dem Dokument oder Browser übernehmen
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
// Fallback-Kette: <html lang> → Browsersprache → Deutsch
recognition.lang = document.documentElement.lang || navigator.language || 'de-DE';
console.log('Erkennungssprache:', recognition.lang);
Sprache per Auswahlliste umschalten
// HTML: <select id="sprache"><option value="de-DE">Deutsch</option><option value="en-US">Englisch</option></select>
// <button id="start">Diktat starten</button>
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
const auswahl = document.querySelector('#sprache');
let laeuft = false;
recognition.addEventListener('start', () => { laeuft = true; });
recognition.addEventListener('end', () => { laeuft = false; });
recognition.addEventListener('result', (e) => {
console.log(e.results[0][0].transcript);
});
auswahl.addEventListener('change', () => {
// Laufende Sitzung beenden – neue Sprache gilt erst beim nächsten start()
if (laeuft) recognition.abort();
recognition.lang = auswahl.value;
console.log('Neue Sprache:', recognition.lang);
});
document.querySelector('#start').addEventListener('click', () => {
recognition.lang = auswahl.value;
recognition.start();
});
// Wichtig · Fallstricke
- Browserunterstützung: Chrome und Edge bieten die API nur mit Präfix als
webkitSpeechRecognitionan, Safari ab 14.1. Firefox unterstütztSpeechRecognitionstandardmäßig nicht. Prüfe deshalb vorher, ob die API vorhanden ist. - Keine Prüfung des Werts: Ungültige oder nicht unterstützte Sprachtags lösen beim Setzen keinen Fehler aus. Das Problem zeigt sich erst beim Erkennen, oft als
error-Ereignis mitevent.error === "language-not-supported"oder durch schlechte Ergebnisse. - Erst vor
start()setzen: Änderungen während einer laufenden Sitzung werden meist nicht übernommen. - Nur eine Sprache pro Sitzung: Gemischtsprachige Eingaben werden schlecht erkannt. Lass Nutzer die Sprache deshalb ausdrücklich wählen.
- Datenschutz: In Chrome wird der Ton zur Auswertung an Google-Server geschickt. Die Erkennung braucht daher eine Internetverbindung, einen sicheren Kontext (HTTPS) und die Freigabe des Mikrofons.