WebentwicklungText-to-Speech

Text-to-Speech in Svelte umsetzen

Erfahre, wie du deiner Svelte-App mit TTS2Go kosteneffiziente, hochwertige Text-to-Speech hinzufügst – mit Browser-TTS als Fallback und KI-Audio.

Anthony Morris·
Text-to-Speech in Svelte umsetzen

Svelte steht für Einfachheit und Performance – und Text-to-Speech (TTS) in eine Svelte-App einzubauen, kann genauso unkompliziert sein.

Ob du deine Inhalte barrierefreier machen, ein Vorlese-Erlebnis bauen oder Sprachfeedback ergänzen willst: TTS lässt sich in wenigen Minuten integrieren. Dieser Guide erklärt, wie Sprachausgabe im Browser funktioniert, welche Vor- und Nachteile die verschiedenen TTS-Ansätze haben und wie du TTS2Go in deinem Svelte-Projekt zum Laufen bringst.

So funktioniert die Sprachsynthese im Browser

Moderne Browser enthalten die Web Speech API. Damit kannst du window.speechSynthesis.speak() mit einer SpeechSynthesisUtterance aufrufen und dir Text vorlesen lassen.

Die wichtigsten Eigenschaften:

  • Keine Abhängigkeiten: Alles läuft im Browser.
  • Keine API-Keys oder Serveraufrufe: Keine Backend-Integration nötig.
  • Keine Kosten: Es werden die eingebauten Systemstimmen genutzt.

Allerdings gibt es Kompromisse:

  • Roboterhafte, uneinheitliche Qualität: Die Stimmen klingen oft synthetisch.
  • Plattformabhängig: Die Stimmen unterscheiden sich zwischen Chrome und Firefox, macOS und Windows.
  • Begrenzte Stimmauswahl: Weniger Sprachen und Stile als bei moderner KI-TTS.

Der Aufstieg KI-generierter Sprache

Neuronale Text-to-Speech-Modelle erzeugen natürlich klingendes Audio mit realistischer Intonation und realistischem Sprechtempo. Sie unterstützen viele Sprachen, Akzente und Sprechstile und eignen sich damit ideal für Vertonungen und Sprach-Erlebnisse in Produktionsqualität.

Vor- und Nachteile:

  • Vorteile:
  • Hochwertiges, natürliches Audio
  • Breite Abdeckung an Sprachen und Stimmen
  • Einheitlicher Klang auf allen Geräten und Browsern
  • Nachteile:
  • Kosten: Du zahlst pro Zeichen oder pro Sekunde generiertem Audio.
  • API-Aufrufe: Erfordert eine serverseitige oder authentifizierte clientseitige Integration.

Das wirft eine Designfrage auf: Wie bringst du Audioqualität und Generierungskosten in Einklang – und wie steuerst du, wann Audio erzeugt wird?

Audio vorab generieren

Ein Ansatz ist, Audio für alle deine Inhalte vorab zu generieren und über ein CDN auszuliefern.

So funktioniert es:

  • Alle Textinhalte werden im Voraus in Audiodateien umgewandelt.
  • Diese Dateien werden hochgeladen und über ein CDN ausgeliefert.
  • Nutzer bekommen sofortige Wiedergabe ohne Wartezeit für die Generierung.

Vorteile:

  • Sofortige Wiedergabe für jeden Besucher
  • Einheitliches, hochwertiges Audio
  • Einfaches Laufzeitverhalten (es wird nur eine Datei abgespielt)

Nachteile:

  • Du zahlst für die Audio-Generierung von Inhalten, die vielleicht nie abgespielt werden.
  • Alle Inhalte müssen im Voraus feststehen.
  • Jede inhaltliche Änderung erfordert eine Neugenerierung.
  • Speicher- und CDN-Kosten wachsen mit der Menge an Inhalten.

Bei dynamischen oder häufig aktualisierten Inhalten wird das schnell teuer und betrieblich aufwendig.

Lazy Generation bei Bedarf

Eine andere Strategie ist die Generierung bei Bedarf (Lazy Generation): Audio wird erst erzeugt, wenn ein Nutzer tatsächlich auf Play klickt.

So funktioniert es:

  • Fordert ein Nutzer Audio für einen Inhalt an, rufst du die TTS-API auf.
  • Das generierte Audio wird gecacht oder gespeichert.
  • Weitere Anfragen verwenden das gecachte Audio.

Vorteile:

  • Deutlich kosteneffizienter: Du zahlst nur für Inhalte, die Nutzer wirklich anhören.
  • Unterstützt dynamische und nutzergenerierte Inhalte ganz natürlich.
  • Weniger verschwendete Generierungen für ungenutzte Inhalte.

Herausforderungen:

  • Ohne Kontrolle könnte jeder teure Generierungen auslösen.
  • Du brauchst einen Mechanismus, der festlegt, welche Inhalte wann Audio bekommen.
  • Du musst die User Experience (anfängliche Verzögerung) und die Budgetkontrolle gegeneinander abwägen.

Wie TTS2Go das löst

TTS2Go kombiniert Browser-TTS und KI-TTS, um Qualität, Kosten und Einfachheit in Balance zu bringen.

Die Kernideen:

  1. Sicherer clientseitiger Key
  • Du bindest das TTS2Go-SDK mit einem Frontend-API-Key in deine Website ein.

Schritt 1: Das SDK installieren

Installiere das Svelte-Paket von TTS2Go:


npm install @tts2go/svelte

Das Paket funktioniert mit Svelte 5 und fügt sich nahtlos in das Reaktivitätsmodell von Svelte ein.

Schritt 2: Den Client erstellen

Initialisiere einen TTS2Go-Client mit den Zugangsdaten deines Projekts. In Svelte kannst du den Client direkt in einer Komponente oder in einem gemeinsamen Modul erstellen.



import { createTTS2GoClient } from "@tts2go/svelte";

const client = createTTS2GoClient({

apiKey: "your-api-key",

projectId: "your-project-id",

});

  • apiKey: Dein öffentlicher TTS2Go-Key, der sicher im Frontend verwendet werden kann.
  • projectId: Legt fest, welches TTS2Go-Projekt für Generierung, Freigaben und Analytics verwendet wird.

Schritt 3: Text-to-Speech in Svelte hinzufügen

Mit createTTS erhältst du einen reaktiven Store mit Wiedergabesteuerung und Status.



import { createTTS2GoClient, createTTS } from "@tts2go/svelte";

const client = createTTS2GoClient({

apiKey: "your-api-key",

projectId: "your-project-id",

});

const VOICE_ID = "your-voice-id";

const text = "Hello from TTS2Go in Svelte!";

const tts = createTTS(client, text, VOICE_ID);

let status = $state("idle");

const unsubscribe = tts.status.subscribe((s) => (status = s));

function handleClick() {

if (status === "playing" || status === "fallback") {

tts.stop();

} else {

tts.play();

}

Wie geht es weiter?

Von hier aus kannst du:

  • die Stimmauswahl erkunden, um die passende Stimme für deine Marke oder deinen Content-Typ zu finden.
  • SSML nutzen, um Aussprache, Pausen und Betonung präzise zu steuern.
  • die Text-Highlighting-API integrieren, um Text und gesprochenes Audio zu synchronisieren.

Die vollständige Svelte-Dokumentation und fortgeschrittene Beispiele findest du hier:

  • https://tts2go.com/docs/svelte