Start · Sprachen · JavaScript · Referenz · SpeechSynthesisUtterance.rate

SpeechSynthesisUtterance.rate

Eigenschaft

Liest oder setzt die Sprechgeschwindigkeit einer <code>SpeechSynthesisUtterance</code> als Faktor zwischen <code>0.1</code> und <code>10</code> (Standard: <code>1</code>).

seit JavaScript Web Speech API — Baseline: alle modernen Browser ( Kategorie: webapi

Signatur

SpeechSynthesisUtterance.rate

Beschreibung

Die Eigenschaft rate legt fest, wie schnell die Sprachsynthese eine Äußerung (SpeechSynthesisUtterance) spricht. Der Wert ist ein Multiplikator, der sich auf die normale Geschwindigkeit der gewählten Stimme bezieht: 1 ist das Standardtempo, 2 doppelt so schnell, 0.5 halb so schnell. Gültig sind Werte von 0.1 bis 10.

Typische Anwendungsfälle sind Barrierefreiheit (Nutzer mit Screenreader-Erfahrung bevorzugen oft ein höheres Tempo), Sprachlern-Anwendungen (langsames, deutliches Vorlesen) und Vorlesefunktionen für Artikel mit einem Geschwindigkeitsregler.

Wichtig: Die Eigenschaft muss vor dem Aufruf von speechSynthesis.speak() gesetzt werden. Eine Änderung während der laufenden Ausgabe wirkt sich in den meisten Browsern nicht auf die aktuelle Äußerung aus. Die tatsächliche Geschwindigkeit hängt zudem von der Sprach-Engine und der Stimme ab. Manche Engines unterstützen nur einen engeren Bereich und begrenzen größere Werte stillschweigend.

Parameter

Name Typ Default Beschreibung
$value number 1 Beim Setzen: Geschwindigkeitsfaktor zwischen 0.1 (sehr langsam) und 10 (sehr schnell). 1 ist das normale Tempo der Stimme.

Rückgabewert

Typ
number
Beschreibung
Der aktuell eingestellte Geschwindigkeitsfaktor als Gleitkommazahl. Standardwert ist 1.

Beispiele

Text langsam vorlesen

const utterance = new SpeechSynthesisUtterance('Guten Morgen, wie geht es dir?');
utterance.lang = 'de-DE';
utterance.rate = 0.7; // etwas langsamer als normal

console.log(utterance.rate);
speechSynthesis.speak(utterance);
0.699999988079071

Geschwindigkeitsregler für eine Vorlesefunktion

// HTML: <input type="range" id="rate" min="0.5" max="2" step="0.1" value="1">
//       <button id="vorlesen">Vorlesen</button>
const rateInput = document.querySelector('#rate');
const button = document.querySelector('#vorlesen');

button.addEventListener('click', () => {
  speechSynthesis.cancel(); // laufende Ausgabe beenden
  const text = document.querySelector('article').textContent;
  const utterance = new SpeechSynthesisUtterance(text);
  utterance.lang = 'de-DE';
  utterance.rate = Number(rateInput.value);
  speechSynthesis.speak(utterance);
});

Tempo während der Wiedergabe ändern (Neustart nötig)

let current = null;

const speakWithRate = (text, rate) => {
  speechSynthesis.cancel();
  current = new SpeechSynthesisUtterance(text);
  current.rate = Math.min(10, Math.max(0.1, rate)); // auf gültigen Bereich begrenzen
  current.addEventListener('start', () => console.log(`Spreche mit Tempo ${current.rate}`));
  speechSynthesis.speak(current);
};

speakWithRate('Dies ist ein Test.', 1);
// Später schneller: neu starten statt current.rate zu ändern
setTimeout(() => speakWithRate('Dies ist ein Test.', 1.8), 1500);
Spreche mit Tempo 1 Spreche mit Tempo 1.7999999523162842

// Wichtig · Fallstricke

  • Kein Effekt während der Ausgabe: Wenn du rate nach speechSynthesis.speak() änderst, wirkt sich das auf die laufende Äußerung meist nicht aus. Beende sie mit speechSynthesis.cancel() und starte sie neu.
  • Werte außerhalb des Bereichs: Laut Spezifikation sind nur Werte von 0.1 bis 10 gültig. Je nach Browser wird bei anderen Werten ein Fehler geworfen oder der Wert stillschweigend begrenzt. Begrenze ihn deshalb selbst.
  • Engine-Abhängigkeit: Viele Stimmen (vor allem Netzwerk-Stimmen in Chrome, z. B. „Google Deutsch“) unterstützen praktisch nur etwa 0.1 bis 2. Höhere Werte klingen dann nicht schneller.
  • Gleitkomma-Genauigkeit: Der Wert wird intern als float gespeichert. Beim Auslesen erhältst du daher z. B. 0.699999988079071 statt 0.7.
  • Browser-Kompatibilität: Die Sprachsynthese wird von allen modernen Browsern unterstützt. Welche Stimmen und welches Verhalten es gibt, hängt aber vom Betriebssystem ab. Prüfe vorher mit 'speechSynthesis' in window, ob die API verfügbar ist.