Start · Sprachen · JavaScript · Referenz · SpeechSynthesisVoice.default

SpeechSynthesisVoice.default

Eigenschaft

Schreibgeschützter boolescher Wert, der angibt, ob die Stimme die Standardstimme der aktuellen Anwendung bzw. Plattform ist.

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

Signatur

SpeechSynthesisVoice.default

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

Typ
boolean
Beschreibung
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');
});
Google Deutsch (de-DE)

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!');
Verwendet: Anna

// Wichtig · Fallstricke

  • Leere Stimmenliste: speechSynthesis.getVoices() liefert in Chrome und Edge beim ersten Aufruf oft ein leeres Array. Warte deshalb auf das Ereignis voiceschanged, bevor du nach default suchst.
  • 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).