Start · Sprachen · JavaScript · Referenz · SpeechSynthesisVoice.name

SpeechSynthesisVoice.name

Eigenschaft

Schreibgeschützte Eigenschaft, die den menschenlesbaren Namen einer Sprachausgabe-Stimme als <code>string</code> liefert, z. B. <code>"Google Deutsch"</code>.

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

Signatur

SpeechSynthesisVoice.name

Beschreibung

Die Eigenschaft name eines SpeechSynthesisVoice-Objekts gibt einen für Menschen lesbaren Namen der Stimme zurück, etwa "Microsoft Katja - German (Germany)", "Anna" oder "Google Deutsch". Die Eigenschaft kann nur gelesen werden.

Typischerweise verwendet man name, um in einer Stimmenauswahl (z. B. einem <select>) die verfügbaren Stimmen anzuzeigen oder um die vom Nutzer gewählte Stimme zu speichern und später über speechSynthesis.getVoices() wiederzufinden. Die ausgewählte Stimme wird anschließend der Eigenschaft SpeechSynthesisUtterance.voice zugewiesen.

Der Name hängt vollständig von Betriebssystem, Browser und installierten Sprachpaketen ab. Er ist nicht standardisiert und eignet sich daher nicht als plattformübergreifend stabiler Bezeichner. Für die Auswahl nach Sprache ist lang zuverlässiger; als eindeutige Kennung innerhalb einer Plattform dient voiceURI.

Rückgabewert

Typ
string
Beschreibung
Der menschenlesbare Name der Stimme, wie ihn die Sprachsynthese-Engine bereitstellt.

Beispiele

Alle verfügbaren Stimmen mit Namen auflisten

const listVoices = () => {
  const voices = speechSynthesis.getVoices();
  voices.forEach((voice) => {
    console.log(`${voice.name} (${voice.lang})${voice.default ? ' – Standard' : ''}`);
  });
};

// Stimmen werden in vielen Browsern asynchron geladen
listVoices();
speechSynthesis.addEventListener('voiceschanged', listVoices);
Google Deutsch (de-DE) Google US English (en-US) Microsoft Katja - German (Germany) (de-DE) – Standard

Stimmenauswahl in einem Select-Feld

const select = document.querySelector('#voice-select');

const populateVoices = () => {
  select.innerHTML = '';
  for (const voice of speechSynthesis.getVoices()) {
    const option = document.createElement('option');
    option.textContent = `${voice.name} (${voice.lang})`;
    option.value = voice.name;
    select.append(option);
  }
};

populateVoices();
speechSynthesis.onvoiceschanged = populateVoices;

document.querySelector('#speak').addEventListener('click', () => {
  const utterance = new SpeechSynthesisUtterance('Hallo, wie geht es dir?');
  utterance.voice = speechSynthesis.getVoices().find((v) => v.name === select.value) ?? null;
  speechSynthesis.speak(utterance);
});

Gespeicherte Lieblingsstimme wiederfinden (mit Fallback)

const pickVoice = (preferredName, fallbackLang = 'de-DE') => {
  const voices = speechSynthesis.getVoices();
  return (
    voices.find((v) => v.name === preferredName) ??
    voices.find((v) => v.lang === fallbackLang) ??
    voices.find((v) => v.default) ??
    null
  );
};

const saved = localStorage.getItem('voiceName');
const voice = pickVoice(saved);
console.log(voice ? `Verwende: ${voice.name}` : 'Keine Stimme verfügbar');
Verwende: Google Deutsch

// Wichtig · Fallstricke

  • Leere Liste beim Laden: In Chrome und Edge gibt speechSynthesis.getVoices() direkt nach dem Seitenladen oft ein leeres Array zurück. Deshalb auf das Event voiceschanged warten, bevor man name ausliest.
  • Nicht plattformübergreifend stabil: Dieselbe Stimme kann auf Windows, macOS, Android und iOS verschieden heißen. Ein gespeicherter Name kann auf einem anderen Gerät fehlen, deshalb immer einen Rückfall (z. B. über lang) vorsehen.
  • Nicht eindeutig: Mehrere Stimmen können denselben oder einen ähnlichen Namen tragen (z. B. lokale und Online-Variante). Zur genauen Unterscheidung zusätzlich voiceURI und localService prüfen.
  • Schreibgeschützt: Eine Zuweisung an name wird stillschweigend ignoriert (im Strict Mode wird ein TypeError ausgelöst).
  • Datenschutz: Aus der Liste der installierten Stimmen lässt sich ein Fingerprint des Geräts bilden. Manche Browser (z. B. Firefox mit Fingerprinting-Schutz) schränken die Liste deshalb ein.
  • Web Speech API wird seit 2018 von allen modernen Browsern unterstützt. Welche Stimmen vorhanden sind, unterscheidet sich aber stark.