التنفيذ الرسمي لـ RAVE: جهاز تشفير تلقائي متغير لتركيب صوتي عصبي سريع وعالي الجودة (رابط المقالة) بقلم أنطوان كايلون وفيليب إيسلينج.
إذا كنت تستخدم RAVE كجزء من أداء موسيقي أو تثبيت، فتأكد من الاستشهاد بهذا المستودع أو المقالة!
إذا كنت ترغب في مشاركة / مناقشة / طرح أشياء حول RAVE، فيمكنك القيام بذلك في خادم Discord الخاص بنا!
يرجى التحقق من الأسئلة الشائعة قبل نشر أي مشكلة!
يتوفر RAVE VST لأنظمة التشغيل Windows وMac وLinux كنسخة تجريبية على صفحة ويب منتدى IRCAM المقابلة. بالنسبة للمشاكل، يرجى كتابة مشكلة هنا أو على صفحة مناقشة منتدى IRCAM.
البرامج التعليمية : تتوفر دروس تعليمية جديدة على صفحة ويب منتدى IRCAM، وستتوفر إصدارات الفيديو قريبًا!
يمكن استعادة التنفيذ الأصلي لنموذج RAVE باستخدام
git checkout v1
قم بتثبيت RAVE باستخدام
pip install acids-rave
تحذير: ينصح بشدة بتثبيت torch
والشعلة torchaudio
قبل acids-rave
، حتى تتمكن من اختيار الإصدار المناسب من الشعلة على موقع المكتبة. من أجل التوافق المستقبلي مع الأجهزة الجديدة (وبيئات Python الحديثة)، لم تعد rave-acids
تفرض شعلة==1.13 بعد الآن.
سوف تحتاج إلى ffmpeg على جهاز الكمبيوتر الخاص بك. يمكنك تثبيته محليًا داخل بيئتك الافتراضية باستخدام
conda install ffmpeg
كولاب لتدريب RAVEv2 متاح الآن بفضل hexorcismos!
يتضمن تدريب نموذج RAVE عادة ثلاث خطوات منفصلة، وهي إعداد مجموعة البيانات والتدريب والتصدير .
يمكنك معرفة إعداد مجموعة البيانات باستخدام طريقتين: العادية والكسولة. تتيح المعالجة المسبقة البطيئة تدريب RAVE مباشرة على الملفات الأولية (مثل mp3 وogg)، دون تحويلها أولاً. تحذير : سيؤدي التحميل البطيء لمجموعة البيانات إلى زيادة حمل وحدة المعالجة المركزية لديك بهامش كبير أثناء التدريب، خاصة على نظام التشغيل 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 | نموذج مستمر محسّن (أسرع، جودة أعلى) (الحد الأدنى من ذاكرة وحدة معالجة الرسومات: 16Go) | |
v2_small | الإصدار 2 مع مجال استقبال أصغر، وتدريب عدائي مُتكيف، ومولد ضوضاء، مُكيَّف لنقل جرس الصوت للإشارات الثابتة (الحد الأدنى من ذاكرة وحدة معالجة الرسومات: 8Go) | |
v2_nopqmf | (تجريبي) الإصدار 2 بدون pqmf في المولد (أكثر كفاءة لأغراض الانحناء) (الحد الأدنى من ذاكرة وحدة معالجة الرسومات: 16Go) | |
v3 | الإصدار 2 مع تفعيل Snake ومميز الوصف وتطبيع المثيلات التكيفية لنقل النمط الحقيقي (الحد الأدنى من ذاكرة وحدة معالجة الرسومات: 32Go) | |
منفصلة | نموذج منفصل (مشابه لـ SoundStream أو EnCodec) (الحد الأدنى لذاكرة وحدة معالجة الرسومات: 18Go) | |
com.onnx | تكوين v1 بدون ضوضاء لاستخدام onnx (الحد الأدنى من ذاكرة GPU: 6Go) | |
توت العُليق | تكوين خفيف الوزن متوافق مع استنتاج RaspberryPi 4 في الوقت الفعلي (الحد الأدنى من ذاكرة GPU: 5Go) | |
التنظيم (الإصدار الثاني فقط) | تقصير | هدف التشفير التلقائي المتغير (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
إلى النموذج السابق الذي تم تدريبه مسبقًا :
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
تمكين/تعطيل الحساب، أو استخدام وحدة معالجة الرسومات لتسريع الأمور (لا تزال تجريبية).
تم إصدار برنامج نصي لإنشاء الدفعات في الإصدار 2.3 للسماح بتحويل كمية كبيرة من الملفات
rave generate model_path path_1 path_2 --out out_path
حيث model_path
هو المسار إلى النموذج الذي تم تدريبه (الأصلي أو المكتوب)، path_X
عبارة عن قائمة بالملفات الصوتية أو الدلائل، و out_path
هو الدليل الخارجي للأجيال.
إذا كانت لديك أسئلة، أو ترغب في مشاركة تجربتك مع RAVE أو مشاركة المقطوعات الموسيقية التي تم إنجازها مع العارضة، فيمكنك استخدام علامة التبويب "مناقشة"!
عرض لما يمكنك فعله باستخدام RAVE وnn~ الخارجي لـ maxmsp !
باستخدام nn~ للبيانات النقية، يمكن استخدام 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، وتم تمويله من خلال المشاريع التالية