في هذه الورقة ، نقدم نموذج Styletts 2 ، وهو نموذج من النص إلى كلام (TTS) الذي يستفيد من انتشار النمط والتدريب اللامع مع نماذج لغة الكلام الكبيرة (SLMs) لتحقيق توليف TTS على مستوى الإنسان. تختلف Stylets 2 عن سابقتها من خلال نمذجة أنماطها كمتغير عشوائي كامن من خلال نماذج الانتشار لتوليد النمط الأنسب للنص دون الحاجة إلى خطاب مرجعي ، وتحقيق نشر كامن فعال مع الاستفادة من توليف الكلام المتنوع الذي توفره نماذج الانتشار. علاوة على ذلك ، فإننا نستخدم SLMs كبيرة المدربين مسبقًا ، مثل WAVLM ، كمتميزين من خلال نمذجة مدة الاختلاف الجديدة لدينا للتدريب الشامل ، مما يؤدي إلى تحسين الطبيعية في الكلام. يتجاوز Styletts 2 التسجيلات البشرية على مجموعة بيانات LJSPEEDE الواحدة وتطابقها على مجموعة بيانات VCTK المتعددة كما يحكم عليها المتحدثون باللغة الإنجليزية. علاوة على ذلك ، عندما تدرب على مجموعة بيانات Libritts ، يتفوق نموذجنا على النماذج السابقة المتاحة للجمهور لتكييف مكبر الصوت صفري. يحقق هذا العمل أول تخليق TTS على مستوى الإنسان على كل من مجموعات البيانات المفردة والمتعددة ، حيث يعرض إمكانات نشر الأسلوب والتدريب العدائي مع SLMs كبيرة.
ورقة: https://arxiv.org/abs/2306.07691
عينات الصوت: https://styletts2.github.io/
العرض التوضيحي عبر الإنترنت: Hugging Face (شكرًا @FakeryBakery على العرض التوضيحي الرائع عبر الإنترنت)
train_second.py (لقد جربت كل ما بوسعي لإصلاح هذا ولكن لم يكن له أي نجاح ، لذلك إذا كنت على استعداد للمساعدة ، فيرجى الاطلاع على #7) git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txtعلى Windows إضافة:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -Uقم أيضًا بتثبيت Phonemizer و Espeak إذا كنت ترغب في تشغيل العرض التوضيحي:
pip install phonemizer
sudo apt-get install espeak-ngالتدريب على المرحلة الأولى:
accelerate launch train_first.py --config_path ./Configs/config.ymlالتدريب في المرحلة الثانية (إصدار DDP لا يعمل ، لذلك يستخدم الإصدار الحالي DP ، انظر مرة أخرى #7 إذا كنت ترغب في المساعدة) :
python train_second.py --config_path ./Configs/config.yml يمكنك الركض على حد سواء على التوالي وسيقوم بتدريب المرحلتين الأولى والثانية. سيتم حفظ النموذج في التنسيق "EPOCH_1ST_ ٪ 05D.PTH" و "EPOCH_2ND_ ٪ 05D.PTH". سيتم حفظ نقاط التفتيش وسجلات Tensorboard في log_dir .
يجب أن يكون تنسيق قائمة البيانات filename.wav|transcription|speaker ، انظر Val_List.txt كمثال. هناك حاجة إلى ملصقات السماعات لنماذج متعددة المتحدثين لأننا بحاجة إلى أخذ عينات من الصوت المرجعي للتدريب على نموذج نشر النمط.
في config.yml ، هناك بعض التكوينات المهمة لرعاية:
OOD_data : مسار النصوص خارج التوزيع لتدريب SLM العدائي. يجب أن يكون التنسيق text|anything .min_length : الحد الأدنى لطول نصوص OOD للتدريب. هذا هو التأكد من أن الكلام المصنوع له الحد الأدنى من الطول.max_len : الحد الأقصى لطول الصوت للتدريب. الوحدة هي الإطار. نظرًا لأن حجم القفزة الافتراضي هو 300 ، فإن إطارًا واحدًا يبلغ حوالي 300 / 24000 (0.0125) في المرتبة الثانية. خفض هذا إذا واجهت قضية خارج الذاكرة.multispeaker : قم بالتعيين على True إذا كنت ترغب في تدريب نموذج متعدد الأطوار. هذا مطلوب لأن بنية Denoiser مختلفة عن النماذج الفردية والمتعددة.batch_percentage : هذا هو التأكد من خلال التدريب العدائي SLM لا توجد قضايا خارج الذاكرة (OOM). إذا واجهت مشكلة OOM ، فيرجى تعيين رقم أقل لهذا الغرض.في مجلد Utils ، هناك ثلاثة نماذج مدربة مسبقًا:
batch_size أو max_len . يمكنك الرجوع إلى المشكلة رقم 10 لمزيد من المعلومات. يتم تعديل البرنامج النصي من train_second.py الذي يستخدم DP ، حيث لا يعمل DDP مع train_second.py . يرجى الاطلاع على القسم الغامق أعلاه إذا كنت على استعداد للمساعدة في هذه المشكلة.
python train_finetune.py --config_path ./Configs/config_ft.yml يرجى التأكد من تنزيل نقطة تفتيش Libritts وفكها ضمن المجلد. التكوين الافتراضي config_ft.yml finetunes على ljspeech مع ساعة واحدة من بيانات الكلام (حوالي 1K عينات) لـ 50 epochs. استغرق هذا حوالي 4 ساعات لإنهاء أربع NVIDIA A100. تكون الجودة أسوأ قليلاً (على غرار NaturalSpeech على LJSpeech) من نموذج LJSPEEDE الذي تم تدريبه من نقطة الصفر مع 24 ساعة من بيانات الكلام ، والتي استغرقت حوالي 2.5 يومًا حتى النهاية على أربعة A100. يمكن العثور على العينات في #65 (تعليق).
إذا كنت تستخدم وحدة معالجة الرسومات الواحدة (لأن البرنامج النصي لا يعمل مع DDP) ويريد توفير سرعة التدريب و VRAM ، فيمكنك القيام (شكرًا Korakoe على صنع البرنامج النصي في #100):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.ymlقام Kreevoz بملاحظات مفصلة حول القضايا الشائعة في مجال العمل ، مع اقتراحات في تعظيم جودة الصوت: #81. بعض هذه تنطبق أيضا على التدريب من الصفر. @IieEnven11 قام أيضًا بإرشاد لضرب: #128.
joint_epoch : هذا على الأرجح لأن ذاكرة الوصول العشوائي الخاصة بك في GPU ليس كبيرًا بما يكفي لتشغيل SLM Perversarial Training. يمكنك تخطي ذلك ولكن الجودة قد تكون أسوأ. تعيين joint_epoch رقم أكبر من epochs يمكن أن تخطي تدريب SLM Advesariral. يرجى الرجوع إلى Interference_ljspeech.ipynb (مكبر صوت واحد) و Indeperation_libritts.ipynb (Multi-Speaker) للحصول على التفاصيل. بالنسبة إلى Libritts ، ستحتاج أيضًا إلى تنزيل Reference_audio.zip وفك ضغطه تحت العرض demo قبل تشغيل العرض التوضيحي.
يمكن تنزيل The Pretrained Styletts 2 على LJSPEED Corpus في 24 كيلو هرتز على https://huggingface.co/yl4579/styletts2-ljspeech/tree/main.
يمكن تنزيل طراز Styletts 2 على Libritts على https://huggingface.co/yl4579/styletts2-libritts/tree/main.
يمكنك استيراد Styletts 2 وتشغيله في الكود الخاص بك. ومع ذلك ، يعتمد الاستدلال على حزمة مرخصة من GPL ، لذلك لا يتم تضمينها مباشرة في هذا المستودع. يحتوي الشوكة المرخصة GPL على برنامج نصي قابل للاستيراد ، بالإضافة إلى واجهة برمجة تطبيقات البث التجريبية ، إلخ. تتوفر حزمة مرخصة بالكامل من معهد MIT تستخدم أيضًا (وإن كانت جودة أقل بسبب عدم التوافق بين الصوتيات و GRUUT).
قبل استخدام هذه النماذج التي تم تدريبها مسبقًا ، فإنك توافق على إبلاغ المستمعين بأن عينات الكلام يتم تصنيعها بواسطة النماذج التي تم تدريبها مسبقًا ، إلا إذا كان لديك إذن لاستخدام الصوت الذي تقوم بتوليفه. وهذا يعني أنك توافق على استخدام الأصوات التي تمنح متحدثوها إذنًا باستنساخ صوتهم ، إما مباشرة أو عن طريق الترخيص قبل جعل الأصوات المصنفة علنية ، أو يجب أن تعلن علنًا أن هذه الأصوات يتم تصنيعها إذا لم يكن لديك إذن لاستخدام هذه الأصوات.
الرمز: ترخيص معهد ماساتشوستس للتكنولوجيا
النماذج التي تم تدريبها مسبقًا: قبل استخدام هذه النماذج التي تم تدريبها مسبقًا ، فإنك توافق على إبلاغ المستمعين بأن عينات الكلام يتم تصنيعها بواسطة النماذج التي تم تدريبها مسبقًا ، إلا إذا كان لديك إذن لاستخدام الصوت الذي تقوم بتجميعه. وهذا يعني أنك توافق على استخدام الأصوات التي تمنح متحدثوها إذنًا باستنساخ صوتهم ، إما مباشرة أو عن طريق الترخيص قبل جعل الأصوات المصنفة علنية ، أو يجب أن تعلن علنًا أن هذه الأصوات يتم تصنيعها إذا لم يكن لديك إذن لاستخدام هذه الأصوات.