ICML 2024論文「Creative Text-to-Audio Generation via Synthesizer Programming」のコード。 CTAG は、仮想モジュラー シンセサイザーを使用してテキスト プロンプトからサウンドを生成する方法です。 CTAG は、JAX の高速モジュラー シンセサイザーである SynthAX に依存しています。
ウェブサイトで多くの例を聞くことができます。論文から結果を取得するコードは別のリポジトリにあります (近日公開予定)。
以下のように環境を構築できます
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" '
現時点では、次のものを提供する必要があることに注意してください。
ctag
設定には Hydra を使用します。設定は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 }
}
私たちはフルブライト スペインによる部分的な資金援助に感謝します。また、これらの論文内で報告された研究結果に貢献した HPC リソースを提供した MIT SuperCloud およびリンカーン研究所スーパーコンピューティング センターにも感謝します。