Start · Sprachen · JavaScript · Referenz · SpeechSynthesis.paused

SpeechSynthesis.paused

Eigenschaft

Schreibgeschützter boolescher Wert: <code>true</code>, wenn die Sprachausgabe von <code>speechSynthesis</code> gerade pausiert ist, sonst <code>false</code>.

seit JavaScript Baseline: alle modernen Browser (seit ca. 2018) Kategorie: webapi

Signatur

SpeechSynthesis.paused

Beschreibung

Die schreibgeschützte Eigenschaft paused des globalen SpeechSynthesis-Objekts (window.speechSynthesis) zeigt an, ob die Sprachausgabe gerade pausiert ist. Sie wird true, sobald speechSynthesis.pause() aufgerufen wurde. Nach resume() oder cancel() ist sie wieder false.

Wichtig: paused bezieht sich auf das gesamte Sprachausgabe-Objekt, nicht auf eine einzelne Äußerung (SpeechSynthesisUtterance). Die Eigenschaft kann auch true sein, wenn die Warteschlange leer ist. Weitere Äußerungen, die man in diesem Zustand mit speak() einreiht, werden erst nach resume() gesprochen.

Typische Anwendungsfälle sind Umschalt-Buttons für Wiedergabe und Pause in Vorlese-Funktionen, Barrierefreiheits-Werkzeuge oder Sprachassistenten. Oft fragt man die Eigenschaft zusammen mit speaking und pending ab, um den vollständigen Zustand der Ausgabe zu kennen.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn speechSynthesis pausiert ist, sonst false.

Beispiele

Zustand nach pause() und resume() prüfen

const synth = window.speechSynthesis;
const utterance = new SpeechSynthesisUtterance('Dies ist ein längerer Beispieltext zum Vorlesen.');
synth.speak(utterance);

setTimeout(() => {
  synth.pause();
  console.log('Pausiert:', synth.paused);

  setTimeout(() => {
    synth.resume();
    console.log('Pausiert:', synth.paused);
  }, 1000);
}, 500);
Pausiert: true Pausiert: false

Umschalt-Button für Wiedergabe und Pause

const synth = window.speechSynthesis;
const button = document.querySelector('#toggle');
const text = document.querySelector('#artikel').textContent;

button.addEventListener('click', () => {
  if (synth.paused) {
    synth.resume();
    button.textContent = 'Pause';
  } else if (synth.speaking) {
    synth.pause();
    button.textContent = 'Fortsetzen';
  } else {
    const u = new SpeechSynthesisUtterance(text);
    u.lang = 'de-DE';
    u.addEventListener('end', () => { button.textContent = 'Vorlesen'; });
    synth.speak(u);
    button.textContent = 'Pause';
  }
});

Gesamtzustand der Sprachausgabe ermitteln

const getSpeechState = () => {
  const { paused, speaking, pending } = window.speechSynthesis;
  if (paused) return 'pausiert';
  if (speaking) return 'spricht';
  if (pending) return 'wartet';
  return 'inaktiv';
};

console.log(getSpeechState());
inaktiv

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie speechSynthesis.paused = true hat keine Wirkung. Zum Pausieren nutzt man pause(), zum Fortsetzen resume().
  • Pausiert ohne Warteschlange: Wer pause() aufruft, während nichts gesprochen wird, setzt trotzdem paused = true. Später eingereihte Äußerungen bleiben dann stumm, bis resume() kommt. Ein Aufruf von cancel() vor speak() sorgt für einen sauberen Ausgangszustand.
  • Browser-Unterschiede: Die Eigenschaft ist in allen modernen Browsern vorhanden. In Chrome unter Android und in einigen Linux-Builds funktioniert pause() aber nur eingeschränkt oder gar nicht. Der Wert von paused passt dann nicht immer zum tatsächlichen Zustand. Chrome auf dem Desktop bricht lange Äußerungen außerdem nach rund 15 Sekunden ab.
  • Vor der Nutzung sollte man die Unterstützung prüfen: 'speechSynthesis' in window.
  • Für Ereignisse zu einzelnen Äußerungen gibt es die Events pause und resume auf SpeechSynthesisUtterance. Deren Zeitpunkt kann je nach Browser leicht vom Wert von paused abweichen.