مقدمة
إصدار Google Colab (الحوسبة السحابية المجانية في المتصفح)
التثبيت المحلي
يدعم
أفضل الممارسات
الإعداد والتنفيذ البسيط - محليًا وعبر colab.
لا داعي للعبث بتنزيل المتطلبات المسبقة وتثبيتها يدويًا
لدى Google Colab خليتين فقط للتنفيذ
يحتاج مستخدمو Windows إلى ملف واحد فقط للتثبيت والتحديث والتشغيل.
الخيارات الموثقة جيدًا أدناه.
لا مزيد من التساؤل عما يفعله أي شيء!
لمقطع الاختبار الذي مدته 9 ثوانٍ بدقة 720 بكسل و60 إطارًا في الثانية عبر Colab T4:
الأصلي Wav2Lip | ايزي-Wav2Lip |
---|---|
وقت التنفيذ: 6 د 53 ث | مدة التنفيذ: 56 ثانية |
هذا ليس خطأ مطبعي! تتراوح مدة مقطعي من 7 دقائق تقريبًا إلى أقل من دقيقة واحدة!
يتم حفظ بيانات التتبع بين أجيال نفس الفيديو، مما يوفر المزيد من الوقت:
Easy-Wav2Lip على نفس الفيديو مرة أخرى |
---|
مدة التنفيذ: 25 ثانية |
يقوم Easy-Wav2Lip بإصلاح الأخطاء المرئية على الشفاه:
3 خيارات للجودة:
سريع: Wav2Lip
تم التحسين: Wav2Lip مع قناع من الريش حول الفم لاستعادة الدقة الأصلية لبقية الوجه
محسّن: Wav2Lip + قناع + ترقية GFPGAN على الوجه
https://colab.research.google.com/github/anothermartz/Easy-Wav2Lip/blob/v8.3/Easy_Wav2Lip_v8.3.ipynb
المتطلبات: بطاقة Nvidia تدعم cuda 12.2 أو جهاز MacOS يدعم mps عبر Apple silicon أو AMD GPU
تحميل Easy-Wav2Lip.bat
ضعه في مجلد على جهاز الكمبيوتر الخاص بك (على سبيل المثال: في المستندات)
قم بتشغيله واتبع التعليمات. سيقوم بإنشاء مجلد يسمى Easy-Wav2Lip داخل أي مجلد تقوم بتشغيله منه.
قم بتشغيل هذا الملف عندما تريد استخدام Easy-Wav2Lip
يجب أن يتعامل هذا مع تثبيت كافة المكونات المطلوبة.
تأكد من تثبيت ما يلي وإمكانية الوصول إليه عبر جهازك الطرفي:
Python 3.10 (لقد اختبرت 3.10.11 فقط - قد لا تعمل الإصدارات الأخرى!)
بوابة
Windows وLinux: Cuda (مجرد وجود أحدث برامج تشغيل Nvidia سيفعل ذلك، لقد اختبرت الإصدار 12.2 فقط)
قم بتشغيل ما يلي في الجهاز الطرفي الخاص بك بمجرد الانتقال إلى المجلد الذي تريد تثبيت Easy-Wav2Lip:
قم بإعداد venv وتثبيت ffmpeg عليه ثم تثبيت Easy-Wav2Lip:
افتح cmd وانتقل إلى المجلد الذي تريد تثبيت EasyWav2Lip باستخدام cd EG: cd Documents
انسخ الكود التالي والصقه في نافذة cmd الخاصة بك: ملاحظة: سيتم إنشاء مجلدين في هذا الموقع: Easy-Wav2Lip وEasy-Wav2Lip-venv (تثبيت بيثون معزول)
py -3.10 -m venv Easy-Wav2Lip-venv Easy-Wav2Lip-venvScriptsactivate python -m pip install --upgrade pip python -m pip install requests set url=https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip python -c "import requests; r = requests.get('%url%', stream=True); open('ffmpeg.zip', 'wb').write(r.content)" powershell -Command "Expand-Archive -Path .\ffmpeg.zip -DestinationPath .\" xcopy /e /i /y "ffmpeg-master-latest-win64-gplbin*" .Easy-Wav2Lip-venvScripts del ffmpeg.zip rmdir /s /q ffmpeg-master-latest-win64-gpl git clone https://github.com/anothermartz/Easy-Wav2Lip.git cd Easy-Wav2Lip pip install -r requirements.txt python install.py
الآن لتشغيل Easy-Wav2Lip:
3. أغلق وأعد فتح cmd ثم cd في نفس الدليل كما في الخطوة 1.
4. الصق الكود التالي:
Easy-Wav2Lip-venvScriptsactivate cd Easy-Wav2Lip call run_loop.bat
انظر الاستخدام لمزيد من التعليمات.
قم بإعداد venv وتثبيت ffmpeg عليه ثم تثبيت Easy-Wav2Lip:
افتح Terminal وانتقل إلى المجلد الذي تريد تثبيت Easy0Wav2Kip باستخدام cd EG: cd ~/Documents
انسخ الكود التالي والصقه في نافذتك الطرفية: ملاحظة: سيتم إنشاء مجلدين في هذا الموقع: Easy-Wav2Lip وEasy-Wav2Lip-venv (تثبيت بيثون معزول)
python3.10 -m venv Easy-Wav2Lip-venv source EW2Lvenv/bin/activate python -m pip install --upgrade pip python -m pip install requests for file in ffmpeg ffprobe ffplay; do curl -O "https://evermeet.cx/ffmpeg/${file}-6.1.1.zip" unzip "${file}-6.1.1.zip" done mv -f ffmpeg ffprobe ffplay /Easy-Wav2Lip-venv/bin/ rm -f ffmpeg-6.1.1.zip ffprobe-6.1.1.zip ffplay-6.1.1.zip source EW2Lvenv/bin/activate git clone https://github.com/anothermartz/Easy-Wav2Lip.git cd Easy-Wav2Lip pip install -r requirements.txt python install.py
الآن لتشغيل Easy-Wav2Lip:
3. أغلق الوحدة الطرفية وأعد فتحها، ثم أدخل القرص المضغوط إلى نفس الدليل كما في الخطوة 1.
4. الصق الكود التالي:
source Easy-Wav2Lip-venv/bin/activate cd Easy-Wav2Lip ./run_loop.sh
بمجرد تثبيت كل شيء، يجب أن يظهر ملف يسمى config.ini.
أضف المسار (المسارات) إلى ملفات الفيديو والصوت الخاصة بك هنا وقم بتكوين الإعدادات حسب رغبتك.
نصيحة للمحترفين:
في نظام التشغيل Windows، اضغط مع الاستمرار على مفتاح Shift عند النقر بزر الماوس الأيمن على الملف الذي تريد استخدامه، ثم اضغط على "a" أو انقر فوق "نسخ كمسار" وسيحصل ذلك على المسار الذي يمكنك لصقه كملف فيديو أو ملف صوتي.
MacOS: انقر بزر الماوس الأيمن على الملف، واستمر في الضغط على مفتاح الاختيار (Alt) وحدد "نسخ [اسم الملف] كاسم مسار" من قائمة السياق.
احفظ config.ini وأغلقه، وسيبدأ هذا عملية Wav2Lip وسيتم حفظ ملفك في نفس الدليل مثل ملف video_path الخاص بك.
سيتم فتح config.ini مرة أخرى ويمكنك تغيير المدخلات والإعدادات.
راجع أفضل الممارسات أدناه للحصول على نصائح حول كيفية البدء.
راجع التغيير والتبديل المتقدم أدناه للحصول على شرح للإعدادات التي لم يتم شرحها بالفعل في config.ini
Wav2Lip الأصلي بالطبع.
تأتي الزيادة الهائلة في السرعة والجودة الأساسية المحسنة من cog-Wav2Lip.
التعليمات البرمجية للارتقاء باستخدام GFPGAN جاءت بشكل أساسي من wav2lip-hq-updated-ESRGAN.
لم أكن لأتمكن من القيام بذلك دون مساعدة الذكاء الاصطناعي؛ قبل القيام بذلك، كانت لدي خبرة قليلة جدًا في لغة بايثون! ماجستير في القانون المفضل: Bing Chat (يُسمى الآن "Copilot").
شكرًا لـ JustinJohn على صنع Wav2Lip_simplified colabs الذي ألهمني لصنع نسختي الخاصة، وحتى الأكثر بساطة.
إذا كنت تواجه مشكلات في تشغيل هذا، فيرجى الاطلاع على علامة تبويب المشكلات لمعرفة ما إذا كان شخص ما قد كتب عنها. إذا لم يكن الأمر كذلك، قم بإنشاء موضوع جديد ولكن تأكد من تضمين ما يلي:
إذا كولاب:
رقم إصدار Easy-Wav2Lip colab
معلومات عن الملفات المستخدمة
إذا التثبيت المحلي:
EasyWav2Lip.bat أو التثبيت اليدوي
نظام التشغيل (ويندوز 11، لينكس، الخ)
نموذج GPU
إصدار برنامج تشغيل GPU
نسخة بايثون
معلومات حول الملفات المستخدمة وإذا كانت الملفات الأخرى تعمل
بدون هذه المعلومات، سأطلبها على أي حال، وبالتالي فإن الرد حول المشكلة نفسها سيستغرق وقتًا أطول.
من المحتمل أنه إذا كان أي منها مختلفًا عن المتطلبات، فهذا هو السبب في أنه لا يعمل وقد يتعين عليك فقط استخدام إصدار colab إن لم يكن بالفعل.
للدردشة العامة حول هذا الموضوع وأي حديث آخر حول مزامنة الشفاه، سأكون في هذا الخلاف:
رابط الدعوة: https://discord.gg/FNZR9ETwKY
قناة Wav2Lip : https://discord.com/channels/667279414681272320/1076077584330280991
أفضل النتائج تأتي من ربط الخطاب بأفعال وتعبيرات المتحدث قبل إرساله عبر wav2lip!
ملفات الفيديو:
يجب أن يكون هناك وجه في جميع الإطارات وإلا سيفشل Wav2Lip
قم بقص أو إخفاء الوجوه التي لا ترغب في مزامنة الشفاه بها أو سيتم اختيارها بشكل عشوائي.
استخدم h264 .mp4 - قد تكون أنواع الملفات الأخرى مدعومة ولكن هذا هو ما يتم إخراجه به
الصور لم يتم اختبارها حاليا.
استخدم ملفًا صغيرًا بكل الطرق (جرب <720 بكسل، <30 ثانية، 30 إطارًا في الثانية وما إلى ذلك - قد تعمل الملفات الأكبر حجمًا ولكنها عادةً ما تكون السبب في فشلها)
في محاولتك الأولى، استخدم مقطعًا صغيرًا جدًا فقط للتعود على العملية، وبمجرد أن تصبح مألوفًا، يجب عليك تجربة ملفات أكبر لمعرفة ما إذا كانت تعمل أم لا.
الملفات الصوتية:
احفظه بصيغة wav وبنفس طول الفيديو المدخل.
ملاحظة: لقد لاحظت أنه يتم قطع حوالي 80 مللي ثانية من الفيديو/الصوت المعالج ولست متأكدًا من كيفية إصلاح ذلك، لذا تأكد من أن لديك ما يزيد قليلاً عن ما تحتاجه بالفعل!
يمكنك فقط ترميزه في ملف الفيديو الخاص بك وترك المسار الصوتي فارغًا، ولكن هذا سيضيف بضع ثوانٍ إلى وقت المعالجة لأنه يقسم الصوت من الفيديو
أو
حدد الملف الصوتي الخاص بك بشكل منفصل
لست متأكدًا من أنواع الملفات المدعومة، على الأقل تعمل ملفات wav و.mp3.
خيار | الايجابيات | سلبيات |
---|---|---|
Wav2Lip | + مزامنة شفاه أكثر دقة + محاولات إبقاء الفم مغلقاً عندما لا يكون هناك صوت | - في بعض الأحيان تنتج أسنان مفقودة (غير شائعة) |
Wav2Lip_GAN | + تبدو أجمل + يحافظ على التعبيرات الأصلية للمتكلم أكثر | - ليست جيدة في إخفاء حركات الشفاه الأصلية، خاصة عندما لا يكون هناك صوت |
أقترح تجربة Wav2Lip أولاً والتحول إلى إصدار GAN إذا واجهت تأثيرًا حيث يبدو أن مكبر الصوت به فجوات كبيرة في أسنانه.
عند التمكين، سيقوم wav2lip باقتصاص الوجه في كل إطار بشكل مستقل.
جيد للحركات السريعة أو القطع في الفيديو.
قد يسبب الوخز إذا كان الوجه بزاوية غريبة.
عند تعطيله، سيقوم wav2lip بمزج موضع الوجه المكتشف بين 5 إطارات.
جيد للحركات البطيئة، خاصة للوجوه ذات الزاوية غير المعتادة.
يمكن تعويض الفم عندما يتحرك الوجه داخل الإطار بسرعة، ويبدو فظيعًا بين القطع.
يتحكم هذا الخيار في عدد وحدات البكسل التي تتم إضافتها أو إزالتها من اقتصاص الوجه في كل اتجاه.
قيمة | مثال | تأثير |
---|---|---|
ش | ش = -5 | إزالة 5 بكسل من أعلى الوجه |
د | د = 10 | يضيف 10 بكسل إلى أسفل الوجه |
ل | ل = 0 | لا يوجد تغيير في يسار الوجه |
ر | ص = 15 | يضيف 15 بكسل على يمين الوجه |
يمكن أن تساعد الحشوة في إزالة الخطوط الصلبة عند الذقن أو حواف الوجه الأخرى، ولكن الحشو الزائد أو القليل جدًا يمكن أن يغير حجم الفم أو موضعه. من الممارسات الشائعة إضافة 10 بكسل إلى الأسفل، لكن يجب عليك تجربة قيم مختلفة للعثور على أفضل توازن لمقطعك.
يتحكم هذا الخيار في كيفية مزج الوجه المعالج مع الوجه الأصلي. وهذا ليس له أي تأثير على خيار الجودة "السريع".
الحجم سيزيد من حجم المنطقة التي يغطيها القناع.
يحدد التدرج مقدار المزج بين مركز القناع والحواف.
سيقوم Mouth_tracking بتحديث موضع القناع إلى مكان وجود الفم في كل إطار (أبطأ)
ملاحظة: تم بالفعل تقريب موضع الفم بشكل جيد بسبب اقتصاص الإطار على الوجه، قم بتمكين هذا فقط إذا وجدت مقطع فيديو حيث لا يبدو أن القناع يتبع الفم.
سيؤدي debug_mask إلى جعل الخلفية ذات تدرج رمادي والقناع ملون بحيث يمكنك بسهولة رؤية مكان القناع في الإطار.
يتيح لك هذا الخيار معالجة ملفات فيديو و/أو صوت متعددة تلقائيًا.
قم بتسمية ملفاتك برقم في النهاية، على سبيل المثال. Video1.mp4، Video2.mp4، وما إلى ذلك ووضعهم جميعًا في نفس المجلد.
ستتم معالجة الملفات بترتيب رقمي بدءًا من الملف الذي تحدده. على سبيل المثال، إذا قمت بتحديد Video3.mp4، فسوف يقوم بمعالجة Video3.mp4 وVideo4.mp4 وما إلى ذلك.
إذا قمت بتحديد ملفات فيديو مرقمة وملف صوتي غير مرقم، فسيتم معالجة كل فيديو بنفس الملف الصوتي. مفيد في إنشاء صور/مقاطع فيديو مختلفة تقول نفس السطر.
وبالمثل، إذا قمت بتحديد ملف فيديو غير مرقم وملفات صوتية مرقمة، فسوف يستخدم نفس الفيديو لكل ملف صوتي. مفيد لجعل نفس الصورة/الفيديو يقول أشياء مختلفة.
يؤدي هذا إلى إضافة لاحقة إلى ملفات الإخراج الخاصة بك حتى لا تحل محل النسخ الأصلية.
يضيف الإعدادات المستخدمة - وهو جيد لمقارنة الإعدادات المختلفة حيث ستعرف ما استخدمته لكل عرض. سيتم إضافة: Qualty_resolution_nosmooth_pads-UDLR EG: _Enhanced_720_nosmooth1_pads-U15D10L-15R30 لن يتم تضمين Pads_UDLR إذا تم ضبطها على 0. لن يتم تضمين الدقة إذا تم ضبطput_height على الدقة الكاملة
يعرض إدخال الفيديو/الصوت قبل المعالجة حتى تتمكن من التحقق للتأكد من اختيار الملف (الملفات) الصحيح. قد يعمل فقط مع .mp4، وأنا أعلم أنه لم يعمل على .avi الذي جربته. سيؤدي تعطيل هذا إلى توفير بضع ثوانٍ من وقت المعالجة لكل فيديو.
سيؤدي هذا إلى عرض إطار واحد فقط من الفيديو الخاص بك وعرضه بالحجم الكامل، وهذا حتى تتمكن من تعديل الإعدادات دون الحاجة إلى عرض الفيديو بأكمله في كل مرة. يتم استخدامframe_to_preview لتحديد إطار معين تريد التحقق منه - وقد لا يكون دقيقًا تمامًا بالنسبة للإطار الفعلي.