Signatur
Beschreibung
Die Methode resume() des Interfaces SpeechSynthesis hebt den Pausenzustand der Sprachsynthese auf. Wurde eine laufende Äußerung (SpeechSynthesisUtterance) vorher mit speechSynthesis.pause() angehalten, spricht die Engine an der unterbrochenen Stelle weiter. Danach werden auch die übrigen Äußerungen in der Warteschlange normal abgearbeitet.
Ist die Sprachausgabe gar nicht pausiert, hat der Aufruf keine Wirkung. Ob gerade pausiert ist, verrät die Eigenschaft speechSynthesis.paused. Beim Fortsetzen wird an der aktiven Äußerung das Ereignis resume ausgelöst (utterance.onresume bzw. addEventListener("resume", …)).
Typischer Einsatz sind Vorlesefunktionen mit Wiedergabe-/Pause-Schaltflächen, etwa für Barrierefreiheit, Artikel-Vorlesen oder Sprachassistenten. Der Pausenzustand gilt global für das ganze speechSynthesis-Objekt des Fensters, nicht für einzelne Äußerungen.
Beispiele
Pausieren und nach zwei Sekunden fortsetzen
const utterance = new SpeechSynthesisUtterance(
'Dies ist ein längerer Text, der kurz angehalten und dann fortgesetzt wird.'
);
utterance.lang = 'de-DE';
utterance.addEventListener('pause', () => console.log('Pausiert'));
utterance.addEventListener('resume', () => console.log('Fortgesetzt'));
speechSynthesis.speak(utterance);
setTimeout(() => speechSynthesis.pause(), 1500);
setTimeout(() => speechSynthesis.resume(), 3500);
Umschalt-Schaltfläche für eine Vorlesefunktion
const button = document.querySelector('#vorlesen');
const text = document.querySelector('article').textContent;
button.addEventListener('click', () => {
if (speechSynthesis.paused) {
speechSynthesis.resume();
button.textContent = 'Pause';
} else if (speechSynthesis.speaking) {
speechSynthesis.pause();
button.textContent = 'Weiter';
} else {
const u = new SpeechSynthesisUtterance(text);
u.lang = 'de-DE';
u.onend = () => { button.textContent = 'Vorlesen'; };
speechSynthesis.speak(u);
button.textContent = 'Pause';
}
});
Fortsetzen über die on-Property überwachen
const u = new SpeechSynthesisUtterance('Hallo Welt, wie geht es dir heute?');
u.onresume = (event) => {
console.log(`Fortgesetzt nach ${Math.round(event.elapsedTime)} ms, Zeichen ${event.charIndex}`);
};
speechSynthesis.speak(u);
speechSynthesis.pause();
// Nur fortsetzen, wenn wirklich pausiert
if (speechSynthesis.paused) {
speechSynthesis.resume();
}
// Wichtig · Fallstricke
- Uneinheitliches Verhalten zwischen Browsern: Unter Android (Chrome) wird
pause()teils alscancel()behandelt, sodassresume()nichts mehr fortsetzen kann. Auch die Ereignissepause/resumewerden nicht überall zuverlässig ausgelöst. - Chrome-Eigenheit: In Chrome auf dem Desktop bricht die Ausgabe langer Texte nach etwa 15 Sekunden manchmal ab. Als Umgehung ruft man oft in regelmäßigen Abständen
pause()und direkt danachresume()auf. Sauberer ist es, den Text in kurze Äußerungen aufzuteilen. - Der Pausenzustand kann auch vor
speak()bestehen. IstspeechSynthesis.pauseddanntrue, beginnt keine neue Äußerung zu sprechen, bisresume()aufgerufen wird. Im Zweifel vorspeak()einmalresume()aufrufen. - Die Stimmen und die tatsächliche Wiedergabe hängen vom Betriebssystem ab. Die Unterstützung lässt sich mit
'speechSynthesis' in windowprüfen.