كود لورقة ICML 2024 لإنشاء النص الإبداعي إلى الصوت عبر برمجة المركب . CTAG هي طريقة لتوليد الأصوات من المطالبات النصية باستخدام مُركِّب معياري افتراضي. يعتمد CTAG على SynthAX، وهو مركب تركيبي سريع في JAX.
يمكنك سماع العديد من الأمثلة على الموقع. سيتم العثور على رمز الحصول على النتائج من الورقة في مستودع مختلف (قريبًا).
يمكنك إنشاء البيئة على النحو التالي
conda create -n ctag python=3.9
conda activate ctag
pip install -r requirements.txt
بشكل افتراضي، نقوم بتثبيت 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/
.
تحدد التكوينات جميع المعلمات (مثل خوارزمية الإستراتيجية، والمركب، والتكرارات، والمطالبات). بشكل افتراضي، هذه هي تلك المستخدمة للورق. يمكنك اختيار model
وفقًا checkpoints
CLAP التي تم تنزيلها، واستراتيجية evosax
المتوفرة في التكوين، وبنية synth
، و synthconfig
. هذا هو أيضًا المكان الذي تختار فيه 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 }
}
نحن نعترف بالدعم المالي الجزئي من فولبرايت إسبانيا. كما نعترف أيضًا بمركز MIT SuperCloud ومركز الحوسبة الفائقة لمختبر لينكولن لتوفير موارد HPC التي ساهمت في نتائج البحث الواردة في هذه الأوراق.