التنفيذ الرسمي لـ TSELM: استخراج المتحدث المستهدف باستخدام الرموز المنفصلة ونماذج اللغة.
للإشارة إلى فئة النموذج، تحقق من exp/tselm/model.py مباشرة. لاحظ أنه يتم قص الصوت المختلط بطول 48080 (3.05 ثانية × 16 كيلو هرتز) ويتم قص الكلام المرجعي إلى 64080 (4.05 ثانية × 16 كيلو هرتز) للتدريب، على التوالي.
نقترح TSELM، وهي شبكة جديدة لاستخراج المتحدثين المستهدفين تعمل على الاستفادة من الرموز المميزة ونماذج اللغة. تستخدم TSELM طبقات متعددة منفصلة من WavLM كرموز إدخال وتتضمن آليات الانتباه المتبادل لدمج معلومات المتحدث المستهدف. يتم استخدام نماذج اللغة لالتقاط تبعيات التسلسل، بينما يتم استخدام HiFi-GAN القابل للتطوير لإعادة بناء الصوت من الرموز المميزة. من خلال تطبيق خسارة الإنتروبيا المتقاطعة، تقوم TSELM بنمذجة التوزيع الاحتمالي لرموز الإخراج، وبالتالي تحويل مشكلة الانحدار المعقدة لتوليد الصوت إلى مهمة تصنيف. تظهر النتائج التجريبية أن TSELM يحقق نتائج ممتازة في جودة الكلام ونتائج قابلة للمقارنة في وضوح الكلام.
requirements.txt
قبل إجراء التجارب، نحتاج إلى تنزيل النماذج المجمدة التالية المدربة مسبقًا.
اسم | وصلة | نتيجة |
---|---|---|
وافلم كبير | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-كبير |
كمينز | تحميل نقطة تفتيش Kmeans | kmeans_ckpt |
قابلة للتطوير HiFiGAN | تحميل نقطة تفتيش HiFiGAN | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
لاحظ أنه بالنسبة لمخرجات WavLM Large، يوصى باستنساخ المستودع بأكمله أو تنزيل الدليل بأكمله. بالنسبة لـ Kmeans وScalable HiFiGAN، نحتاج إلى استخراجهما بعد التنزيل.
يتم تحديد تكوين التدريب باستخدام حزمة hyperpyyaml
، وهي في الأساس انعكاس.
يمكن العثور على التكوين الخاص بتدريب TSELM-L
في config/tselm_l.yaml. قبل التدريب، تحتاج إلى تحديد التكوين للنماذج المجمدة المُدربة مسبقًا وتفاصيل التدريب الأخرى. يمكن العثور على التفاصيل في config/tselm_l.yaml وconfig/README.md.
بعد التكوين، يمكنك تشغيل
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
يحدد المسار إلى ملف التكوين.--log
يحدد دليل إخراج السجل. سيتم وضع كافة السجلات هنا.--ckpt_path
يحدد دليل نقطة التفتيش. يمكن استئناف التدريب باستخدام نفس مسار نقطة التفتيش. بعد التدريب، سيكون أفضل نموذج في
.
لاستنتاج نموذجنا على مجموعة اختبارات libri2mix، على سبيل المثال، يمكنك تشغيله
# # Generate output audio on libri2mix testset
python inference.py -scp < path_to_libri2mix_test_scp_folder >
-config ./config/tselm_l.yaml
-ckpt < path_to_ckpt >
--output < path_to_output_folder >
-gpus cuda:0 cuda:1 cuda:2 cuda:3
-proc 8
-scp
يحدد المسار إلى مجلد testset libri2mix الذي يحتوي على aux_s1.scp
و s1.scp
و mix_clean.scp
.-config
يحدد التكوين. يحتاج هذا التكوين إلى حقل model
.-ckpt
يحدد نقطة تفتيش النموذج.--output
يحدد دليل الإخراج. سيتم إخراج الصوت الناتج إلى هذا المجلد. ستكون أسمائهم هي نفس الأسماء الموجودة في ملفات .scp.-gpus
يحدد وحدة معالجة الرسومات المتاحة لتشغيل الاستدلال.-proc
يحدد العدد الإجمالي للعمليات لتشغيل الاستدلال بالتوازي. سيستخدم وحدة معالجة الرسومات المتوفرة ويقسم العمليات بالتساوي على كل جهاز. سيتم تقسيم البيانات بالتساوي لكل عملية. يمكن تنزيل نقطة تفتيش TSELM-L الخاصة بنا هنا.
يمكنك الاستدلال على مجموعة اختبارات libri2mix عن طريق استبدال -ckpt
بالمسار المؤدي إلى نقطة التفتيش.
لاحظ أنك لا تزال بحاجة إلى تنزيل النماذج المُدربة مسبقًا وإضافة مجلد نقاط التحقق المقابل إلى config/tselm_l.yaml.