Signatur
Beschreibung
Mit der Eigenschaft pitch einer SpeechSynthesisUtterance steuerst du die Tonhöhe der synthetisierten Stimme. Der Wert ist eine Gleitkommazahl im Bereich 0 bis 2. 1 entspricht der normalen Tonhöhe der gewählten Stimme, kleinere Werte klingen tiefer, größere höher.
Sinnvoll ist pitch zum Beispiel, wenn du in Vorlese-Funktionen verschiedene Sprecher oder Rollen unterscheiden willst (etwa Dialoge in Lern-Apps oder Spielen), wenn du Hinweise stärker betonen möchtest oder wenn Nutzer die Stimme in einer Barrierefreiheits-Einstellung selbst anpassen sollen.
Wichtig: Der Wert muss vor dem Aufruf von speechSynthesis.speak() gesetzt werden. Änderungen an einer Äußerung, die bereits gesprochen wird, wirken sich in der Regel nicht mehr aus. Wie stark sich die Tonhöhe tatsächlich ändert, hängt von der Sprach-Engine und der Stimme (voice) ab – manche Stimmen, vor allem Netzwerk-/Cloud-Stimmen, ignorieren pitch teilweise oder vollständig.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | number | 1 | Neue Tonhöhe beim Setzen, von 0 (tiefste) bis 2 (höchste). Werte außerhalb des Bereichs werden ignoriert bzw. vom Browser begrenzt. |
Rückgabewert
0 und 2; 1, falls nie gesetzt.Beispiele
Text mit höherer Stimme vorlesen
const utterance = new SpeechSynthesisUtterance('Willkommen bei programmierung.net!');
utterance.lang = 'de-DE';
utterance.pitch = 1.5; // etwas höher als normal
console.log(utterance.pitch);
speechSynthesis.speak(utterance);
Dialog mit zwei unterschiedlichen Sprechern
const speak = (text, pitch) => {
const u = new SpeechSynthesisUtterance(text);
u.lang = 'de-DE';
u.pitch = pitch;
speechSynthesis.speak(u); // Äußerungen werden in die Warteschlange gestellt
};
speak('Hallo, wie geht es dir?', 0.6); // tiefe Stimme
speak('Danke, sehr gut!', 1.7); // hohe Stimme
Tonhöhe per Schieberegler einstellen
// HTML: <input type="range" id="pitch" min="0" max="2" step="0.1" value="1">
// <button id="play">Vorlesen</button>
const slider = document.querySelector('#pitch');
const button = document.querySelector('#play');
button.addEventListener('click', () => {
speechSynthesis.cancel(); // laufende Ausgabe abbrechen
const u = new SpeechSynthesisUtterance('Das ist ein Test der Tonhöhe.');
u.pitch = Number(slider.value);
u.addEventListener('start', () => console.log(`Spreche mit pitch = ${u.pitch}`));
speechSynthesis.speak(u);
});
Standardwert prüfen
const u = new SpeechSynthesisUtterance('Test');
console.log(u.pitch);
// Wichtig · Fallstricke
- Vor
speak()setzen: Nachträgliche Änderungen an einer bereits laufenden Äußerung haben meist keine Wirkung. Für eine neue TonhöhespeechSynthesis.cancel()aufrufen und eine neue Äußerung erzeugen. - Wertebereich: Nur
0bis2ist gültig. Außerhalb liegende Werte werden je nach Browser ignoriert oder begrenzt – Eingaben besser selbst mitMath.min(2, Math.max(0, wert))absichern. Bei0fallen manche Engines auf den Standardwert zurück. - Stimmenabhängig: Die tatsächliche Wirkung hängt von der Sprach-Engine ab. In Chrome ignorieren z. B. die „Google“-Netzwerkstimmen
pitchteils; lokale Systemstimmen reagieren meist zuverlässiger. - Kompatibilität: Die Web Speech API (Synthese) wird von allen aktuellen Browsern unterstützt, ist aber nicht in Node.js verfügbar. Vorher mit
'speechSynthesis' in windowprüfen. - Autoplay-Richtlinien: Manche Browser spielen Sprachausgabe erst nach einer Nutzerinteraktion (Klick) ab.