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 资源,这些资源为这些论文中报告的研究结果做出了贡献。