Tammy es un proyecto de código abierto basado en Python/Pytorch que utiliza modelos de aprendizaje profundo para generar vídeos musicales originales. Permite a los usuarios generar automáticamente videos basados en transiciones de mensajes de texto que se sincronizan con varios aspectos de una canción , como su BPM o patrón de piano. El proyecto utiliza modelos de aprendizaje profundo en varias etapas del proceso de generación de video, incluida la separación de fuentes de audio con LSTM, la generación de cuadros con GAN, la mejora espacial con modelos de superresolución y el muestreo temporal con modelos de interpolación de cuadros. El objetivo de este proyecto es proporcionar un marco fácil de usar para crear canales de modelos personalizados para crear videos musicales únicos.
Características
Inicio rápido
Flujo de datos y estructura de código
Configuración de generación
Más ejemplos
Contribuyendo
Para un comienzo rápido:
sudo apt-get install ffmpeg libsndfile1
y git-lfs.pip install .
python run_tammy.py
que utilizará la configuración predeterminada en settingssettings_cpu.yaml
y la canción predeterminada thoughtsarebeings_clip.wav
. El paquete tammy
se puede usar fácilmente en su propio script u otros archivos de configuración y los archivos de audio se pueden usar con el script run_tammy.py
existente ejecutando python run_tammy.py --settings_file
.
tammy.prompthandler
genera la configuración para cada cuadro que se generará (por ejemplo, traducción o mensaje de texto) basándose en una descripción más concisa de la configuración de generación.tammy.sequence_maker
tiene un generator
que genera una secuencia de imágenes basada en mensajes de texto. Actualmente los modelos soportados son VQGAN-CLIP y Stable-Diffusiontammy.upscaling
amplía las imágenes generadas con superresolución. Actualmente el único modelo soportado es SwinIR .tammy.superslowmo
interpola imágenes generadas (opcionalmente mejoradas) para aumentar el FPS sin necesidad de generar cada fotograma con un sequence_maker
. Actualmente el único modelo compatible es SuperSloMo . La generación de video tiene muchas opciones de configuración que se especifican en un archivo
. En la carpeta settings
se pueden encontrar algunos archivos de configuración de ejemplo, utilizados principalmente para pruebas. La mayoría de los nombres de configuración (claves en settings.yaml
) deben explicarse por sí solos. Para mayor claridad, algunas configuraciones se explican a continuación.
Se utilizan instrumentos para dirigir las transiciones de fotogramas, en particular: zoom en el modo Animation_2d y solicitar velocidad de transición en el modo Interpolación. tammy
tiene dos opciones para proporcionar instrumentos:
do_spleet: True
y proporcione instrument:
zoom_instrument:
y nombre el archivo: file_name_fps.txt
donde fps
debe corresponder con el valor fps
en sequence_settings.initial_fps
. Los fotogramas clave se pueden generar manualmente con, por ejemplo, https://www.chigozie.co.uk/audio-keyframe-generator/ La configuración sequence_settings.initial_fps
determina el número de fotogramas generados, dada la duración del clip de audio. Al utilizar la interpolación de fotogramas, la velocidad de fotogramas se puede aumentar hasta un objetivo configurando do_slowmo: True
y proporcionando un target_fps
que debe ser un múltiplo de initial_fps
. Esto permite producir vídeos de alta velocidad de fotogramas más rápido que generar todos los fotogramas desde cero con el generator
.
Si lo desea, la cantidad de fotogramas generados se puede limitar proporcionando sequence_settings.max_frames
. En este caso, la duración del vídeo generado será más corta que el clip de audio proporcionado y será: max_frames
/ initial_fps
.
Video generado usando el modo VQGAN-CLIP y Animation_2d de tammy
.
Vídeo completo (¡míralo en 4K para disfrutar de la mejor experiencia!: https://www.youtube.com/watch?v=T_bii9VLDk0
Vídeos generados utilizando el modo de difusión estable e interpolación de tammy
.
.pytest
.pre-commit install
.