Start · Sprachen · JavaScript · Referenz · SpeechRecognition.lang

SpeechRecognition.lang

Eigenschaft

Liest oder setzt die Sprache (BCP-47-Sprachtag, z. B. <code>"de-DE"</code>), in der eine <code>SpeechRecognition</code>-Instanz gesprochene Eingaben erkennt.

seit JavaScript Web Speech API – Chrome/Edge (mit Präfix webkitSpe Kategorie: webapi

Signatur

SpeechRecognition.lang

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

Typ
string
Beschreibung
Das aktuell eingestellte Sprachtag. Ist nichts gesetzt, eine leere Zeichenkette.

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();
}
de-DE Erkannt (de-DE): hallo welt

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);
Erkennungssprache: de-DE

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();
});
Neue Sprache: en-US

// Wichtig · Fallstricke

  • Browserunterstützung: Chrome und Edge bieten die API nur mit Präfix als webkitSpeechRecognition an, Safari ab 14.1. Firefox unterstützt SpeechRecognition standardmäß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 mit event.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.