Was macht natural-voice?
Die meisten „robotischen“ ElevenLabs-Sprachausgaben sind kein Problem der Stimme. Sie sind ein Problem des Skripts. Das Modell liest genau das, was ihm gegeben wird, und ein für das Auge geschriebenes Skript (Schlagzeilen, Punkt-Fragmente, Ziffern, Gedankenstriche) kommt staccato zurück – egal welche Stimme es liest.
Drei Werkzeuge in diesem Ordner laufen tatsächlich. Verwende sie; beurteile den Fluss nicht nur durch das Lesen des Textes.
python3 speakable.py script.txt # ist dies für das Ohr geschrieben?
python3 takes.py script.txt --voice VOICE_ID # gesäte Takes (kostenpflichtig, fragt vorher)
python3 gaps.py takes/ # bewerte die Takes nach Satz-internen Lücken
Alle drei sind reines Python 3.9+ ohne Pakete. gaps.py verwendet ffmpeg, falls es im PATH ist, um Lücken anhand der Audiodatei selbst zu bestätigen.
Der Ablauf
1. Diagnostiziere, bevor du etwas änderst. Falls bereits ein Take existiert, führe gaps.py darauf aus. Eine Lücke von über 0,2 s innerhalb eines Satzes (nicht nach einem Komma oder Punkt) ist das, was Menschen als „KI“ hören. In unserem eigenen „Vorher“-Take stoppte die Stimme 0,3 s vor „run“ und erneut vor „Instagram“, mitten im Aufhänger. Nichts in unserer Bearbeitung verursachte es: Die Lücken waren in der Rohdatei.
2. Schreibe für das Ohr um. Führe speakable.py aus und behebe jede Markierung. Die Regeln:
- Sätze, keine Schlagzeilen. „13 kostenlose Claude-Fähigkeiten betreiben nun dein Instagram.“ ist ein Titel. „Dreizehn kostenlose Claude-Fähigkeiten betreiben dein ganzes Instagram.“ ist etwas, das eine Person sagt.
- Aufzählungen benötigen Kommas, keine Punkte. „Reels. Bildunterschriften. Karussells.“ bringt das Modell dreimal zum Stoppen. „Reels, Bildunterschriften, Karussells, Geschichten“ fließt.
- Zahlen als Wörter in der gesprochenen Zeile: „vierundachtzig von hundert“, nicht „84 von 100“. Der Bildschirmtext kann die Ziffern behalten.
- Verschmelzungen (du hast, es ist, wir werden). Niemand sagt „du hast“ laut.
- Verbinde die Fragmente mit „also“, „und“, „dann“. Eine Konjunktion ist ein Hinweis für das Modell, weiterzumachen.
- Keine Gedankenstriche. ElevenLabs behandelt einen Gedankenstrich als kurze Pause und sagt selbst, dass er „weniger konsistent“ ist. Verwende ein Komma, um weiterzumachen, oder Auslassungspunkte für eine Zäsur.
- Kein SSML.
<break time="1s"/>wird auf Eleven v4 oder v3 nicht unterstützt.
3. Führe Regie. Eleven v4 akzeptiert Audio-Tags in eckigen Klammern. Setze einen Tag am Anfang eines Abschnitts, nicht in jeder Zeile, und lass ihn mit dem übereinstimmen, was die Zeile tut. Siehe tags.md für die Liste. speakable.py markiert Tags, die es nicht kennt, denn ein unbekannter Tag kann als Soundeffekt vorgelesen werden.
[aufgeregt] Dreizehn kostenlose Claude-Fähigkeiten betreiben dein ganzes Instagram.
[schelmisch] Also ließen wir es diesen Reel schreiben...
Zeichensetzung ist ebenfalls Regie. Auslassungspunkte fügen eine gewichtete Pause hinzu, ein Ausrufezeichen verleiht Energie, und GROSSBUCHSTABEN betonen (verwende sie einmal, auf dem Wort, das zählt).
4. Einstellungen. Unter eleven_v4:
| Einstellung | Verwendung | Grund |
|---|---|---|
| stability | 0,30 bis 0,40 | Niedriger ergibt „breiteren emotionalen Bereich“; der Standard 0,5 ist flacher. Unter 0,3 kann ein Take abdriften. |
| similarity_boost | 0,75 | der Standard; behält die Stimme selbst |
| style | 0 | der Standard; alles andere erhöht die Latenz |
| speed | 1,0 bis 1,08 | der erlaubte Bereich ist 0,7 bis 1,2; Social-Voiceover liegt knapp über 1 |
5. Drei Takes, gleicher Text, verschiedene Seeds. Ein Take ist ein Münzwurf. Führe takes.py mit den Seeds 1, 2 und 3 aus, dann gaps.py, um sie zu bewerten. Höre dir die besten zwei an und wähle nach Gehör. Behalte den Seed: Er sorgt dafür, dass eine erneute Ausführung dem Take nahe kommt (ElevenLabs nennt es „Best Effort“, nicht garantiert).
6. Schneide behutsam. Wenn dein Editor Stille kürzt, lasse etwa eine Sekunde nach Sätzen und den größten Teil einer Sekunde nach Kommas. Auf die gleiche kurze Länge gestutzte Pausen sind das andere, was maschinell klingt.
7. Klingt immer noch generiert? Hör auf, an Reglern zu drehen. Nimm dich selbst auf deinem Telefon auf, während du die Zeile sprichst, und führe sie durch den ElevenLabs Voice Changer (Sprache-zu-Sprache) in die gewünschte Stimme. Dein Timing, deine Betonung und deine Emotionen bleiben erhalten; nur die Stimme ändert sich.
Was wir gemessen haben
Bei einem unserer eigenen Reels (die Dateien sind in examples/):
| Vorher | Nachher | |
|---|---|---|
| Skript | Für das Auge geschrieben: Fragmente, Ziffern | Für das Ohr geschrieben: speakable.py sauber |
| Tags | Keine | [aufgeregt], [schelmisch] |
| Einstellungen | stability 0,5, speed 1,0 | stability 0,35, speed 1,05 |
| Takes | 1 | 3 Seeds, ausgewählt durch gaps.py dann nach Gehör |
speakable.py | 65, UMSCHREIBEN (eine Liste in Punkten, Ziffern, keine Tags) | 100, SPRECHBAR |
| Lücken in Sätzen | 0,34 s zwischen „jetzt“ und „laufen“, im Aufhänger | keine |
Die Stimme änderte sich ebenfalls (Will zu Chris), also ist dies kein Labortest einer einzelnen Einstellung. Die Skript-Umschreibung machte den größten hörbaren Unterschied.
Regeln
- Sende niemals eine kostenpflichtige Anfrage, ohne zu sagen, was sie kostet.
takes.pygibt die Zeichenanzahl aus und stoppt, es sei denn, du übergibst--yes. - Gib niemals den API-Schlüssel aus oder committe ihn.
takes.pyliestELEVENLABS_API_KEYaus der Umgebung und sonst nichts. - Kennzeichne es. Wenn die Stimme generiert ist, aktiviere das KI-Label der Plattform.