Start · Sprachen · JavaScript · Referenz · SpeechRecognition.continuous

SpeechRecognition.continuous

Eigenschaft

Legt fest, ob eine <code>SpeechRecognition</code>-Sitzung nach dem ersten Ergebnis weiterläuft (<code>true</code>) oder nach einem einzelnen Ergebnis endet (<code>false</code>).

seit JavaScript Chrome 25+ (mit Präfix webkit), Edge 79+, Safari 1 Kategorie: webapi

Signatur

SpeechRecognition.continuous

Beschreibung

Die Eigenschaft continuous ist ein lesbarer und schreibbarer boolescher Wert der Web Speech API. Sie bestimmt, ob die Spracherkennung nach dem ersten erkannten Satz automatisch stoppt oder weiter zuhört und fortlaufend neue Ergebnisse liefert.

Der Standardwert ist false: Nach dem ersten endgültigen Ergebnis wird die Sitzung beendet und das Ereignis end ausgelöst. Das eignet sich für Sprachbefehle oder Suchfelder, bei denen nur eine kurze Eingabe erwartet wird. Mit true sammelt die Erkennung mehrere Ergebnisse in event.results. Das ist sinnvoll für Diktierfunktionen, Live-Untertitel oder Notizen-Apps.

Setzen Sie die Eigenschaft vor dem Aufruf von start(). Im kontinuierlichen Modus sollten Sie im result-Handler event.resultIndex auswerten, damit Sie nur neue Ergebnisse verarbeiten und die bereits bekannten nicht erneut. Häufig wird continuous zusammen mit interimResults verwendet, um Zwischenergebnisse schon während des Sprechens anzuzeigen.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn fortlaufend Ergebnisse geliefert werden, sonst false (Standardwert).

Beispiele

Einzelner Sprachbefehl (Standardverhalten)

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.continuous = false; // nach einem Ergebnis beenden

recognition.addEventListener('result', (event) => {
  const befehl = event.results[0][0].transcript.trim().toLowerCase();
  console.log('Befehl:', befehl);
});

recognition.addEventListener('end', () => console.log('Erkennung beendet'));

document.querySelector('#mic').addEventListener('click', () => recognition.start());
Befehl: licht an Erkennung beendet

Diktierfunktion mit kontinuierlicher Erkennung

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;

const ausgabe = document.querySelector('#text');
let endgueltig = '';

recognition.onresult = (event) => {
  let zwischen = '';
  // Nur neue Ergebnisse ab resultIndex verarbeiten
  for (let i = event.resultIndex; i < event.results.length; i++) {
    const text = event.results[i][0].transcript;
    if (event.results[i].isFinal) endgueltig += text + ' ';
    else zwischen += text;
  }
  ausgabe.textContent = endgueltig + zwischen;
};

document.querySelector('#start').onclick = () => recognition.start();
document.querySelector('#stop').onclick = () => recognition.stop();

Wert auslesen und Neustart bei Abbruch

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.continuous = true;
console.log(recognition.continuous);

let aktiv = true;
// Manche Browser beenden auch im continuous-Modus nach Stille
recognition.onend = () => {
  if (aktiv) recognition.start();
};

recognition.start();
// Später: aktiv = false; recognition.stop();
true

// Wichtig · Fallstricke

  • Browser-Unterstützung: Chrome und Edge bieten die Schnittstelle nur als webkitSpeechRecognition an. Firefox unterstützt sie standardmäßig nicht. Prüfen Sie deshalb immer, ob die Schnittstelle vorhanden ist.
  • Auch mit continuous = true beendet Chrome die Sitzung nach längerer Stille oder nach einigen Minuten, oft mit dem Fehler no-speech. Für eine dauerhafte Erkennung müssen Sie im end-Handler start() erneut aufrufen.
  • Ändern Sie den Wert, während die Erkennung läuft, wirkt er erst beim nächsten start().
  • In Chrome wird der Ton zur Erkennung an Google-Server geschickt. Das ist aus Datenschutzsicht wichtig, und ohne Netzwerk funktioniert die Erkennung nicht. Die Seite braucht außerdem einen sicheren Kontext (HTTPS) und die Freigabe des Mikrofons.
  • Werten Sie event.resultIndex aus. Sonst verarbeiten Sie im kontinuierlichen Modus dieselben Ergebnisse mehrfach.
  • Auf Android funktioniert continuous = true nur eingeschränkt: Ergebnisse können doppelt ankommen.