تحقق من ملف Changelog للحصول على نظرة عامة عالمية على أحدث التعديلات! ؟
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynbتحقق من المشروع الرئيسي لمزيد من المعلومات حول الوحدات النمطية / الهيكل / الفئات الرئيسية.
* تحقق من مشروع Encoders للحصول على مزيد من المعلومات حول وحدة models/encoder
models.tts ):| ميزة | الطباعة / الطبقة | وصف |
|---|---|---|
| نص إلى كلام | tts | قم بتنفيذ TTS على النص الذي تريده مع النموذج الذي تريده |
| تدفق | tts_stream | تنفيذ TTS على النص الذي تدخله |
| TTS Logger | loggers.TTSLogger | يحول سجلات logging إلى التعبير وتشغيله |
يوفر دفتر text_to_speech عرضًا ملموسًا لوظيفة tts
البنى المتاحة:
Synthesizer :SV2TTS )Vocoder :يتم ضبط نماذج SV2TTS من نماذج Tacotron2 المسبقة ، باستخدام إجراء التعلم النقل الجزئي (انظر أدناه للحصول على التفاصيل) ، والذي يزيد من التدريب.
| اسم | لغة | مجموعة البيانات | المزج | Vocoder | تشفير المتحدث | مدرب | الأوزان |
|---|---|---|---|---|---|---|---|
| pretrained_tacotron2 | en | ljspeech | Tacotron2 | WaveGlow | / | نفيديا | محرك Google |
| tacotron2_siwis | fr | سيويس | Tacotron2 | WaveGlow | / | أنا | محرك Google |
| SV2TTS_TACOTRON2_256 | fr | Siwis ، Voxforge ، CommonVoice | SV2TTSTacotron2 | WaveGlow | محرك Google | أنا | محرك Google |
| SV2TTS_SIWIS | fr | Siwis ، Voxforge ، CommonVoice | SV2TTSTacotron2 | WaveGlow | محرك Google | أنا | محرك Google |
| SV2TTS_TACOTRON2_256_V2 | fr | Siwis ، Voxforge ، CommonVoice | SV2TTSTacotron2 | WaveGlow | محرك Google | أنا | محرك Google |
| SV2TTS_SIWIS_V2 | fr | سيويس | SV2TTSTacotron2 | WaveGlow | محرك Google | أنا | محرك Google |
يجب إلغاء الضغط على النماذج في pretrained_models/ الدليل!
ملاحظة مهمة : تتطلب نماذج NVIDIA المتوفرة على torch hub وحدة معالجة الرسومات المتوافقة مع التكوين الصحيح لـ pytorch . هذا هو السبب في أن كلا النموذجين يتم توفيرهما في نقطة تفتيش keras المتوقعة؟
نماذج sv2tts_siwis هي إصدار تم ضبطه من sv2tts_tacotron2_256 على مجموعة بيانات SIWIS (مكبر صوت واحد). يميل صياغة مجموعة بيانات متعددة على مجموعة بيانات واحدة إلى تحسين الاستقرار ، وإنتاج صوت بمزيد من التجويد ، مقارنةً ببساطة بتدريب نموذج المتحدث الواحد.
يتوفر عرض Google Colab في هذا الرابط!
يمكنك أيضًا العثور على بعض الصوت الذي تم إنشاؤه في example_outputs/ ، أو مباشرة في دفتر كولاب ؛)
تحقق من دليل التثبيت هذا للحصول على إرشادات خطوة بخطوة!
قد تضطر إلى تثبيت ffmpeg لتحميل / حفظ الصوت.
Google Colab tensorflow 2.x batch_size vocoder inference SV2TTS قبل similarity loss لاختبار إجراء تدريب جديد لضبط المتحدث الفردي TTS على المستند (قيد التقدم) SV2TTS على أساس تشفير مدرب على خسارة GE2E هناك طرق متعددة لتمكين تخليق الكلام multi-speaker :
speaker ID مضمن بطبقة Embedding قابلة للتعلم. ثم يتم تعلم التضمين المتحدث أثناء التدريب.Speaker Encoder (SE) لتضمين الصوت من السماعة المرجعية. غالبًا ما يشار إلى هذا zero-shot voice cloning ، لأنه يتطلب عينة فقط من السماعة (بدون تدريب).prompt-based للسيطرة على الكلام بمطالبات.SV2TTS ملاحظة: في الفقرات التالية ، يشير encoder إلى جزء Tacotron Encoder ، بينما يشير SE إلى نموذج speaker encoder (مفصل أدناه).
يستوحى Speaker Encoder-based Text-To-Speech من ورقة "من مكبر الصوت إلى مكبر الصوت إلى نص إلى كلام (SV2TTS)". اقترح المؤلفون تمديد بنية Tacotron-2 لتضمين معلومات حول صوت السماعة.
فيما يلي نظرة عامة قصيرة على الإجراء المقترح:
speaker verification . يأخذ هذا النموذج أساسًا كإدخال عينة صوتية (5-10 ثانية) من مكبر صوت ، وترميزها على ناقل D -dimensional ، المسمى embedding . يهدف هذا التضمين إلى التقاط المعلومات ذات الصلة حول صوت المتحدث (على سبيل المثال ، frequencies ، rythm ، pitch ، ...).Speaker Encoder (SE) لتشفير صوت السماعة لاستنساخ.Tacotron-2 ، بحيث يتمتع Decoder بالوصول إلى كل من النص المشفر وتضمين السماعة. الهدف من ذلك هو أن يتعلم Decoder استخدام speaker embedding لتضمين نسخ إيجابيته / التجويد / ... لقراءة النص بصوت هذا المتحدث.
هناك بعض القيود مع النهج أعلاه:
Speaker Encoder فصل مكبرات الصوت بشكل صحيح ، وترميز صوتهم بطريقة مفيدة للمشغل.لمعالجة هذه القيود ، فإن الحل المقترح هو إجراء تدريب من خطوتين:
CommonVoice . هذه واحدة من أكبر قاعدة بيانات متعددة اللغات للصوت ، على حساب صوتية صاخبة / متغيرة. وبالتالي ، فإن هذا غير مناسب لتدريب نماذج ذات جودة جيدة ، في حين أن المعالجة المسبقة لا تزال تساعد على الحصول على صوتيات واضحة.يجب أن يكون جزء SE قادرًا على التمييز بين مكبرات الصوت ، وتضمين (تشفير في متجه 1-D) بطريقة ذات معنى .
النموذج المستخدم في الورق هو نموذج LSTM من 3 طبقات مع طبقة تطبيع مدربة مع فقدان GE2E. القيد الرئيسي هو أن تدريب هذا النموذج بطيء حقًا ، واستغرق أسبوعين على 4 GPU في أطروحة Corentinj Master (راجع github له)
يقترح هذا المشروع بنية أبسط تعتمد على Convolutional Neural Networks (CNN) ، والتي هي أسرع بكثير للتدريب مقارنة بشبكات LSTM . علاوة على ذلك ، تم استخدام المسافة euclidian بدلاً من مقياس cosine ، والذي أظهر تقاربًا أسرع. بالإضافة إلى ذلك ، يُقترح مولد مخصص يعتمد على ذاكرة التخزين المؤقت لتسريع معالجة الصوت. سمحت هذه التعديلات بتدريب نموذج دقة 99 ٪ في غضون 2-3 ساعات على وحدة معالجة الرسومات RTX 3090 واحدة!
من أجل تجنب تدريب نموذج SV2TTS من نقطة الصفر ، والذي سيكون مستحيلًا تمامًا على وحدة معالجة الرسومات الواحدة ، يتم اقتراح إجراء partial transfer learning جديد.
يأخذ هذا الإجراء نموذجًا تم تدريبه مسبقًا بهندسة مختلفة قليلاً ، ونقل جميع الأوزان المشتركة (كما هو الحال في التعلم النقل المنتظم). بالنسبة للطبقات ذات الأوزان المختلفة ، يتم نقل الجزء المشترك فقط ، بينما تتم تهيئة الأوزان المتبقية إلى الأصفار. هذا ينتج عنه نموذج جديد له أوزان مختلفة لتقليد سلوك النموذج الأصلي.
في بنية SV2TTS ، يتم تمرير مكبر الصوت إلى الطبقة المتكررة من Tacotron2 decoder . يؤدي هذا إلى شكل إدخال مختلف ، مما يجعل مصفوفة أوزان الطبقة مختلفة. يسمح تعلم النقل الجزئي بإضفاء الطابع على النموذج بحيث يكرر سلوك طراز Tacotron2 الأصلي!
جهات الاتصال:
[email protected]الهدف من هذه المشاريع هو دعم وتعزيز التعليم والبحث في تكنولوجيا التعلم العميق. لتسهيل ذلك ، يتم توفير جميع التعليمات البرمجية المرتبطة بموجب ترخيص GNU Affero العام (AGPL) V3 ، يستكمل بفقرة يحظر الاستخدام التجاري (CF ملف الترخيص).
يتم إصدار هذه المشاريع على أنها "برنامج مجاني" ، مما يتيح لك استخدام البرنامج وتعديله ومشاركته بحرية ، شريطة أن تلتزم بشروط الترخيص. على الرغم من أن البرنامج متاح مجانًا ، إلا أنه ليس مجالًا عامًا ويحتفظ بحماية حقوق الطبع والنشر. تم تصميم شروط الترخيص لضمان أن كل مستخدم يمكنه استخدام وتعديل أي إصدار من الكود لمشاريعه التعليمية والبحثية الخاصة بهم.
إذا كنت ترغب في استخدام هذا المشروع في مسعى تجاري خاص ، فيجب عليك الحصول على ترخيص منفصل. لمزيد من التفاصيل حول هذه العملية ، يرجى الاتصال بي مباشرة.
بالنسبة لحمايتي ، من المهم أن نلاحظ أن جميع المشاريع متوفرة على أساس "كما هي" ، دون أي ضمانات أو شروط من أي نوع ، إما صريحة أو ضمنية. ومع ذلك ، لا تتردد في الإبلاغ عن مشكلات في مشروع المستودع ، أو تقديم طلب سحب لحله؟
إذا وجدت هذا المشروع مفيدًا في عملك ، فيرجى إضافة هذا الاقتباس لمنحه المزيد من الرؤية! ؟
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
رمز هذا المشروع هو مزيج من مشاريع GitHub متعددة ، للحصول على تطبيق Tacotron-2 قابل للتعديل بالكامل
dynamic decoder ، والذي تم تحسينه الآن وتحديثه ليكون متوافقًا مع Keras 3 .SV2TTS المقدمة من هذا المستودع ، مع اختلافات صغيرة وتحسينات.الأوراق: