Code für das ICML 2024- Papier „Creative Text-to-Audio Generation via Synthesizer Programming“ . CTAG ist eine Methode zum Generieren von Sounds aus Textaufforderungen mithilfe eines virtuellen modularen Synthesizers. CTAG basiert auf SynthAX, einem schnellen modularen Synthesizer in JAX.
Viele Beispiele können Sie auf der Website hören. Der Code zum Abrufen der Ergebnisse aus der Arbeit wird in einem anderen Repository zu finden sein (in Kürze verfügbar).
Sie können die Umgebung wie folgt erstellen
conda create -n ctag python=3.9
conda activate ctag
pip install -r requirements.txt
Standardmäßig installieren wir JAX für CPU. Weitere Details zur Verwendung von JAX mit Ihren Beschleunigern finden Sie in der JAX-Dokumentation.
Außerdem müssen Sie die Checkpoints für LAION-CLAP wie folgt herunterladen:
mkdir -p ctag/checkpoints && wget -i checkpoints.txt -P ctag/checkpoints
ctag/
Sounds zu erzeugen ist ganz einfach! Standardmäßig läuft ctag
auf einer CPU mit einer geringeren Populationsgröße, Sie können dies jedoch mit Konfigurationswerten ändern
cd ctag
python text2synth.py system.device=cuda general.popsize=100
Es werden Verzeichnisse mit Protokollen, Ergebnissen und Experimenten generiert. Die endgültige Version jedes Sounds kann in experiments
gefunden werden, und results
enthalten alle Iterationen.
Standardmäßig werden hierfür die Eingabeaufforderungen in ctag/data/esc50-sounds.txt
verwendet. Um dies zu ändern, verweisen Sie dieses Feld auf eine andere Datei oder übergeben Sie eine Zeichenfolge mit mehreren durch Semikolons getrennten Eingabeaufforderungen. Sie können dies auch über die Befehlszeile überschreiben:
# 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" '
Beachten Sie, dass Sie derzeit angeben müssen
Wir verwenden Hydra, um ctag
zu konfigurieren. Die Konfiguration finden Sie in ctag/conf/config.yaml
, mit spezifischen Unterkonfigurationen in Unterverzeichnissen von ctag/conf/
.
Die Konfigurationen definieren alle Parameter (z. B. Strategiealgorithmus, Synthesizer, Iterationen, Eingabeaufforderungen). Standardmäßig werden diese für das Papier verwendet. Sie können das model
entsprechend den heruntergeladenen CLAP- checkpoints
, einer in der Konfiguration verfügbaren evosax
-Strategie, einer synth
-Architektur und einer synthconfig
auswählen. Hier wählen Sie auch die prompts
, die duration
der Töne, die Anzahl der iterations
, die popsize
(Bevölkerungsgröße), die Anzahl der unabhängigen Durchläufe pro Eingabeaufforderung n_runs
(nicht zu verwechseln mit den Iterationen) und den anfänglichen seed
aus.
Wir verwenden AX, um die Hyperparameter eines Algorithmus mit nur einem Konfigurationsfeld zu durchsuchen. Aufgrund einiger Abhängigkeitsprobleme mit anderen Paketen müssen Sie zunächst die Version von ax-platform
aktualisieren
pip install ax-platform==0.2.8
Anschließend können Sie den Kehrvorgang wie folgt durchführen
python text2synth.py --multirun
Wenn Sie ctag
in Ihrer Forschung verwenden, zitieren Sie bitte den folgenden Artikel:
@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 }
}
Für die Synthesizer-Komponente selbst geben Sie bitte SynthAX an:
@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 }
}
Wir bedanken uns für die teilweise finanzielle Unterstützung durch Fulbright Spanien. Wir danken auch dem MIT SuperCloud und dem Lincoln Laboratory Supercomputing Center für die Bereitstellung von HPC-Ressourcen, die zu den in diesen Artikeln berichteten Forschungsergebnissen beigetragen haben.