Официальный репозиторий Нильса Демерле, Филиппа Эслинга, Гийома Дораса и Дэвида Дженовы «Сочетание управления звуком и передачи стиля с использованием скрытой диффузии», принятый на ISMIR 2024 (ссылка на документ).
Обучение модели требует трех шагов: обработка набора данных, обучение автокодировщика, затем обучение модели диффузии.
python dataset/split_to_lmdb.py --input_path /path/to/audio_dataset --output_path /path/to/audio_dataset/out_lmdb
Или использовать Slakh с MIDI-обработкой (после загрузки Slakh2100 здесь):
python dataset/split_to_lmdb_midi.py --input_path /path/to/slakh --output_path /path/to/slakh/out_lmdb_midi --slakh True
python train_autoencoder.py --name my_autoencoder --db_path /path/to/lmdb --gpu #
После обучения автоэнкодера его необходимо экспортировать в файл torchscript .pt:
python export_autoencoder.py --name my_autoencoder --step # #
Можно пропустить весь этот этап и использовать предварительно обученный автокодировщик, такой как Encodec, завернутый в nn.module с методами кодирования и декодирования.
Обучение модели настраивается с помощью файлов конфигурации gin. Чтобы обучить звук аудиомодели:
python train_diffusion.py --db_path /data/nils/datasets/slakh/lmdb_midi/ --config midi --dataset_type midi --gpu #
Чтобы обучить модель преобразования MIDI в аудио:
python train_diffusion.py --db_path /path/to/lmdb --config main --dataset_type waveform --gpu #
будет объявлено позже