+++ أخبار: تم تحديث طراز NISQA مؤخرًا إلى NISQA v2.0. يوفر الإصدار الجديد تنبؤات متعددة الأبعاد بدقة أعلى ويسمح بتدريب النموذج وتحقيقه.
التنبؤ بجودة الكلام:
NISQA هو نموذج التعلم العميق/إطار عمل للتنبؤ بجودة الكلام. يمكن استخدام أوزان نموذج NISQA للتنبؤ بجودة عينة الكلام التي تم إرسالها من خلال نظام الاتصالات (على سبيل المثال مكالمة الهاتف أو الفيديو). إلى جانب جودة الكلام بشكل عام ، توفر NISQA أيضًا تنبؤات لأبعاد الجودة ، والتلوين ، والانقطاع ، والهرة لإعطاء المزيد من البصيرة لسبب تدهور الجودة.
التنبؤ الطبيعية TTS:
يمكن استخدام أوزان نموذج NISQA-TTS لتقدير طبيعية الكلام الاصطناعي الناتج عن تحويل الصوت أو نظام النص إلى كلام (Siri ، Alexa ، إلخ).
التدريب/العصي:
يمكن استخدام NISQA لتدريب نماذج التنبؤ الجديدة ذات جودة الكلام أحادية الطرف أو مزدوجة الطرفين مع بنيات التعلم العميق المختلفة ، مثل CNN أو DFF-> الالتحاق الذاتي أو LSTM-> بجلد الاهتمام أو التجميع الأقصى. يمكن أيضًا تطبيق الأوزان النموذجية المقدمة لتحقيق Finetune النموذج المدرب على البيانات الجديدة أو للتعلم النقل إلى مهمة الانحدار المختلفة (على سبيل المثال تقدير جودة الكلام المعزز ، أو تقدير تشابه المتحدث ، أو التعرف على العاطفة).
مجموعات بيانات جودة الكلام:
نحن نقدم مجموعة كبيرة من أكثر من 14000 عينة من الكلام مع جودة الكلام الذاتية وعلامات أبعاد جودة الكلام.
مزيد من المعلومات حول بنية نموذج التعلم العميق ، ومجموعات بيانات التدريب المستعملة ، وخيارات التدريب ، انظر ورقة NISQA و Wiki.
لتثبيت المتطلبات تثبيت Anaconda ثم استخدم:
conda env create -f env.yml
سيؤدي ذلك إلى إنشاء بيئة جديدة باسم "NISQA". قم بتفعيل هذه البيئة للمضي قدمًا:
conda activate nisqa
نحن نقدم أمثلة لاستخدام NISQA للتنبؤ بجودة عينات الكلام ، وتدريب نموذج جودة الكلام الجديد ، وتقييم أداء نموذج جودة الكلام المدربين.
هناك ثلاثة أوزان نموذجية مختلفة متوفرة ، يجب تحميل الأوزان المناسبة اعتمادًا على المجال:
| نموذج | إخراج التنبؤ | اِختِصاص | اسم الملف |
|---|---|---|---|
| NISQA (v2.0) | الجودة الشاملة ، والضغط ، والتلوين ، والانقطاع ، والارتفاع | خطاب ينتقل | nisqa.tar |
| NISQA (v2.0) MOS فقط | الجودة الإجمالية فقط (للتعلم في Finetuning/Transfer) | خطاب ينتقل | NISQA_MOS_ONLY.TAR |
| NISQA-TTS (v1.0) | طبيعية | خطاب توليف | NISQA_TTS.TAR |
هناك ثلاثة أوضاع متاحة للتنبؤ بجودة الكلام عبر حجج سطر الأوامر:
هام: حدد " nisqa.tar " للتنبؤ بجودة عينة الكلام المنقولة و " NISQA_TTS.TAR " للتنبؤ بطبيعة عينة الكلام المصنفة.
للتنبؤ بجودة استخدام ملف .wav واحد:
python run_predict.py --mode predict_file --pretrained_model weights/nisqa.tar --deg /path/to/wav/file.wav --output_dir /path/to/dir/with/results
للتنبؤ بجودة جميع ملفات .wav في مجلد استخدام:
python run_predict.py --mode predict_dir --pretrained_model weights/nisqa.tar --data_dir /path/to/folder/with/wavs --num_workers 0 --bs 10 --output_dir /path/to/dir/with/results
للتنبؤ بجودة جميع ملفات .wav المدرجة في جدول CSV استخدام:
python run_predict.py --mode predict_csv --pretrained_model weights/nisqa.tar --csv_file files.csv --csv_deg column_name_of_filepaths --num_workers 0 --bs 10 --output_dir /path/to/dir/with/results
سيتم طباعة النتائج إلى وحدة التحكم وحفظها في ملف CSV في مجلد معين (اختياري مع -output_dir). لتسريع التنبؤ ، يمكن زيادة عدد العمال وحجم الدُفعة في Pytorch Dataloader (اختياري مع -Num_Workers و - -BS). في حالة ملفات الاستريو -يمكن استخدام MS_Channel لتحديد قناة الصوت.
لاستخدام الأوزان النموذجية لتحديد النموذج على مجموعة بيانات جديدة ، لا يلزم سوى ملف CSV مع أسماء الملفات والعلامات. يتم التحكم في تكوين التدريب من ملف yaml ويمكن بدء تشغيله على النحو التالي:
python run_train.py --yaml config/finetune_nisqa.yaml
إذا تم استخدام مجموعة NISQA ، فيجب تحديث وسيطتين فقط في ملف YAML وكنت مستعدًا للذهاب: data_dir إلى مجلد NISQA_Corpus المستخرج و output_dir ، حيث يجب تخزين النتائج.
إذا كنت تستخدم مجموعة البيانات الخاصة بك أو ترغب في تحميل نموذج NISQA-TTS ، فستكون هناك حاجة إلى بعض التحديثات الأخرى.
يجب أن يحتوي ملف CSV على ثلاثة أعمدة على الأقل مع الأسماء التالية
db مع أسماء مجموعات البيانات الفردية لكل ملفfilepath_deg filepath إلى ملف WAV المتدهورة ، إما المسارات المطلقة أو بالنسبة إلى data_dir (يمكن تغيير اسم عمود CSV في YAML)mos مع الملصقات المستهدفة (يمكن تغيير اسم عمود CSV في YAML) يجب تحديث finetune_nisqa.yaml على النحو التالي:
data_dir إلى المجلد الرئيسي ، الذي يحتوي على ملف CSV ومجموعات البياناتoutput_dir إلى مجلد الإخراج بأوزان ونتائج النموذج المحفوظpretrained_model للنموذج المسبق ، إما nisqa_mos_only.tar للكلام الطبيعي أو nisqa_tts.tar لخطاب توليفcsv_file اسم CSV مع filepaths والملصقات المستهدفةcsv_deg CSV الذي يحتوي على FilePaths (على سبيل المثال filepath_deg )csv_mos_train و csv_mos_val CSV أسماء الأعمدة للقيمة الهدف (مثل mos )csv_db_train و csv_db_val من مجموعات البيانات التي تريد استخدامها للتدريب والتحقق من الصحة. يجب أن تكون أسماء مجموعات البيانات في عمود db .راجع التعليقات في ملف تكوين YAML و Wiki (لم تتم إضافته بعد) للحصول على المزيد من خيارات التدريب المتقدمة. تتمثل نقطة البداية الجيدة في استخدام NISQA Corpus لبدء التدريب بالتكوين القياسي.
يمكن أيضًا استخدام NISQA كإطار لتدريب نماذج جودة الكلام الجديدة مع بنيات التعلم العميقة المختلفة. هيكل النموذج العام كما يلي:
يمكن تخطي نماذج الأطر والاعتماد على الوقت ، على سبيل المثال لتدريب نموذج LSTM بدون CNN الذي يستخدم الخطوة الأخيرة للتنبؤ. أيضا يمكن إضافة مرحلة الاعتماد على الوقت الثاني ، على سبيل المثال لهيكل الالتحاق LSTM. يمكن التحكم بسهولة في بنية النموذج عبر ملف تكوين YAML. يمكن بدء التدريب مع تكوين نموذج NISQA القياسي مع NISQA Corpus على النحو التالي:
python run_train.py --yaml config/train_nisqa_cnn_sa_ap.yaml
إذا تم استخدام NISQA Corpus ، فيجب تحديث data_dir فقط إلى مجلد NISQA_Corpus غير المصدفة ومخرجات output_dir في ملف yaml. خلاف ذلك ، راجع قسم Finetuning السابق لتحديث ملف YAML إذا تم تطبيق مجموعة بيانات مخصصة.
من الممكن أيضًا تدريب أي مجموعة أخرى من الشبكات العصبية ، على سبيل المثال ، لتدريب نموذج مع LSTM بدلاً من الالتحاق الذاتي ، يتم توفير ملف تكوين مثال train_nisqa_cnn_lstm_avg.yaml .
لتدريب نموذج مزدوج للتنبؤ بجودة الكلام مرجعًا كاملًا ، يمكن استخدام ملف تكوين train_nisqa_double_ended.yaml كمثال. راجع التعليقات في ملفات YAML و Wiki (لم تتم إضافتها بعد) للحصول على مزيد من التفاصيل حول هياكل النماذج المحتملة المختلفة وخيارات التدريب المتقدمة.
يمكن تقييم النماذج المدربة على مجموعة بيانات معينة على النحو التالي (يمكن أيضًا استخدامها كاختبار مطابقة لتثبيت النموذج):
python run_evaluate.py
قبل التشغيل ، يجب تحديث الخيارات والمسارات داخل برنامج Python Script run_evaluate.py . إذا تم استخدام مجموعة NISQA ، فيجب ضبط مسارات data_dir و output_dir فقط. إلى جانب ارتباط بيرسون و RMSE ، يتم حساب أيضًا RMSE بعد رسم خرائط متعدد الحدود من الدرجة الأولى. إذا تم توفير ملف CSV مع ملصقات لكل شرط ، فسيقوم البرنامج النصي أيضًا بإخراج نتائج شرط و RMSE*. اختياريا ، يمكن رسم مخططات الارتباط. يجب أن يعيد البرنامج النصي نفس النتائج كما في ورقة NISQA عندما يتم تشغيله على مجموعة NISQA.
تتضمن NISQA Corpus أكثر من 14000 عينة من الكلام مع محاكاة (مثل برامج الترميز ، خسارة الحزم ، ضوضاء الخلفية) وظروف Live (على سبيل المثال ، Zoom ، Skype ، WhatsApp).
للحصول على رابط التنزيل والمزيد من التفاصيل على مجموعات البيانات وعينات الكلام المصدر المستخدمة ، انظر NISQA Corpus Wiki.
تم ترخيص رمز NISQA بموجب ترخيص MIT.
يتم توفير الأوزان النموذجية (nisqa.tar ، nisqa_mos_only.tar ، nisqa_tts.tar) تحت ترخيص الإسناد الإبداعي للعموم المشاع-sharealike 4.0 (CC by-NC-SA 4.0)
يتم توفير NISQA Corpus بموجب الشروط الأصلية لعينات الكلام والضوضاء المصدر المستخدمة. يمكن العثور على مزيد من المعلومات في NISQA Corpus Wiki.
حقوق الطبع والنشر © 2021 Gabriel Mittag
www.qu.tu-berlin.de