Tammy ist ein auf Python/Pytorch basierendes Open-Source-Projekt, das Deep-Learning-Modelle verwendet, um originelle Musikvideos zu erstellen. Es ermöglicht Benutzern , automatisch Videos basierend auf Textübergängen zu generieren, die mit verschiedenen Aspekten eines Songs synchronisiert sind , wie z. B. seinem BPM oder Klaviermuster. Das Projekt nutzt Deep-Learning-Modelle in verschiedenen Phasen des Videogenerierungsprozesses, einschließlich Audioquellentrennung mit LSTMs, Frame-Generierung mit GANs, räumliches Upscaling mit Super-Resolution-Modellen und zeitliches Upsampling mit Frame-Interpolationsmodellen. Ziel dieses Projekts ist die Bereitstellung eines benutzerfreundlichen Frameworks zum Aufbau benutzerdefinierter Modellpipelines zur Erstellung einzigartiger Musikvideos.
Merkmale
Schnellstart
Datenfluss und Codestruktur
Generierungseinstellungen
Weitere Beispiele
Mitwirken
Für einen schnellen Einstieg:
sudo apt-get install ffmpeg libsndfile1
und git-lfs installieren.pip install .
python run_tammy.py
aus, das die Standardeinstellungen in settingssettings_cpu.yaml
und den Standard-Song thoughtsarebeings_clip.wav
verwendet. Das tammy
-Paket kann einfach in Ihrem eigenen Skript oder anderen Einstellungsdateien verwendet werden und Audiodateien können mit dem vorhandenen run_tammy.py
-Skript verwendet werden, indem Sie python run_tammy.py --settings_file
ausführen. python run_tammy.py --settings_file
.
tammy.prompthandler
generiert die Einstellungen für jeden zu generierenden Frame (z. B. Übersetzung oder Texteingabeaufforderung) basierend auf einer prägnanteren Beschreibung der Generierungseinstellungen.tammy.sequence_maker
verfügt über einen generator
, der eine Bildsequenz basierend auf Textaufforderungen generiert. Derzeit werden die Modelle VQGAN-CLIP und Stable-Diffusion unterstützttammy.upscaling
skaliert die generierten Bilder mit Superauflösung. Derzeit ist SwinIR das einzige unterstützte Modell.tammy.superslowmo
interpoliert generierte (optional hochskalierte) Bilder, um die FPS zu erhöhen, ohne dass jedes Bild mit einem sequence_maker
generiert werden muss. Derzeit ist SuperSloMo das einzige unterstützte Modell. Die Videogenerierung verfügt über viele Konfigurationseinstellungen, die in einer Datei
angegeben werden. Einige Beispieleinstellungsdateien, die hauptsächlich zum Testen verwendet werden, finden Sie im settings
. Die meisten Einstellungsnamen (Schlüssel in der settings.yaml
) sollten selbsterklärend sein. Aus Gründen der Übersichtlichkeit werden im Folgenden einige Einstellungen erläutert.
Zur Steuerung von Bildübergängen werden Instrumente verwendet, insbesondere: Zoom im Animation_2d-Modus und schnelle Übergangsgeschwindigkeit im Interpolationsmodus. tammy
hat zwei Möglichkeiten, Instrumente bereitzustellen:
do_spleet: True
und geben Sie instrument:
zoom_instrument:
bereitstellen und die Datei benennen: file_name_fps.txt
, wobei fps
dem fps
Wert in sequence_settings.initial_fps
entsprechen sollte. Keyframes können manuell generiert werden, z. B. mit https://www.chigozie.co.uk/audio-keyframe-generator/ Die Einstellung sequence_settings.initial_fps
bestimmt die Anzahl der generierten Frames angesichts der Länge des Audioclips. Durch die Verwendung der Frame-Interpolation kann die Framerate auf einen Zielwert erhöht werden, indem do_slowmo: True
festgelegt und ein target_fps
angegeben wird, der ein Vielfaches von initial_fps
sein muss. Dies ermöglicht die schnellere Produktion von Videos mit hoher Bildrate, als wenn mit dem generator
alle Bilder von Grund auf erstellt würden.
Bei Bedarf kann die Anzahl der generierten Frames durch die Bereitstellung sequence_settings.max_frames
begrenzt werden. In diesem Fall ist die generierte Videolänge kürzer als der bereitgestellte Audioclip und beträgt: max_frames
/ initial_fps
.
Mit VQGAN-CLIP und Animation_2d-Modus von tammy
erstelltes Video.
Vollständiges Video (für ein optimales Erlebnis in 4K ansehen!): https://www.youtube.com/watch?v=T_bii9VLDk0
Videos, die im stabilen Diffusions- und Interpolationsmodus von tammy
erstellt wurden.
hinzu.pytest
ausführen.pre-commit install
.