في ورقتنا ، نقترح Daft-Exprt ، وهو نموذج صوتي متعدد النطق يتقدم على أحدث طراز لنقل Prosody عبر أي نص. هذه واحدة من المهمة الأكثر تحديا ، ونادرا ما يتم معالجتها مباشرة ، في تخليق الكلام ، وخاصة للبيانات التعبيرية للغاية. يستخدم Daft-EXPRT طبقات تكييف الأفلام لإصدار معلومات إيجابيات مختلفة بشكل استراتيجي في جميع أنحاء الهندسة المعمارية. يقوم النموذج بتشفير ميزات Prosody التقليدية ذات المستوى المنخفض بشكل صريح مثل الملعب والثقة والمدة ، ولكن أيضًا المعلومات الإضافية ذات المستوى الأعلى والتي تساعد على توليد أصوات مقنعة في أنماط تعبيرية للغاية. يتم تفكيك هوية المتحدثين والمعلومات الإضافية من خلال استراتيجية التدريب العدائية التي تتيح نقل الدقة الدقيقة عبر المتحدثين. تُظهر النتائج التجريبية أن Daft-Exprt يتفوق بشكل كبير على خطوط الأساس القوية على مهام نقل Prosody عبر النص ، بينما تسفر عن الطبيعية مماثلة للنماذج التعبيرية الحديثة. علاوة على ذلك ، تشير النتائج إلى أن النموذج يتجاهل معلومات هوية السماعة من تمثيل Prosody ، وتوليد الكلام باستمرار مع الصوت المطلوب. تفضل بزيارة الصفحة التجريبية الخاصة بنا لعينات الصوت المتعلقة بالتجارب الورقية.
الإفصاح الكامل : النموذج المقدم في هذا المستودع ليس هو نفسه كما في تقييم الورق. تم تدريب نموذج الورقة ببيانات ملكية تمنعنا من إطلاقها علنًا.
نحن نقوم قبل تدريب Daft-Exprt على مجموعة من مجموعة بيانات الكلام LJ ومجموعة بيانات الكلام العاطفية (ESD) من Zhou et al.
تفضل بزيارة إصدارات هذا المستودع لتنزيل النموذج الذي تم تدريبه مسبقًا والاستماع إلى أمثلة نقل Prosody باستخدام هذا النموذج نفسه.
متطلبات:
نوصي باستخدام Conda لإدارة بيثون بيئة بيثون ، على سبيل المثال تنزيل وتثبيت Miniconda.
قم بإنشاء بيئة Python الخاصة بك وتثبيت التبعيات باستخدام Makefile:
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmakeسيتم تثبيت جميع تبعيات Linux/Conda/PIP بواسطة Makefile ، وسيتم تثبيت المستودع كحزمة PIP في وضع قابل للتحرير.
متطلبات:
قم ببناء صورة Docker باستخدام Dockerfile المرتبطة:
docker build -f environment/Dockerfile -t daft_exprt . سيوضح دليل البدء السريع هذا كيفية استخدام البرامج النصية المختلفة لهذا المستودع إلى:
توجد جميع البرامج النصية في دليل البرامج النصية.
يوجد رمز مصدر Daft-Exprt في دليل Daft_exprt.
يتم إنشاء جميع معلمات التكوين المستخدمة في البرامج النصية في Hparams.py.
كمثال على البداية السريعة ، نفكر في استخدام مجموعة بيانات الكلام 22khz LJ ومجموعة بيانات الكلام العاطفية 16KHz (ESD) من Zhou et al.
هذا يجمع بين ما مجموعه 11 مكبرات صوت. يجب أن تكون جميع مجموعات بيانات السماعات في نفس دليل الجذر. على سبيل المثال:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
في هذا المثال ، نستخدم صورة Docker المضمنة في القسم السابق:
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
يتوقع رمز المصدر بنية الأشجار المحددة لكل مجموعة بيانات مكبر صوت:
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
يجب تنسيق metadata.csv على النحو التالي:
wav_file_name_1|text_1
...
wav_file_name_N|text_N
نظرًا لكل مجموعة بيانات تسمياتها الخاصة ، لا يوفر هذا المشروع نصًا عالميًا جاهزًا.
ومع ذلك ، فإن البرنامج النصي format_dataset.py يقترح بالفعل الكود لتنسيق LJ و ESD:
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
في هذا القسم ، سوف الرمز:
لتجهيز جميع البيانات المنسقة المسبقة (أي LJ و ESD في هذا المثال):
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
سيؤدي ذلك إلى تشغيل البيانات المسبقة باستخدام المعلمات المفرطة الافتراضية التي تم تعيينها على Audios 22 كيلو هرتز.
سيتم تخزين جميع المخرجات المتعلقة بالتجربة في /workdir/repo_dir/trainings/EXPERIMENT_NAME .
يمكنك أيضًا استهداف مكبرات صوت محددة للمعالجة المسبقة للبيانات. على سبيل المثال ، للنظر فقط في مكبرات الصوت ESD:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
تأخذ وظيفة ما قبل العملية عدة وسيطات:
--features_dir : المسار المطلق حيث سيتم تخزين البيانات المعالجة مسبقًا. افتراضي لـ /workdir/repo_dir/datasets--proportion_validation : نسبة الأمثلة التي ستكون في مجموعة التحقق من الصحة. الافتراضي إلى 0.1 ٪ لكل مكبر صوت.--nb_jobs : عدد النوى التي يجب استخدامها للمعالجة المتعددة Python. إذا تم ضبطها على max ، يتم استخدام جميع نوى وحدة المعالجة المركزية. الافتراضي إلى 6 . لاحظ أنه إذا كانت هذه هي المرة الأولى التي تقوم فيها بتجهيز البيانات مسبقًا ، فستستغرق هذه الخطوة عدة ساعات.
يمكنك تقليل وقت الحوسبة عن طريق زيادة معلمة --nb_jobs .
بمجرد الانتهاء من المعالجة المسبقة ، التدريب على الإطلاق. للتدريب على جميع البيانات المسبقة:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
أو إذا استهدفت مكبرات صوت محددة أثناء المعالجة المسبقة (مثل مكبرات الصوت ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
سيتم تخزين جميع المخرجات المتعلقة بالتجربة في /workdir/repo_dir/trainings/EXPERIMENT_NAME .
تأخذ وظيفة القطار عدة حجج:
--checkpoint : المسار المطلق لنقطة تفتيش Daft-Exprt. افتراضي لـ ""--no_multiprocessing_distributed : تعطيل التدريب الموزع المتعدد المعالجة. الافتراضي إلى False--world_size : عدد العقد للتدريب الموزع. الافتراضي إلى 1 .--rank : رتبة عقدة للتدريب الموزع. الافتراضي إلى 0 .--master : عنوان URL يستخدم لإعداد التدريب الموزع. الافتراضي إلى tcp://localhost:54321 . ستطلق هذه القيم الافتراضية تدريبًا جديدًا يبدأ من التكرار 0 ، باستخدام جميع وحدات معالجة الرسومات المتاحة على الجهاز.
يفترض الرمز أن وحدة معالجة الرسومات الواحدة فقط متوفرة على الجهاز.
يتم ضبط حجم الدُفعة الافتراضي وتراكم التدرج ، على القيم للقيم لإعادة إنتاج حجم الدفعة 48 من الورقة.
يدعم الرمز أيضًا تسجيل Tensorboard. لعرض مخرجات التسجيل:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
بمجرد الانتهاء من التدريب ، يمكنك إنشاء مجموعة بيانات لضبط Vocoder:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
أو إذا استهدفت مكبرات صوت محددة أثناء المعالجة المسبقة والتدريب (مثل مكبرات الصوت ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
سيتم تخزين مجموعة بيانات الضبط الدقيقة في /workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset .
للحصول على مثال على كيفية استخدام Daft-Exprt لتوليف TTS ، قم بتشغيل البرنامج النصي synthesize.py.
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
يتم استخدام الجمل الافتراضية والكلمات المرجعية في البرنامج النصي.
يوفر البرنامج النصي أيضًا إمكانية:
--batch_size : مجموعة من الجمل بالتوازي--real_time_factor : تقدير أداء عامل الوقت الحقيقي DAFT-EXPRT بالنظر إلى حجم الدُفعة المختار--control : أداء التحكم المحلي في الإجهاد المحلي @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
أي مساهمة في هذا المستودع هو أكثر من موضع ترحيب!
إذا كان لديك أي ملاحظات ، فيرجى إرسالها إلى [email protected].
© [2021] Ubisoft Entertainment. جميع الحقوق محفوظة