Signatur
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
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());
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();
// Wichtig · Fallstricke
- Browser-Unterstützung: Chrome und Edge bieten die Schnittstelle nur als
webkitSpeechRecognitionan. Firefox unterstützt sie standardmäßig nicht. Prüfen Sie deshalb immer, ob die Schnittstelle vorhanden ist. - Auch mit
continuous = truebeendet Chrome die Sitzung nach längerer Stille oder nach einigen Minuten, oft mit dem Fehlerno-speech. Für eine dauerhafte Erkennung müssen Sie imend-Handlerstart()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.resultIndexaus. Sonst verarbeiten Sie im kontinuierlichen Modus dieselben Ergebnisse mehrfach. - Auf Android funktioniert
continuous = truenur eingeschränkt: Ergebnisse können doppelt ankommen.