- مقدمة
- ما الذي يستطيع RVC فعله وما الذي لا يستطيع
- الخطوة 1: التحقق من العتاد
- الخطوة 2: اختيار حزمة الاعتماديات المناسبة لبطاقة الرسوميات
- الخطوة 3: تثبيت RVC
- الخطوة 4: إعداد التسجيلات
- الخطوة 5: تدريب النموذج
- الخطوة 6: تحويل تسجيل
- الأخطاء الشائعة وكيفية التعامل معها
- أي صوت يمكنك تدريبه: الموافقة والقانون
- الخلاصة
- نوصي بـ
نحن مستعدون لمساعدتك
تحويل الصوت عبر RVC على حاسوب منزلي: دليل خطوة بخطوة
RVC (Retrieval-based Voice Conversion) مشروع مفتوح المصدر بترخيص MIT يغيّر جرس الصوت في تسجيل صوتي جاهز باستخدام نموذج مدرّب على تسجيلات الصوت المطلوب. كل شيء يعمل محلياً: التدريب والتحويل يجريان على بطاقة الرسوميات لديك، ولا تُرسل التسجيلات إلى أي مكان. ستجد أدناه الخطوات: العتاد، والتثبيت، وإعداد مجموعة البيانات، والتدريب، والتحويل، والأخطاء المعتادة.
ما الذي يستطيع RVC فعله وما الذي لا يستطيع
يأخذ RVC عبارة قيلت مسبقاً ويعيد أداءها بجرس مختلف. يبقى محتوى الكلام والتنغيم والإيقاع من التسجيل الأصلي. لا يقرأ البرنامج النص بنفسه ولا يترجم ما قيل: لدبلجة النص المكتوب تحتاج أولاً إلى مُركِّب كلام (TTS) أو تسجيل حي، ويُستخدم RVC في الخطوة الثانية.
كلمة retrieval في الاسم تعني البحث داخل بيانات التدريب. أثناء المعالجة يستبدل النظام خصائص الصوت الأصلي بأقرب خصائص من مجموعة التدريب (بحث top-1)، وبذلك يقلل «تسرّب» الجرس الأصلي إلى النتيجة. لا يُستخدم الإنترنت هنا: إذ يجري البحث في ملف الفهرس الذي يُنشأ بعد التدريب.
وفقاً لبيانات المطورين، يضم المشروع ما يلي:
- واجهة ويب للتدريب والتحويل؛
- واجهة رسومية منفصلة لتغيير الصوت في الزمن الحقيقي؛
- استخراج طبقة الصوت بخوارزمية RMVPE التي، بحسب تقييم المؤلفين، تعطي نتيجة أفضل من Crepe_full، وتعمل أسرع وتتطلب موارد أقل؛
- أدوات لفصل الصوت عن الموسيقى؛
- دمج النماذج.
النموذج الأساسي مُدرّب مسبقاً على نحو 50 ساعة من تسجيلات مجموعة VCTK المفتوحة، لذلك تكفي مجموعة بيانات صغيرة نسبياً لنموذجك الخاص.
الخطوة 1: التحقق من العتاد
تتوقف المتطلبات على المهمة. تحويل تسجيل باستخدام نموذج جاهز يحمّل النظام بدرجة أقل بكثير من تدريب نموذجك الخاص.
| المهمة | الأكثر أهمية | ما الذي تقوله وثائق المشروع |
|---|---|---|
| تدريب النموذج | سعة ذاكرة الفيديو | عند نقص الذاكرة خفّض batch size؛ وإذا لم تساعد حتى قيمة 1، فستحتاج إلى بطاقة رسوميات أخرى |
| تحويل التسجيلات | ذاكرة الفيديو وإعدادات المقاطع | للبطاقات ذات نحو 4 غيغابايت قد يعمل الأمر بعد تعديل المعلمات x_pad وx_query وx_center وx_max في config.py |
| إعداد مجموعة البيانات | ذاكرة الوصول العشوائي وأنوية CPU | عند أخطاء الذاكرة خفّض عدد خيوط CPU أو قسّم التسجيلات الطويلة مسبقاً |
| الزمن الحقيقي | زمن تأخر مسار الصوت | نحو 170 مللي ثانية من الإدخال إلى الإخراج، ونحو 90 مللي ثانية مع أجهزة ASIO |
يشير batch size إلى عدد المقاطع التي تُعالج في خطوة تدريب واحدة. كلما زاد، صار التدريب أكثر استقراراً وأسرع، لكنه احتاج إلى ذاكرة فيديو أكبر. لذلك فإن بطاقة الرسوميات ذات الذاكرة الأكبر تقلّص وقت التدريب بالدرجة الأولى، ولا تغيّر جودة الصوت.
قبل شراء المكوّنات، من المنطقي اختبار حاسوبك الحالي على مجموعة صغيرة: قسّم 10 دقائق من التسجيل، وشغّل تدريباً قصيراً، وعالج عبارة واحدة. سيظهر بذلك أين يختنق النظام تحديداً: في ذاكرة الفيديو أو ذاكرة الوصول العشوائي أو المعالج. وإذا كنت تحتاج الحاسوب ليس لـ RVC فقط، بل أيضاً للنماذج اللغوية أو توليد الصور، فمتطلبات بطاقة الرسوميات لتلك الاستخدامات مختلفة.
الخطوة 2: اختيار حزمة الاعتماديات المناسبة لبطاقة الرسوميات
الإصدار الحالي من المشروع مخصص لـ Python 3.12 x64، ويوصى لـ Linux باستخدام Ubuntu 24.04. وتعتمد حزمة البرمجيات على بطاقة الرسوميات:
| العتاد | ما الذي يجب تثبيته |
|---|---|
| NVIDIA GeForce RTX 50 | PyTorch 2.7.1 بإصدار CUDA 12.8، ثم الملف requirments_cu128_py312.txt |
| NVIDIA قبل RTX 50 | PyTorch 2.7.1 مع CUDA 11.8، ثم requirments_cu118_py312.txt |
| AMD أو Intel أو المعالج فقط | الملف requirments_cpu_py312.txt؛ على Windows التسريع عبر DirectML، وعلى Linux تُجرى الحسابات على CPU |
الخطأ الإملائي «requirments» موجود في أسماء الملفات من وضع المؤلفين، لذلك يجب إدخاله كما هو. لبطاقات AMD وIntel على Windows ستحتاج أيضاً إلى ملف النموذج rmvpe.onnx.
إذا لم ترغب في تثبيت البيئة يدوياً، فهناك Applio: مشروع مبني على RVC يوفّر تطبيق سطح مكتب لـ Windows وmacOS وLinux. تذكر وثائق Applio استخدام NVIDIA عبر CUDA، والتكوينات المدعومة من AMD وApple عبر MPS. تحتوي الحزمة المترجمة لـ Windows بالفعل على بيئة Python الخاصة بها؛ يكفي فك ضغطها وتشغيل run-applio.bat.
الخطوة 3: تثبيت RVC
- نزّل مستودع RVC-Project/Retrieval-based-Voice-Conversion-WebUI من GitHub إلى مجلد لا يحتوي مساره على مسافات أو أقواس أو أحرف غير لاتينية.
- أنشئ بيئة Python 3.12 افتراضية وحدّث pip وsetuptools وwheel.
- لبطاقات NVIDIA، ثبّت أولاً زوج PyTorch المناسب، ثم ملف الاعتماديات من الجدول أعلاه.
- على Windows، ضع
ffmpeg.exeوffprobe.exeفي جذر مجلد المشروع. وعلى Ubuntu ثبّت حزم ffmpeg وlibsndfile1 وlibportaudio2. - نزّل النماذج المدرّبة مسبقاً من مستودع lj1995/VoiceConversionWebUI على Hugging Face: يلزم
hubert_baseوrmvpe.ptللتحويل، وتلزم مجلداpretrainedوpretrained_v2والأرشيفmute.zip(يُفك إلىlogs/mute) للتدريب. - شغّل واجهة الويب بالأمر
python webui.pyأو بالملفgo-webui.bat. ستُفتح في المتصفح على المنفذ 7865. وتُشغّل واجهة العمل بالزمن الحقيقي عبرgo-realtime_gui.bat.
الخطوة 4: إعداد التسجيلات
تتحدد جودة النموذج تقريباً بالكامل بمجموعة البيانات. توصيات الأسئلة الشائعة للمشروع:
- الحجم الأمثل من 10 إلى 50 دقيقة من الكلام النظيف؛
- للصوت شديد التميّز بجودة جيدة قد تكفي 5 إلى 10 دقائق؛
- لا يُنصح بأقل من دقيقة واحدة من التسجيل؛
- إذا كان الصوت نظيفاً والجرس متجانساً، فيمكن زيادة مجموعة البيانات.
قواعد عملية للإعداد:
- سجّل في غرفة هادئة وبميكروفون واحد، من دون موسيقى أو صدى أو إزالة ضوضاء «فورية».
- إذا وُجدت موسيقى في الخلفية، فافصل الصوت أولاً بأداة الفصل المدمجة.
- أزل الوقفات الطويلة والسعال والطقطقة وأصوات الآخرين.
- ضع الملفات في مجلد واحد من دون مجلدات متداخلة: وفقاً للتعليمات القديمة للمشروع لا تُحمّل الملفات من المجلدات الفرعية.
- تحقق من المسار: فالمسافات والأقواس والرموز غير اللاتينية في مسار التسجيلات تسبب أخطاء FFmpeg وترميز UTF-8.
يقطع البرنامج التسجيلات الطويلة تلقائياً عند الوقفات، ثم إلى مقاطع بنحو 4 ثوانٍ مع تداخل مقداره 0,3 ثانية. وإذا نفدت ذاكرة الوصول العشوائي في هذه المرحلة، فمن المفيد تقسيم الملفات مسبقاً إلى أجزاء مدة كل منها بضع دقائق.
الخطوة 5: تدريب النموذج
يتم التدريب في واجهة الويب على ثلاث مراحل:
- معالجة البيانات. حدّد اسم التجربة وبيّن إن كان النموذج يحتاج إلى طبقة الصوت (وهي إلزامية للغناء). تُقطع التسجيلات وتُعاد معاينة ترددها.
- استخراج الخصائص. يحسب البرنامج طبقة الصوت وخصائص الكلام HuBERT. ومن المنطقي اختيار RMVPE لطبقة الصوت.
- التدريب والفهرس. شغّل تدريب النموذج انطلاقاً من الأوزان المدرّبة مسبقاً، ثم أنشئ فهرس الخصائص (مكتبة faiss، والملف
added_XXX.index).
يعتمد عدد العصور التدريبية المطلوب على جودة التسجيلات:
| مجموعة البيانات | عدد العصور الموصى به في الأسئلة الشائعة |
|---|---|
| تسجيلات مشوشة وضعيفة الجودة | 20-30، والزيادة لن تحسن النتيجة |
| تسجيلات نظيفة بطول كافٍ | يمكن استخدام عدد أكبر، و200 مقبول |
اختر batch size من الأسفل إلى الأعلى: ابدأ بقيمة صغيرة وزدها ما دام التدريب يعمل من دون خطأ نقص الذاكرة. ومن الملائم مراقبة استخدام ذاكرة الفيديو على NVIDIA بالأمر nvidia-smi.
الخطوة 6: تحويل تسجيل
يتكون النموذج الجاهز من ملفين: الأوزان .pth (توضع في assets/weights/) والفهرس .index (في assets/indices/). يعمل التحويل من دون الفهرس، لكنه يحافظ على الجرس بدرجة أسوأ.
التحكم الرئيسي في علامة تبويب التحويل هو index rate:
- القيمة 1 تسحب الصوت بأقصى قدر نحو الجرس الموجود في تسجيلات التدريب؛
- القيمة 0 توقف مزج الخصائص من الفهرس؛
- إذا كانت مجموعة البيانات طويلة ونظيفة، تقل أهمية الفهرس ويمكن عدم استخدامه.
للاختبار الأول، من الأفضل تسجيل عبارة جديدة بصوتك لم تكن موجودة في مجموعة البيانات. هكذا يتضح فوراً إن كان النموذج قد تعلّم نقل الجرس، لا أنه حفظ مقاطع التدريب فحسب.
الأخطاء الشائعة وكيفية التعامل معها
| العَرَض | السبب | الحل |
|---|---|---|
| CUDA out of memory أثناء التدريب | batch size كبير جداً | خفّض batch size؛ وإذا لم تساعد حتى القيمة 1 فذاكرة الفيديو غير كافية |
| نقص ذاكرة الفيديو أثناء التحويل | مقاطع معالجة كبيرة | خفّض x_pad وx_query وx_center وx_max في config.py |
| خطأ في ذاكرة الوصول العشوائي أثناء الإعداد | عمليات متوازية كثيرة | خفّض عدد خيوط CPU، وقسّم التسجيلات الطويلة |
| خطأ FFmpeg أو UTF-8 | مسار يتضمن مسافات أو أقواساً أو رموزاً غير لاتينية | انقل المشروع والتسجيلات إلى مسار لاتيني بسيط |
| يُسمع الصوت الأصلي في النتيجة | فهرس ضعيف أو index rate منخفض | ارفع index rate وتحقق من إنشاء الفهرس |
أي صوت يمكنك تدريبه: الموافقة والقانون
للتجارب الأولى، يناسب صوتك أنت على أفضل وجه: فبه تختبر التقنية والجودة معاً من دون مسائل تتعلق بالحقوق. أما صوت شخص آخر فالأمر معه أكثر تعقيداً.
- البيانات الشخصية. قد يُعامل التسجيل الصوتي كبيانات شخصية في دولة الإمارات إذا أمكن التعرف إلى شخص من خلاله. ويتطلب جمع هذه البيانات أو استخدامها أساساً قانونياً، ومن أهمه موافقة الشخص المعني؛ لذا يجب أن تكون الموافقة واضحة ومحددة وموثقة، ولا سيما عندما يُستخدم التسجيل لتدريب نموذج.
- البيانات البيومترية. لا يصبح كل تسجيل صوتي تلقائياً بيانات بيومترية، لكن يزداد هذا الاحتمال عندما تُستخدم خصائص الصوت لتحديد هوية شخص أو التحقق منها. في هذه الحالة يلزم التعامل معه بعناية إضافية والامتثال لقواعد حماية البيانات المعمول بها في الإمارات.
- حقوق المؤدي. قد تتمتع تسجيلات الأداء التمثيلي أو الموسيقي بحماية قانونية وحقوق مجاورة. وجود الملف في مصدر مفتوح أو متاح للعامة لا يمنح بحد ذاته حق تدريب نموذج عليه أو إعادة استخدام الأداء.
ينبغي أن يحدد الاتفاق مع صاحب الصوت التسجيلات المستخدمة في التدريب، وأين ستُستخدم النتائج، ومن سيحصل على حق الوصول إلى النموذج، ومتى تُحذف الملفات. وعند النشر، اذكر بوضوح أن الصوت حُوّل بواسطة شبكة عصبية ولا تقدّم العبارات المنشأة على أنها كلمات حقيقية قالها الشخص.
الخلاصة
يمكن تشغيل RVC على حاسوب منزلي عادي: تكفي بطاقة رسوميات متوسطة للتحويل، وتحدد سعة ذاكرة الفيديو أساساً سرعة التدريب وbatch size الممكن. ولا يؤثر العتاد في النتيجة بقدر ما تؤثر مجموعة البيانات: إذ تعطي 10-50 دقيقة من كلام نظيف لشخص واحد نموذجاً متوقع السلوك. أما إذا احتجت إلى جهاز لعدة مهام شبكات عصبية في وقت واحد، فيمكن اختيار تكوين به هامش في ذاكرة الفيديو وذاكرة الوصول العشوائي من مُكوّن HYPERPC.
نوصي بـ