รหัสสำหรับกระดาษ ICML 2024 การสร้างข้อความเป็นเสียงอย่างสร้างสรรค์ผ่านการเขียนโปรแกรมซินธิไซเซอร์ CTAG เป็นวิธีการสร้างเสียงจากข้อความแจ้งโดยใช้ซินธิไซเซอร์โมดูลาร์เสมือน CTAG ขึ้นอยู่กับ SynthAX ซึ่งเป็นซินธิไซเซอร์แบบโมดูลาร์ที่รวดเร็วใน JAX
คุณสามารถฟังตัวอย่างมากมายบนเว็บไซต์ โค้ดสำหรับรับผลลัพธ์จากรายงานจะพบได้ในพื้นที่เก็บข้อมูลอื่น (เร็วๆ นี้)
คุณสามารถสร้างสภาพแวดล้อมได้ดังต่อไปนี้
conda create -n ctag python=3.9
conda activate ctag
pip install -r requirements.txt
ตามค่าเริ่มต้น เราจะติดตั้ง JAX สำหรับ CPU คุณสามารถค้นหารายละเอียดเพิ่มเติมได้ในเอกสาร 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
(ขนาดประชากร) จำนวนการรันอิสระต่อ prompt 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 }
}
เรารับทราบการสนับสนุนทางการเงินบางส่วนจาก Fulbright Spain นอกจากนี้เรายังรับทราบถึง MIT SuperCloud และ Lincoln Laboratory Supercomputing Center สำหรับการจัดหาทรัพยากร HPC ที่มีส่วนร่วมในผลการวิจัยที่รายงานในเอกสารเหล่านี้