Kode untuk makalah ICML 2024 Pembuatan Teks-ke-Audio Kreatif melalui Pemrograman Synthesizer . CTAG adalah metode untuk menghasilkan suara dari perintah teks dengan menggunakan synthesizer modular virtual. CTAG bergantung pada SynthAX, synthesizer modular cepat di JAX.
Anda dapat mendengar banyak contoh di situs web. Kode untuk mendapatkan hasil makalah akan ditemukan di repositori berbeda (segera hadir).
Anda dapat membuat lingkungan sebagai berikut
conda create -n ctag python=3.9
conda activate ctag
pip install -r requirements.txt
Secara default, kami menginstal JAX untuk CPU. Anda dapat menemukan detail selengkapnya di dokumentasi JAX tentang penggunaan JAX dengan akselerator Anda.
Anda juga harus mendownload checkpoint untuk LAION-CLAP sebagai berikut:
mkdir -p ctag/checkpoints && wget -i checkpoints.txt -P ctag/checkpoints
ctag/
Menghasilkan suara sangat sederhana! Secara default, ctag
berjalan pada CPU dengan ukuran populasi yang lebih rendah, tetapi Anda dapat mengubahnya dengan nilai konfigurasi
cd ctag
python text2synth.py system.device=cuda general.popsize=100
Ini akan menghasilkan direktori yang berisi log, hasil, dan eksperimen. Versi final setiap suara dapat ditemukan di experiments
, dan results
berisi semua iterasi.
Secara default, ini menggunakan perintah di ctag/data/esc50-sounds.txt
. Untuk mengubahnya, arahkan bidang ini ke file lain atau berikan string dengan beberapa perintah yang dipisahkan titik koma. Anda juga dapat menggantinya dari baris perintah:
# 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" '
Perhatikan bahwa saat ini, Anda harus menyediakan
Kami menggunakan Hydra untuk mengkonfigurasi ctag
. Konfigurasinya dapat ditemukan di ctag/conf/config.yaml
, dengan sub-konfigurasi khusus di sub-direktori ctag/conf/
.
Konfigurasi menentukan semua parameter (misalnya algoritma strategi, synthesizer, iterasi, prompt). Secara default, ini adalah yang digunakan untuk kertas. Anda dapat memilih model
sesuai dengan checkpoints
CLAP yang diunduh, strategi evosax
yang tersedia dalam konfigurasi, arsitektur synth
, dan synthconfig
. Di sinilah Anda juga memilih prompts
, duration
suara, jumlah iterations
, popsize
(ukuran populasi), jumlah proses independen per prompt n_runs
(jangan bingung dengan iterasi), dan seed
acak awal.
Kami menggunakan AX untuk menyapu hyperparameter suatu algoritma hanya dengan bidang konfigurasi. Pertama, Anda perlu memperbarui versi ax-platform
karena beberapa masalah ketergantungan dengan paket lain
pip install ax-platform==0.2.8
Kemudian Anda dapat menjalankan penyisiran sebagai berikut
python text2synth.py --multirun
Jika Anda menggunakan ctag
dalam penelitian Anda, harap kutip makalah berikut:
@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 }
}
Untuk komponen synthesizer itu sendiri, harap kutip 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 }
}
Kami mengakui dukungan finansial parsial dari Fulbright Spanyol. Kami juga mengucapkan terima kasih kepada MIT SuperCloud dan Lincoln Laboratory Supercomputing Center yang telah menyediakan sumber daya HPC yang telah berkontribusi terhadap hasil penelitian yang dilaporkan dalam makalah ini.