การใช้งาน RAVE อย่างเป็นทางการ: โปรแกรมเข้ารหัสอัตโนมัติแบบแปรผันเพื่อการสังเคราะห์เสียงทางประสาทที่รวดเร็วและมีคุณภาพสูง (ลิงก์บทความ) โดย Antoine Caillon และ Philippe Esling
หากคุณใช้ RAVE เป็นส่วนหนึ่งของการแสดงดนตรีหรือการติดตั้ง อย่าลืมอ้างอิงที่เก็บข้อมูลนี้หรือบทความนี้ !
หากคุณต้องการแบ่งปัน / พูดคุย / ถามสิ่งต่าง ๆ เกี่ยวกับ RAVE คุณสามารถทำได้ในเซิร์ฟเวอร์ที่ไม่ลงรอยกันของเรา !
โปรดตรวจสอบคำถามที่พบบ่อยก่อนที่จะโพสต์ปัญหา!
RAVE VST RAVE VST สำหรับ Windows, Mac และ Linux มีให้บริการในรูปแบบเบต้าบนเว็บเพจ Forum IRCAM ที่เกี่ยวข้อง สำหรับปัญหา โปรดเขียนปัญหาที่นี่หรือบนหน้าอภิปรายของ Forum IRCAM
บทช่วยสอน : บทช่วยสอนใหม่มีอยู่บนเว็บเพจ Forum IRCAM และวิดีโอเวอร์ชันจะมาเร็ว ๆ นี้!
การใช้งานดั้งเดิมของโมเดล RAVE สามารถกู้คืนได้โดยใช้
git checkout v1
ติดตั้ง RAVE โดยใช้
pip install acids-rave
คำเตือน ขอแนะนำอย่างยิ่งให้ติดตั้ง torch
และ torchaudio
ก่อน acids-rave
เพื่อให้คุณสามารถเลือกเวอร์ชันที่เหมาะสมของคบเพลิงบนเว็บไซต์ห้องสมุดได้ เพื่อความเข้ากันได้กับอุปกรณ์ใหม่ในอนาคต (และสภาพแวดล้อม Python สมัยใหม่) rave-acids
จะไม่บังคับใช้ torch==1.13 อีกต่อไป
คุณจะต้องมี ffmpeg บนคอมพิวเตอร์ของคุณ คุณสามารถติดตั้งภายในสภาพแวดล้อมเสมือนของคุณได้โดยใช้
conda install ffmpeg
colab เพื่อฝึก RAVEv2 พร้อมใช้งานแล้วในตอนนี้ ต้องขอบคุณ hexorcismos !
การฝึกโมเดล RAVE มักจะเกี่ยวข้องกับ 3 ขั้นตอนแยกกัน ได้แก่ การเตรียมชุดข้อมูล การฝึก และ การส่งออก
คุณสามารถทราบได้ว่าเตรียมชุดข้อมูลโดยใช้สองวิธี: แบบปกติและแบบ Lazy การประมวลผลล่วงหน้าแบบ Lazy ช่วยให้ RAVE สามารถฝึกฝนได้โดยตรงบนไฟล์ Raw (เช่น mp3, ogg) โดยไม่ต้องแปลงไฟล์ก่อน คำเตือน : การโหลดชุดข้อมูลแบบ Lazy จะเพิ่มภาระ CPU ของคุณเป็นจำนวนมากระหว่างการฝึก โดยเฉพาะบน Windows อย่างไรก็ตาม สิ่งนี้อาจมีประโยชน์เมื่อฝึกฝนเกี่ยวกับคลังเสียงขนาดใหญ่ซึ่งไม่พอดีกับฮาร์ดไดรฟ์เมื่อไม่มีการบีบอัด ไม่ว่าในกรณีใด ให้เตรียมชุดข้อมูลของคุณโดยใช้
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 มีการกำหนดค่าที่แตกต่างกันมากมาย เวอร์ชันปรับปรุงของ v1 เรียกว่า v2
และจึงสามารถฝึกฝนได้
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
นอกจากนี้เรายังมีการกำหนดค่าแบบแยกส่วน คล้ายกับ SoundStream หรือ EnCodec
rave train --config discrete ...
ตามค่าเริ่มต้น RAVE ถูกสร้างขึ้นด้วยการโน้มน้าวใจที่ไม่เป็นสาเหตุ หากคุณต้องการสร้างโมเดลเชิงสาเหตุ (ซึ่งจะช่วยลดเวลาแฝงโดยรวมของโมเดล) คุณสามารถใช้โหมดเชิงสาเหตุ
rave train --config discrete --config causal ...
ใหม่ใน 2.3 ยังมีการเพิ่มข้อมูลเพื่อปรับปรุงลักษณะทั่วไปของแบบจำลองในระบบข้อมูลต่ำ คุณสามารถเพิ่มการเพิ่มข้อมูลได้โดยการเพิ่มไฟล์การกำหนดค่าการเพิ่มด้วยคำสำคัญ --augment
rave train --config v2 --augment mute --augment compress
ไฟล์การกำหนดค่าอื่นๆ จำนวนมากมีอยู่ใน rave/configs
และสามารถนำมารวมกันได้ นี่คือรายการการกำหนดค่าและการเสริมที่มีอยู่ทั้งหมด:
พิมพ์ | ชื่อ | คำอธิบาย |
---|---|---|
สถาปัตยกรรม | เวอร์ชัน 1 | รุ่นต่อเนื่องดั้งเดิม (หน่วยความจำ GPU ขั้นต่ำ : 8Go) |
เวอร์ชัน 2 | ปรับปรุงโมเดลต่อเนื่อง (เร็วขึ้น คุณภาพสูงขึ้น) (หน่วยความจำ GPU ขั้นต่ำ : 16Go) | |
v2_small | v2 พร้อมสนามรับสัญญาณที่เล็กกว่า การฝึกอบรมฝ่ายตรงข้ามที่ปรับปรุงแล้ว และเครื่องกำเนิดสัญญาณรบกวน ดัดแปลงสำหรับการถ่ายโอนเสียงสำหรับสัญญาณที่อยู่นิ่ง (หน่วยความจำ GPU ขั้นต่ำ : 8Go) | |
v2_nopqmf | (ทดลอง) v2 ที่ไม่มี pqmf ในเครื่องกำเนิดไฟฟ้า (มีประสิทธิภาพมากกว่าสำหรับการดัดงอ) (หน่วยความจำ GPU ขั้นต่ำ: 16Go) | |
v3 | v2 พร้อมการเปิดใช้งาน Snake, ตัวจำแนกคำอธิบาย และการปรับมาตรฐานอินสแตนซ์แบบปรับได้สำหรับการถ่ายโอนสไตล์จริง (หน่วยความจำ GPU ขั้นต่ำ: 32Go) | |
ไม่ต่อเนื่อง | รุ่นแยก (คล้ายกับ SoundStream หรือ EnCodec) (หน่วยความจำ GPU ขั้นต่ำ : 18Go) | |
onnx | การกำหนดค่า Noiseless v1 สำหรับการใช้งาน onnx (หน่วยความจำ GPU ขั้นต่ำ: 6Go) | |
ราสเบอร์รี่ | การกำหนดค่าน้ำหนักเบาเข้ากันได้กับการอนุมาน RaspberryPi 4 แบบเรียลไทม์ (หน่วยความจำ GPU ขั้นต่ำ: 5Go) | |
การทำให้เป็นมาตรฐาน (v2 เท่านั้น) | ค่าเริ่มต้น | วัตถุประสงค์ของการเข้ารหัสอัตโนมัติแบบแปรผัน (ELBO) |
วาสเซอร์สไตน์ | วัตถุประสงค์ของตัวเข้ารหัสอัตโนมัติ Wasserstein (MMD) | |
ทรงกลม | วัตถุประสงค์ของตัวเข้ารหัสอัตโนมัติแบบทรงกลม | |
ผู้เลือกปฏิบัติ | spectral_discriminator | ใช้ตัวแยกแยะ MultiScale จาก EnCodec |
คนอื่น | สาเหตุ | ใช้การโน้มน้าวใจที่เป็นสาเหตุ |
เสียงรบกวน | เปิดใช้งานเครื่องสังเคราะห์เสียง V2 | |
ไฮบริด | เปิดใช้งานอินพุตเมลสเปกโตรแกรม | |
การเสริม | ปิดเสียง | สุ่มปิดชุดข้อมูล (ค่าเริ่มต้น: 0.1) บังคับใช้โมเดลเพื่อเรียนรู้ความเงียบ |
บีบอัด | บีบอัดรูปคลื่นแบบสุ่ม (เทียบเท่ากับการขยายแสงแบบไม่เป็นเชิงเส้นของแบตช์) | |
ได้รับ | ใช้เกนสุ่มกับรูปคลื่น (ช่วงเริ่มต้น: [-6, 3]) |
เมื่อฝึกฝนแล้ว ให้ส่งออกโมเดลของคุณเป็นไฟล์ torchscript โดยใช้
rave export --run /path/to/your/run (--streaming)
การตั้งค่าสถานะ --streaming
จะเปิดใช้งานการโน้มน้าวใจแบบแคช ทำให้โมเดลเข้ากันได้กับการประมวลผลแบบเรียลไทม์ หากคุณลืมใช้โหมดสตรีมมิ่งและพยายามโหลดโมเดลใน Max คุณจะได้ยินเสียงคลิกสิ่งประดิษฐ์
สำหรับโมเดลแยก เราจะเปลี่ยนเส้นทางผู้ใช้ไปยังไลบรารี msprior
ที่นี่ อย่างไรก็ตาม เนื่องจากไลบรารีนี้ยังคงอยู่ในช่วงทดลอง เวอร์ชันก่อนหน้าจากเวอร์ชัน 1.x จึงมีการรวมเข้ากับเวอร์ชัน 2.3 อีกครั้ง
วิธีฝึกอบรมรุ่นก่อนหน้าสำหรับโมเดล RAVE ที่ผ่านการฝึกอบรมแล้ว :
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
สิ่งนี้จะฝึกก่อนหน้าค่าแฝงของโมเดลที่ได้รับการฝึกล่วงหน้า path/to/your/run
และบันทึกโมเดลและบันทึกเทนเซอร์บอร์ดลงในโฟลเดอร์ /path/to/output
หากต้องการเขียนสคริปต์ก่อนหน้าพร้อมกับโมเดล RAVE ให้ส่งออกโมเดลของคุณโดยระบุคำสำคัญ --prior
ให้กับ pretrained ของคุณก่อน :
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
มีโมเดลสตรีมมิ่งที่ได้รับการฝึกไว้ล่วงหน้าหลายรุ่นอยู่ที่นี่ เราจะคอยอัปเดตรายการด้วยโมเดลใหม่ๆ
ส่วนนี้จะแสดงวิธีการโหลด RAVE ภายใน nn~
เพื่อใช้งานจริงกับ Max/MSP หรือ PureData
โมเดล RAVE ที่ได้รับการฝึกล่วงหน้าชื่อ darbouka.gin
ที่มีอยู่ในคอมพิวเตอร์ของคุณสามารถโหลดได้ภายใน nn~
โดยใช้ไวยากรณ์ต่อไปนี้ โดยที่วิธีเริ่มต้นถูกตั้งค่าเป็นส่งต่อ (เช่น เข้ารหัสแล้วถอดรหัส)
สิ่งนี้ทำสิ่งเดียวกันกับแพตช์ต่อไปนี้ แต่จะเร็วกว่าเล็กน้อย
การเข้าถึงอย่างชัดเจนในการแสดงค่าแฝงที่ได้รับจาก RAVE ช่วยให้เราสามารถโต้ตอบกับการแสดงโดยใช้เครื่องมือประมวลผลสัญญาณ Max/MSP หรือ PureData:
ตามค่าเริ่มต้น RAVE สามารถใช้เป็นเครื่องมือถ่ายโอนสไตล์ โดยขึ้นอยู่กับอัตราส่วนการบีบอัดขนาดใหญ่ของโมเดล เมื่อเร็วๆ นี้ เราได้เพิ่มเทคนิคที่ได้รับแรงบันดาลใจจาก StyleGAN เพื่อรวม Adaptive Instance Normalization เข้ากับกระบวนการสร้างใหม่ ซึ่งช่วยให้กำหนดสไตล์ แหล่งที่มา และ เป้าหมาย ได้โดยตรงภายใน Max/MSP หรือ PureData โดยใช้ระบบแอตทริบิวต์ของ nn~
คุณลักษณะอื่นๆ เช่น enable
หรือ gpu
สามารถเปิด/ปิดใช้งานการคำนวณ หรือใช้ GPU เพื่อเร่งความเร็วสิ่งต่างๆ (ยังอยู่ในช่วงทดลอง)
สคริปต์การสร้างแบทช์ได้รับการเผยแพร่ในเวอร์ชัน 2.3 เพื่อให้สามารถแปลงไฟล์จำนวนมากได้
rave generate model_path path_1 path_2 --out out_path
โดยที่ model_path
เป็นพาธไปยังโมเดลที่ได้รับการฝึกของคุณ (ต้นฉบับหรือแบบสคริปต์) path_X
รายการของไฟล์เสียงหรือไดเร็กทอรี และ out_path
ไดเร็กทอรีออกของรุ่นต่างๆ
หากคุณมีคำถาม ต้องการแบ่งปันประสบการณ์ของคุณกับ RAVE หรือแบ่งปันผลงานดนตรีที่ทำกับโมเดลนี้ คุณสามารถใช้แท็บการสนทนา !
การสาธิตสิ่งที่คุณสามารถทำได้ด้วย RAVE และ nn~ ภายนอกสำหรับ maxmsp !
การใช้ nn~ สำหรับ puredata ทำให้ RAVE สามารถใช้แบบเรียลไทม์บนแพลตฟอร์มแบบฝังได้!
คำถาม : การประมวลผลล่วงหน้าของฉันค้าง โดยแสดง 0it[00:00, ?it/s]
คำตอบ : ซึ่งหมายความว่าไฟล์เสียงในชุดข้อมูลของคุณสั้นเกินไปที่จะให้ขอบเขตชั่วคราวที่เพียงพอสำหรับ RAVE ลองลดหน้าต่างสัญญาณด้วย --num_signal XXX(samples)
ด้วย preprocess
โดยไม่ลืมหลังจากนั้นเพื่อเพิ่ม --n_signal XXX(samples)
ด้วย train
คำถาม : ในระหว่างการฝึก ฉันได้รับข้อยกเว้นที่คล้ายกับ ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
คำตอบ : ซึ่งหมายความว่าชุดข้อมูลของคุณมีชุดข้อมูลไม่เพียงพอที่จะคำนวณ PCA แฝงภายใน ซึ่งต้องมีตัวอย่างอย่างน้อย 128 ตัวอย่าง (จากนั้นจึงรวมชุด)
งานนี้ดำเนินการโดย IRCAM และได้รับทุนสนับสนุนจากโครงการต่อไปนี้