Tammy est un projet open source basé sur Python/Pytorch qui utilise des modèles d'apprentissage en profondeur pour générer des vidéos musicales originales. Il permet aux utilisateurs de générer automatiquement des vidéos basées sur des transitions d'invite de texte synchronisées avec divers aspects d'une chanson , tels que son BPM ou son motif de piano. Le projet utilise des modèles d'apprentissage en profondeur à différentes étapes du processus de génération vidéo, notamment la séparation des sources audio avec les LSTM, la génération d'images avec les GAN, la mise à l'échelle spatiale avec des modèles de super-résolution et le suréchantillonnage temporel avec des modèles d'interpolation d'images. L'objectif de ce projet est de fournir un cadre facile à utiliser pour créer des pipelines de modèles personnalisés afin de créer des vidéos musicales uniques.
Caractéristiques
Démarrage rapide
Flux de données et structure du code
Paramètres de génération
Plus d'exemples
Contribuer
Pour un démarrage rapide :
sudo apt-get install ffmpeg libsndfile1
et git-lfs.pip install .
python run_tammy.py
qui utilisera les paramètres par défaut dans settingssettings_cpu.yaml
et la chanson par thoughtsarebeings_clip.wav
. Le package tammy
peut être facilement utilisé dans votre propre script ou d'autres fichiers de paramètres et fichiers audio peuvent être utilisés avec le script run_tammy.py
existant en exécutant python run_tammy.py --settings_file
.
tammy.prompthandler
génère les paramètres pour chaque image à générer (par exemple traduction ou invite de texte) sur la base d'une description plus concise des paramètres de génération.tammy.sequence_maker
dispose d'un generator
qui génère une séquence d'images basée sur des invites de texte. Actuellement, les modèles pris en charge sont VQGAN-CLIP et Stable-Diffusiontammy.upscaling
agrandit les images générées avec une super-résolution. Actuellement, le seul modèle pris en charge est SwinIR .tammy.superslowmo
interpole les images générées (éventuellement mises à l'échelle) pour augmenter le FPS sans avoir besoin de générer chaque image avec un sequence_maker
. Actuellement, le seul modèle pris en charge est SuperSloMo . La génération vidéo comporte de nombreux paramètres de configuration qui sont spécifiés dans un fichier
. Quelques exemples de fichiers de paramètres, principalement utilisés pour les tests, peuvent être trouvés dans le dossier settings
. La plupart des noms de paramètres (clés dans settings.yaml
) devraient être explicites. Pour plus de clarté, certains paramètres sont expliqués ci-dessous.
Des instruments sont utilisés pour piloter les transitions d'image, notamment : le zoom en mode Animation_2d et la vitesse de transition rapide en mode Interpolation. tammy
a deux options pour fournir des instruments :
do_spleet: True
et fournissez instrument:
zoom_instrument:
et nommez le fichier : file_name_fps.txt
où fps
doit correspondre à la valeur fps
dans sequence_settings.initial_fps
. Les images clés peuvent être générées manuellement avec par exemple https://www.chigozie.co.uk/audio-keyframe-generator/ Le paramètre sequence_settings.initial_fps
détermine le nombre d'images générées, compte tenu de la longueur du clip audio. En utilisant l'interpolation de trame, la fréquence d'images peut être augmentée jusqu'à une cible en définissant do_slowmo: True
et en fournissant un target_fps
qui doit être un multiple de initial_fps
. Cela permet de produire des vidéos à fréquence d'images élevée plus rapidement que si vous génériez toutes les images à partir de zéro avec le generator
.
Si vous le souhaitez, le nombre d'images générées peut être limité en fournissant sequence_settings.max_frames
. Dans ce cas, la durée de la vidéo générée sera plus courte que le clip audio fourni et sera : max_frames
/ initial_fps
.
Vidéo générée en utilisant le mode VQGAN-CLIP et Animation_2d de tammy
.
Vidéo complète (regardez en 4K pour une meilleure expérience ! : https://www.youtube.com/watch?v=T_bii9VLDk0
Vidéos générées en utilisant le mode de diffusion stable et d'interpolation de tammy
.
.pytest
.pre-commit install
.