Signatur
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
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);
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');
// 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 Eventvoiceschangedwarten, bevor mannameausliest. - 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
voiceURIundlocalServiceprüfen. - Schreibgeschützt: Eine Zuweisung an
namewird stillschweigend ignoriert (im Strict Mode wird einTypeErrorausgelö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.