ICML 2024論文《透過合成器程式實現創意文字到音訊產生》的程式碼。 CTAG 是一種使用虛擬模組化合成器根據文字提示產生聲音的方法。 CTAG 依賴 SynthAX,它是 JAX 中的快速模組化合成器。
您可以在網站上聽到很多範例。從論文中獲取結果的程式碼可以在不同的儲存庫中找到(即將推出)。
您可以如下建立環境
conda create -n ctag python=3.9
conda activate ctag
pip install -r requirements.txt
預設情況下,我們為 CPU 安裝 JAX。您可以在 JAX 文件中找到有關將 JAX 與加速器結合使用的更多詳細資訊。
您也必須下載 LAION-CLAP 的檢查點,如下所示:
mkdir -p ctag/checkpoints && wget -i checkpoints.txt -P ctag/checkpoints
ctag/
生成聲音非常簡單!預設情況下, ctag
在人口規模較小的 CPU 上運行,但您可以使用配置值來變更它
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/
的子目錄中。
配置定義了所有參數(例如策略演算法、合成器、迭代、提示)。預設情況下,這些是用於紙張的。您可以根據下載的 CLAP checkpoints
、配置中可用的evosax
策略、 synth
架構和synthconfig
配置來選擇model
。這也是您選擇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 }
}
我們感謝富布賴特西班牙公司的部分財政支持。我們也感謝麻省理工學院 SuperCloud 和林肯實驗室超級計算中心提供的 HPC 資源,這些資源為這些論文中報告的研究結果做出了貢獻。