Код для статьи ICML 2024. Креативная генерация текста в аудио с помощью программирования синтезатора . CTAG — это метод генерации звуков из текстовых подсказок с помощью виртуального модульного синтезатора. CTAG зависит от SynthAX, быстрого модульного синтезатора в JAX.
На сайте можно услышать множество примеров. Код для получения результатов из статьи можно найти в другом репозитории (скоро).
Вы можете создать среду следующим образом
conda create -n ctag python=3.9
conda activate ctag
pip install -r requirements.txt
По умолчанию мы устанавливаем JAX для процессора. Более подробную информацию об использовании JAX с вашими ускорителями можно найти в документации JAX.
Вам также необходимо скачать контрольные точки для LAION-CLAP следующим образом:
mkdir -p ctag/checkpoints && wget -i checkpoints.txt -P ctag/checkpoints
ctag/
Генерировать звуки очень просто! По умолчанию ctag
работает на процессоре с меньшим размером популяции, но вы можете изменить это с помощью значений конфигурации.
cd ctag
python text2synth.py system.device=cuda general.popsize=100
Он создаст каталоги, содержащие журналы, результаты и эксперименты. Финальную версию каждого звука можно найти в experiments
, а results
содержат все итерации.
По умолчанию используются подсказки из ctag/data/esc50-sounds.txt
. Чтобы изменить это, укажите в этом поле другой файл или передайте строку с несколькими приглашениями, разделенными точкой с запятой. Вы также можете переопределить это из командной строки:
# From a prompts.txt file
python text2synth.py general.prompts=/path/to/prompts.txt
# From strings
python text2synth.py general.prompts= ' "a bird tweeting;walking on leaves" '
Обратите внимание, что в настоящее время вы должны предоставить
Мы используем Hydra для настройки ctag
. Конфигурацию можно найти в ctag/conf/config.yaml
, а определенные подконфигурации — в подкаталогах ctag/conf/
.
Конфигурации определяют все параметры (например, алгоритм стратегии, синтезатор, итерации, подсказки). По умолчанию это те, которые используются для бумаги. Выбрать model
можно по скачанным checkpoints
CLAP, стратегии evosax
, доступной в конфигурации, архитектуре synth
и synthconfig
. Здесь же вы выбираете prompts
, duration
звуков, количество iterations
, popsize
(размер популяции), количество независимых запусков на подсказку n_runs
(не путать с итерациями) и начальное случайное seed
.
Мы используем AX для проверки гиперпараметров алгоритма с помощью всего лишь поля конфигурации. Во-первых, вам необходимо обновить версию ax-platform
из-за некоторых проблем с зависимостями других пакетов.
pip install ax-platform==0.2.8
Затем вы можете запустить очистку следующим образом
python text2synth.py --multirun
Если вы используете ctag
в своем исследовании, пожалуйста, дайте ссылку на следующую статью:
@inproceedings { cherep2024creative ,
title = { Creative Text-to-Audio Generation via Synthesizer Programming } ,
author = { Cherep, Manuel and Singh, Nikhil and Shand, Jessica } ,
booktitle = { Forty-first International Conference on Machine Learning } ,
year = { 2024 }
}
Для самого компонента синтезатора укажите SynthAX:
@conference { cherep2023synthax ,
title = { SynthAX: A Fast Modular Synthesizer in JAX } ,
author = { Cherep*, Manuel and Singh*, Nikhil } ,
booktitle = { Audio Engineering Society Convention 155 } ,
month = { May } ,
year = { 2023 } ,
url = { http://www.aes.org/e-lib/browse.cfm?elib=22261 }
}
Мы признаем частичную финансовую поддержку Фулбрайта в Испании. Мы также выражаем признательность MIT SuperCloud и Суперкомпьютерному центру лаборатории Линкольна за предоставление ресурсов высокопроизводительных вычислений, которые способствовали результатам исследований, представленных в этих статьях.