Alle Beiträge

Wie ich meine Stimme geklont habe, damit sie diesen Blog in sechs Sprachen vorliest

Artikel anhören (experimentell) · 11:56

00:00 / 11:56

Eine einzelne kleine Schallwelle links, die sich in sechs parallele Klangbänder auffächert, eines pro Sprache, alle mit derselben Wellenform

Diese Website erscheint in sechs Sprachen: Englisch, Portugiesisch, Spanisch, Deutsch, Französisch und Italienisch. Eine Zeit lang war das ein reines Textversprechen. Du konntest jeden Artikel in deiner Sprache lesen, aber wer auf dem Arbeitsweg oder beim Kochen zuhören wollte, fand keinen Play-Button. Audio hinzuzufügen war der offensichtliche nächste Schritt. Die interessante Frage war, wessen Stimme es sein sollte.

Runde eins: eine Stimme, die live geht

Die erste Version nutzte kostenlose neuronale Text-to-Speech-Stimmen, eine pro Sprache. Das war der richtige erste Schritt: null Kosten, in Minuten integriert, und auf jedem Artikel lag ein funktionierender Player. Erst das Ausliefern hat aber die eigentliche Messlatte sichtbar gemacht. Die Stimmen waren sauber, aber förmlich, sie lasen meine Sätze mit der Kadenz eines anderen, und eine persönliche Website, vorgelesen von einer Stimme aus dem Baukasten, ist ein Platzhalter. Mein Name steht über den Texten. Die Stimme, die sie vorliest, sollte auch meine sein, auch in den fünf Sprachen, die ich so bald nicht selbst einsprechen werde.

Der Schlüssel: ein lokales Modell, das klont

Praktisch möglich wurde das durch Chatterbox Multilingual, ein MIT-lizenziertes Open-Source-TTS-Modell von Resemble AI. Drei Eigenschaften machten es zur richtigen Wahl:

  • Es deckt alle sechs meiner Sprachen mit einem einzigen Modell ab.
  • Es läuft auf einer Consumer-GPU. Meine ist eine RTX 3080, und die Generierung belegt etwa 5,5 GB VRAM.
  • Es beherrscht Zero-Shot-Voice-Cloning: Man gibt ihm eine kurze Referenzaufnahme, und es liest beliebigen Text mit dieser Stimme, in jeder seiner Sprachen.

Der letzte Punkt ist das ganze Feature. Kein Studio, kein Trainingslauf, kein Datensatz, in dem ich stundenlang rede. Die Referenz, die alles auf dieser Website antreibt, ist eine Aufnahme, die ich an meinem Rechner in einem ruhigen Zimmer gemacht habe: etwa vierzig Sekunden, in denen ich einen meiner eigenen Artikel auf Portugiesisch vorlese, in normalem Tempo.

Warum die Referenz entscheidend ist

Die Standardstimme des Modells war von Haus aus ohnehin nicht meine, und im Portugiesischen tendierte sie außerdem ins Brasilianische, was nicht meiner Sprechweise entspricht. Es gibt kein Stimmenmenü, um das zu korrigieren, keine Option "männlich, europäisches Portugiesisch" zum Auswählen. Die Stimme wird vollständig durch das Referenzaudio bestimmt, auf das man das Modell konditioniert, also waren diese vierzig Sekunden der einzige Hebel, den ich hatte, und sie haben viel bewegt. Timbre, Register und Rhythmus sind in jeder Sprache unverkennbar meine. Der Akzent kam nur zum Teil mit: Die Vertonung liegt deutlich näher am europäischen Portugiesisch als die Standardstimme, driftet aber stellenweise in eine brasilianische Kadenz, weil das Modell sein Portugiesisch aus Daten gelernt hat, in denen die brasilianische Variante dominiert, und vierzig Sekunden von mir diese Prägung zwar verbiegen, aber nicht auslöschen.

Was mich immer noch überrascht: Die Referenz ist ausschließlich Portugiesisch. Ich habe nie ein englisches Sample aufgenommen, kein spanisches, kein deutsches, französisches oder italienisches. Dieselben vierzig portugiesischen Sekunden treiben alle sechs Sprachen an: Das Modell liest aus der Aufnahme ab, wie meine Stimme klingt, und wendet das auf jede Sprache an, die es als Nächstes vorlesen soll.

Zwei Notizen aus dem Feintuning, bis es richtig klang:

  • Das Standardtempo war für langes Zuhören zu schnell. Ein niedrigeres Guidance-Gewicht des Modells (cfg_weight 0.3) und etwas zurückgenommene Expressivität ergaben eine ruhigere Lesung, die zu Artikeln passt. Diese Einstellungen sind fest in die Pipeline eingebaut, sodass jede Datei konsistent herauskommt.
  • Im Englischen trägt die geklonte Stimme meinen portugiesischen Akzent. Ich habe ihn behalten. Eine persönliche Website, die auf Englisch plötzlich wie ein Muttersprachler aus Kalifornien klingt und auf Portugiesisch wie ich, wäre seltsamer als ein Akzent, und der Akzent ist die wahrheitsgetreue Version.

Die Pipeline

Die Marke dieser Website ist KI in Produktion, also musste die Vertonung ein System sein, kein einmaliger Stapel von Dateien. Das Ganze läuft mit einem einzigen Befehl, node scripts/generate-audio.mjs, und macht Folgendes:

  1. Scannt jeden Artikel in jeder Sprache und vergleicht Datei-Zeitstempel, sodass nur neue oder geänderte Artikel neu generiert werden. Einen neuen Beitrag zu veröffentlichen heißt: Markdown schreiben und das Skript ausführen.
  2. Übergibt die Texte an einen Python-Worker, der Chatterbox einmal lädt und warm hält, statt das Laden des Modells pro Datei zu bezahlen.
  3. Liest jeden Artikel Chunk für Chunk und setzt das Audio mit natürlichen Pausen zusammen; genau das verhindert, dass eine Lesung von 15 Minuten wie ein einziger atemloser Absatz klingt.
  4. Normalisiert die Lautheit jeder Datei. Die rohe Modellausgabe lag bei etwa minus 41 LUFS, flüsterleise neben jedem Podcast. Alles wird auf Podcast-Lautheit angehoben, etwa minus 16 bis minus 18 LUFS, damit der Player bequem neben dem sitzt, was du zuletzt gehört hast.
  5. Schreibt das Ergebnis als schlichte MP3 pro Artikel und Sprache. Das Audio wird mit der Website ausgeliefert wie jedes andere statische Asset: kein Streamingdienst, kein Player von Drittanbietern, kein Tracking.

Die Qualitätskontrolle läuft in die Gegenrichtung: Nach einem Batch gehen Ausschnitte des generierten Audios durch Whisper, das Speech-to-Text-Modell, und die Transkripte werden gegen den Quelltext abgeglichen. Heute ist das eine Stichprobe, kein automatischer Schritt in der Pipeline, und sie hat schon gefunden, was mein Ohr nie finden würde, in den vier Sprachen, die ich nicht nach Gehör korrekturlesen kann.

Die Zahlen, damit du das für dein eigenes Setup einschätzen kannst: Die Generierung in Chunks dauert ungefähr doppelt so lang wie das fertige Audio, ein langer Artikel kostet also 25 bis 30 Minuten GPU-Zeit pro Sprache. Der komplette Katalog, fünf Artikel mal sechs Sprachen, ist ein Lauf von rund zwölf Stunden. Die Referenzaufnahme landet nie im Repository; das Skript liest sie aus einem lokalen Ordner, und das Repo sieht immer nur die fertigen MP3s.

Was ein langer Batch dich lehrt

Ein Zwölf-Stunden-Job findet deine Schwachstellen. Mein erster kompletter Lauf starb mittendrin, als der Prozess, der ihn gestartet hatte, abgeräumt wurde, ein klassischer Fehler bei langen Jobs. Gerettet hat ihn dasselbe Design, das auch das Veröffentlichen billig macht: Weil die Pipeline inkrementell arbeitet und jede fertige Datei dauerhaft gespeichert ist, kostete der Absturz nichts außer der Datei, die gerade im Encoding steckte, und selbst die ließ sich aus ihrer temporären Ausgabe wiederherstellen. Befehl neu starten, und es geht dort weiter, wo der letzte Lauf aufgehört hat. Wenn du irgendeine langlaufende Generierungspipeline baust: Diese Eigenschaft, Wiederaufnehmbarkeit als Standard, ist mehr wert als ein Fortschrittsbalken.

Wie es heute klingt

Ich verkaufe es nicht größer, als es ist. Die Vertonung ist gut hörbar und unverkennbar ich, und sie hat noch raue Kanten: Hin und wieder kommt eine Phrase abgehackt heraus, oder ein Chunk stottert wie eine zerkratzte Schallplatte, bevor er sich fängt. Und das Portugiesische behält die Drift, die ich oben beschrieben habe. Es ist mein Timbre, das meine Worte liest, mit einer Kadenz, die ein portugiesischer Hörer stellenweise als brasilianisch gefärbt heraushören wird. Mild genug, dass ich es ausgeliefert habe, präsent genug, dass ich es hier schriftlich festhalte. Die Whisper-Stichproben fangen die groben Ausfälle ab; die subtileren rutschen durch, und in vier dieser Sprachen würde ich sie selbst nie hören. Also behandle ich das Audio als das, was es heute ist, einen Begleiter. Drück auf Play, während du liest, und es trägt dich durch den Text. Die nächsten Iterationen sind von hier aus schon sichtbar: eine längere, sauberere Referenzaufnahme, die den Akzent ein Stück weiter heimholt, und der Umbau der QA-Prüfung in eine Reparaturschleife, in der jeder Chunk, dessen Transkription vom Quelltext abweicht, automatisch neu generiert wird, sodass jede veröffentlichte Datei auf sauber konvergiert.

Die Grenze heißt Einwilligung

Es brauchte vierzig Sekunden Audio, um eine überzeugende Kopie meiner Stimme zu erstellen, auf einer Gaming-GPU, mit kostenloser Software. Das gilt auch für deine Stimme.

Ich liefere das aus einem einzigen Grund guten Gewissens aus: Es ist meine Stimme, von mir geklont, mit meiner Einwilligung, sie liest meine eigenen Worte, und sie ist als das gekennzeichnet, was sie ist. Dieselbe Fähigkeit, ohne Erlaubnis auf die Stimme eines anderen gerichtet, ist Betrug, und dass die Hürde jetzt eine einzige kurze Aufnahme ist, bedeutet: Die Beweislast hat sich verschoben. Die Stimme allein authentifiziert niemanden mehr. Wenn dein Unternehmen "klingt am Telefon wie der CEO" noch als Autorisierung behandelt, ist dieser Absatz dein Incident Report aus der Zukunft.

Was es kostet

Nach der einmaligen Einrichtung liegen die Grenzkosten dafür, einen neuen Artikel in sechs Sprachen zu vertonen, bei ein paar Stunden GPU-Zeit im Hintergrund und dem Strom dahinter. Es gibt keine API-Gebühren pro Zeichen, und kein Artikeltext verlässt je meinen Rechner. Gehostete Stimmplattformen klonen mit mehr Feinschliff, und für kommerzielle Produkte, bei denen die Vertonung im Kern steht, lohnt sich ihre Prüfung, aber für eine persönliche Website gewinnt der lokale Weg bei Kosten, Privatsphäre und Kontrolle, und er macht aus dem ganzen Feature ein paar Skripte in einem Repo.

Jeder Artikel hier hat jetzt oben einen Player. Wähl eine Sprache, drück auf Play und lies mit: Du hörst diesen Text ungefähr so, wie ich ihn dir vorlesen würde, abgesehen von einem Akzent, den ich behalten wollte, und der gelegentlichen Silbe, die das Modell noch treffen lernt.

Fragen, die dieser Artikel beantwortet

  • Kann man eine Stimme wirklich aus vierzig Sekunden Aufnahme klonen?

    Ja, und zwar ohne Trainingslauf, ohne Studio und ohne Datensatz mit stundenlangem Reden. Chatterbox Multilingual, das MIT-lizenzierte Open-Source-Modell von Resemble AI, beherrscht Zero-Shot-Voice-Cloning: Es wird auf eine kurze Referenzaufnahme konditioniert und liest beliebigen Text mit dieser Stimme. Es läuft lokal auf einer RTX 3080 und belegt etwa 5,5 GB VRAM.

  • Braucht man für jede Sprache eine eigene Sprachprobe?

    Nein. Die Referenz hinter jeder Datei auf dieser Website ist ausschließlich Portugiesisch, etwa vierzig Sekunden Vorlesen eines Artikels in normalem Tempo, und in Englisch, Spanisch, Deutsch, Französisch oder Italienisch wurde nie etwas aufgenommen. Das Modell liest aus dieser Aufnahme ab, wie die Stimme klingt, und wendet das auf jede Sprache an, die es als Nächstes vorlesen soll.

  • Klingt das wirklich nach dir, oder ist das schöngeredet?

    Es ist gut hörbar und unverkennbar mein Timbre, und es hat raue Kanten, die ich lieber benenne als verstecke. Hin und wieder kommt eine Phrase abgehackt heraus oder ein Chunk stottert wie eine zerkratzte Schallplatte, bevor er sich fängt, und das Portugiesische behält stellenweise eine brasilianisch gefärbte Kadenz. Whisper-Transkripte von Stichproben fangen die groben Ausfälle ab, die subtileren rutschen durch, und in vier dieser Sprachen würde ich sie selbst nie hören. Deshalb ist das Audio heute ein Begleiter zum Text und kein Ersatz für das Lesen.

  • Wie lange dauert es und was kostet es, einen Artikel in sechs Sprachen zu vertonen?

    Die Generierung in Chunks dauert ungefähr doppelt so lang wie das fertige Audio, ein langer Artikel kostet also 25 bis 30 Minuten GPU-Zeit pro Sprache, und der komplette Katalog aus fünf Artikeln mal sechs Sprachen war ein Lauf von rund zwölf Stunden. Nach der einmaligen Einrichtung liegen die Grenzkosten eines neuen Artikels bei ein paar Stunden GPU-Zeit im Hintergrund und dem Strom dahinter: keine API-Gebühren pro Zeichen, und kein Artikeltext verlässt den Rechner. Gehostete Plattformen klonen mit mehr Feinschliff und lohnen die Prüfung, wenn die Vertonung im Kern eines kommerziellen Produkts steht, aber für eine persönliche Website gewinnt der lokale Weg bei Kosten, Privatsphäre und Kontrolle.