Signatur
Beschreibung
Die schreibgeschützte Eigenschaft default eines SpeechSynthesisVoice-Objekts ist true, wenn der Browser bzw. das Betriebssystem diese Stimme als Standardstimme festgelegt hat. Das hängt meist von der Sprache der Benutzeroberfläche und den Systemeinstellungen für die Sprachausgabe ab. Bei allen anderen Stimmen ist der Wert false.
Du brauchst die Eigenschaft vor allem, um eine sinnvolle Vorauswahl zu treffen. Wenn deine Anwendung eine Liste der verfügbaren Stimmen zeigt (etwa in einem <select>), kannst du die Standardstimme markieren oder vorauswählen. Genauso kannst du auf sie zurückgreifen, wenn keine Stimme für die gewünschte Sprache gefunden wird.
Weist du einer SpeechSynthesisUtterance keine Stimme zu, nimmt der Browser eine Stimme, die zur Eigenschaft lang der Äußerung passt, sonst die Standardstimme. Die Eigenschaft default zeigt dir also, welche Stimme ohne ausdrückliche Auswahl wahrscheinlich zu hören ist. Ganz verlassen kannst du dich darauf aber nicht.
Rückgabewert
true, wenn die Stimme die Standardstimme ist, sonst false.Beispiele
Standardstimme ermitteln
const findDefaultVoice = () => {
const voices = speechSynthesis.getVoices();
return voices.find((voice) => voice.default) ?? voices[0] ?? null;
};
// Stimmen werden oft asynchron geladen
speechSynthesis.addEventListener('voiceschanged', () => {
const voice = findDefaultVoice();
console.log(voice ? `${voice.name} (${voice.lang})` : 'Keine Stimme verfügbar');
});
Stimmenauswahl mit markierter Standardstimme
const select = document.querySelector('#voice-select');
const populateVoices = () => {
select.replaceChildren();
for (const voice of speechSynthesis.getVoices()) {
const option = new Option(
`${voice.name} (${voice.lang})${voice.default ? ' — Standard' : ''}`,
voice.name
);
option.selected = voice.default;
select.append(option);
}
};
populateVoices();
speechSynthesis.onvoiceschanged = populateVoices;
Sprachpassende Stimme mit Standard-Rückfall
const speak = (text, lang = 'de-DE') => {
const voices = speechSynthesis.getVoices();
const voice =
voices.find((v) => v.lang === lang) ??
voices.find((v) => v.lang.startsWith(lang.split('-')[0])) ??
voices.find((v) => v.default);
const utterance = new SpeechSynthesisUtterance(text);
if (voice) utterance.voice = voice;
utterance.lang = lang;
speechSynthesis.speak(utterance);
console.log(`Verwendet: ${voice?.name ?? 'Browser-Vorgabe'}`);
};
speak('Hallo Welt!');
// Wichtig · Fallstricke
- Leere Stimmenliste:
speechSynthesis.getVoices()liefert in Chrome und Edge beim ersten Aufruf oft ein leeres Array. Warte deshalb auf das Ereignisvoiceschanged, bevor du nachdefaultsuchst. - Nicht immer genau eine Standardstimme: Je nach Browser und Plattform ist keine Stimme als Standard markiert (z. B. in manchen Linux- oder Android-Umgebungen), oder es sind mehrere. Plane immer einen Rückfall ein, etwa
voices[0]. - Plattformabhängig: Welche Stimme Standard ist, legen Betriebssystem und Browser fest. Das kann sich bei gleicher Sprache von Gerät zu Gerät unterscheiden. Deine Anwendung kann den Wert nicht ändern, weil die Eigenschaft schreibgeschützt ist.
- Kompatibilität: Die Web Speech API (Sprachsynthese) wird von Chrome, Edge, Safari und Firefox unterstützt. In Firefox musste sie unter Linux lange zusätzlich konfiguriert werden (Speech Dispatcher).