Einen KI-Sprecher mit FFmpeg ins Video bringen
FFmpeg legt jedes Audio auf jedes Video, erzeugt aber keine natürliche Sprache: Sein optionaler flite-Filter klingt wie ein Roboter, und die meisten Builds lassen ihn weg. Der praktische Weg hat zwei Schritte: Skript mit einer Text-to-Speech-Engine vertonen, dann das Audio mit FFmpeg aufs Video legen.
Diese Anleitung erledigt den ersten Schritt offline mit der kostenlosen SuperClonica-Engine und gibt die FFmpeg-Befehle für den zweiten. Wir haben jeden Befehl an einem Testvideo ausgeführt: Der Videostrom bleibt mit -c:v copy unverändert, daher sind auch lange Clips in Sekunden fertig.
Das Skript vertonen
Installieren Sie die Engine einmal mit python -m pip install superclonica-cpu; sie lädt ihr Modell beim ersten Start und arbeitet danach offline. Speichern Sie den Sprechertext als Textdatei und vertonen Sie ihn:
superclonica --text-file script.txt --voice M3 --lang de --normalize --output voice.wav
Wählen Sie die Stimme zuerst auf ihrer Katalogseite, wo ein Satz von 30 bis 100 Zeichen kostenlos und ohne Konto vertont wird. Jede Stimme spricht 31 Sprachen; ändern Sie --lang, um dasselbe Skript auf Englisch, Spanisch oder Japanisch zu vertonen. Chinesisch wird noch nicht unterstützt.
Die Tonspur ersetzen
Für eine Bildschirmaufnahme oder einen stummen Clip nehmen Sie das Bild aus dem Video und den Ton aus der Vertonung:
ffmpeg -i video.mp4 -i voice.wav -map 0:v -map 1:a -c:v copy -c:a aac voiced.mp4
Das Video behält seine volle Länge; ist die Stimme kürzer, folgt Stille. Lassen Sie -shortest hier weg: Mit Stream-Copy kann es hängen oder das Bild auf die Länge der Stimme kürzen.
Die Stimme über Musik legen
Um den Originalton oder die Musik unter dem Sprecher zu behalten, senken Sie sie ab und mischen beides:
ffmpeg -i video.mp4 -i voice.wav -filter_complex "[0:a]volume=0.25[music];[music][1:a]amix=inputs=2:duration=first:normalize=0[a]" -map 0:v -map "[a]" -c:v copy -c:a aac voiced.mp4
volume=0.25 setzt die Musik auf ein Viertel, duration=first behält die Länge des Videos, und normalize=0 verhindert, dass amix die Stimme halbiert.
Musik nur absenken, während die Stimme spricht
Ein Sidechain-Kompressor senkt die Musik, wenn die Stimme laut ist, und hebt sie in den Pausen wieder an, wie es ein Cutter tun würde:
ffmpeg -i video.mp4 -i voice.wav -filter_complex "[1:a]asplit=2[v][key];[0:a][key]sidechaincompress=threshold=0.02:ratio=10:attack=20:release=400[music];[music][v]amix=inputs=2:duration=first:normalize=0[a]" -map 0:v -map "[a]" -c:v copy -c:a aac voiced.mp4
Erhöhen Sie ratio für ein tieferes Absenken und verlängern Sie release, wenn die Musik zu schnell zurückkommt.
Mehrere Zeilen exakt platzieren
Vertonen Sie jede Zeile in eine eigene Datei, verzögern Sie jede auf ihren Zeitpunkt in Millisekunden und mischen Sie alle:
ffmpeg -i video.mp4 -i line1.wav -i line2.wav -filter_complex "[1:a]adelay=500:all=1[l1];[2:a]adelay=4000:all=1[l2];[0:a]volume=0.25[music];[music][l1][l2]amix=inputs=3:duration=first:normalize=0[a]" -map 0:v -map "[a]" -c:v copy -c:a aac voiced.mp4
Hier beginnt die erste Zeile bei 0,5 s und die zweite bei 4 s. Weil jede Zeile eine eigene Datei ist, heißt eine Skriptänderung, eine Zeile neu zu vertonen, nicht die ganze Spur. Für vorhandene Untertitel baut unsere Anleitung SRT zu Sprache die zeitlich gesetzte Spur für Sie.