Tammy é um projeto de código aberto baseado em Python/Pytorch que usa modelos de aprendizagem profunda para gerar vídeos musicais originais. Ele permite que os usuários gerem vídeos automaticamente com base em transições de prompt de texto que são sincronizadas com vários aspectos de uma música , como BPM ou padrão de piano. O projeto utiliza modelos de aprendizagem profunda em vários estágios do processo de geração de vídeo, incluindo separação de fontes de áudio com LSTMs, geração de quadros com GANs, upscaling espacial com modelos de super-resolução e upsampling temporal com modelos de interpolação de quadros. O objetivo deste projeto é fornecer uma estrutura fácil de usar para construir pipelines de modelos personalizados para criar vídeos musicais exclusivos.
Características
Início rápido
Fluxo de dados e estrutura de código
Configurações de geração
Mais exemplos
Contribuindo
Para um início rápido:
sudo apt-get install ffmpeg libsndfile1
e git-lfs.pip install .
python run_tammy.py
que usará as configurações padrão em settingssettings_cpu.yaml
e a música padrão thoughtsarebeings_clip.wav
. O pacote tammy
pode ser facilmente usado em seu próprio script ou outros arquivos de configuração e arquivos de áudio podem ser usados com o script run_tammy.py
existente executando python run_tammy.py --settings_file
.
tammy.prompthandler
gera as configurações para cada quadro a ser gerado (por exemplo, tradução ou prompt de texto) com base em uma descrição mais concisa das configurações de geração.tammy.sequence_maker
possui um generator
que gera uma sequência de imagens com base em prompts de texto. Atualmente os modelos suportados são VQGAN-CLIP e Stable-Diffusiontammy.upscaling
aumenta as imagens geradas com super-resolução. Atualmente o único modelo suportado é o SwinIR .tammy.superslowmo
interpola imagens geradas (opcionalmente ampliadas) para aumentar o FPS sem a necessidade de gerar cada quadro com um sequence_maker
. Atualmente o único modelo suportado é o SuperSloMo . A geração de vídeo possui muitas definições de configuração que são especificadas em um arquivo
. Alguns exemplos de arquivos de configuração, usados principalmente para testes, podem ser encontrados na pasta settings
. A maioria dos nomes de configurações (chaves em settings.yaml
) devem ser autoexplicativos. Para maior clareza, algumas configurações são explicadas abaixo.
Os instrumentos são usados para orientar as transições de quadros, em particular: zoom no modo Animation_2d e alerta de velocidade de transição no modo Interpolação. tammy
tem duas opções para fornecer instrumentos:
do_spleet: True
e forneça instrument:
zoom_instrument:
e nomeie o arquivo: file_name_fps.txt
onde fps
deve corresponder ao valor fps
em sequence_settings.initial_fps
. Os quadros-chave podem ser gerados manualmente com, por exemplo, https://www.chigozie.co.uk/audio-keyframe-generator/ A configuração sequence_settings.initial_fps
determina o número de quadros gerados, dada a duração do clipe de áudio. Ao usar a interpolação de quadros, a taxa de quadros pode ser aumentada para um alvo definindo do_slowmo: True
e fornecendo um target_fps
que deve ser um múltiplo de initial_fps
. Isso permite produzir vídeos com alta taxa de quadros mais rapidamente do que gerar todos os quadros do zero com o generator
.
Se desejar, o número de quadros gerados pode ser limitado fornecendo sequence_settings.max_frames
. Neste caso, a duração do vídeo gerado será menor que o clipe de áudio fornecido e será: max_frames
/ initial_fps
.
Vídeo gerado usando o modo VQGAN-CLIP e Animation_2d de tammy
.
Vídeo completo (assista em 4K para melhor experiência!: https://www.youtube.com/watch?v=T_bii9VLDk0
Vídeos gerados usando o modo de difusão estável e interpolação de tammy
.
.pytest
.pre-commit install
.