Afficientspeech ، أو ES لفترة قصيرة ، هو نموذج عصبي فعال إلى الكلام (TTS). يولد طيف MEL بسرعة 104 (MRTF) أو 104 ثانية من الكلام لكل ثانية على RPI4. تتميز نسختها الصغيرة بصمة قدرها 266 ألفًا فقط - حوالي 1 ٪ فقط من TTS في العصر الحديث مثل Mixertts. توليد 6 ثوان من الكلام يستهلك 90 mflops فقط.
efficientspeech هو محول هرم ضحل (2 كتل!) يشبه شبكة U. يتم الانتهاك عن طريق الالتفاف القابل للفصل العمق المنقول.
ثَبَّتَ
تقوم ES حاليًا بالهجرة إلى Pytorch 2.0 و Lightning 2.0. توقع ميزات غير مستقرة.
pip install -r requirements.txt
يتم دعم خيار التجميع باستخدام --compile أثناء التدريب أو الاستدلال. للتدريب ، الوضع المتحمس أسرع. التدريب على النسخة الصغيرة هو حوالي 17 ساعة على A100. للاستدلال ، النسخة المترجمة أسرع. لسبب غير معروف ، يتمثل خيار التجميع في توليد أخطاء عندما --infer-device cuda .
بشكل افتراضي ، يستخدم Pytorch 2.0 128 مؤشر ترابط وحدة المعالجة المركزية (AMD ، 4 في RPI4) مما يسبب التباطؤ أثناء الاستدلال. أثناء الاستدلال ، يوصى بتعيينه على رقم أقل. على سبيل المثال: --threads 24 .
Pytorch 2.0 أبطأ على RPI4. يرجى استخدام الإصدار التجريبي وأوزان نموذج ICASSP2023.
RTF على Pytorch 2.0 هو ~ 1.0. RTF على Pytorch 1.12 هو ~ 1.7.
بدلاً من ذلك ، يرجى استخدام إصدار ONNX:
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/tiny_eng_266k.onnx
--infer-device cpu --text "the primary colors are red, green, and blue." --wav-filename primary.wav
يدعم فقط طول الصوت الإدخال الثابت. يتم تطبيق الحشو أو الاقتطاع إذا لزم الأمر. تعديل باستخدام- --onnx-insize=<desired value> . طول الصوتي الافتراضي هو 128. على سبيل المثال:
python3 convert.py --checkpoint tiny_eng_266k.ckpt --onnx tiny_eng_266k.onnx --onnx-insize 256
اختر مجلد مجموعة البيانات: على سبيل المثال <data_folder> = /data/tts - دليل حيث سيتم تخزين مجموعة البيانات.
قم بتنزيل مجموعة بيانات KSS المخصصة:
cd efficientspeech
mkdir ./data/kss
قم بتنزيل مجموعة بيانات KSS المخصصة هنا
قم بإعداد مجموعة البيانات: <parent_folder> - حيث تم استنساخ efficientspeech.
cd <parent_folder>/efficientspeech
تحرير config/LJSpeech/preprocess.yaml :
>>>>>>>>>>>>>>>>>
path:
corpus_path: "./data/tts/kss"
lexicon_path: "lexicon/korean-lexicon.txt"
raw_path: "./data/tts/kss/wavs"
preprocessed_path: "./preprocessed_data/kss"
>>>>>>>>>>>>>>>>
استبدل /data/tts بـ <data_folder> .
قم بتنزيل بيانات المحاذاة إلى preprocessed_data/KSS/TextGrid من هنا.
قم بإعداد مجموعة البيانات:
python prepare_align.py config/kss/preprocess.yaml
python preprocess.py config/kss/preprocess.yaml
هذا سوف يستغرق ساعة أو نحو ذلك.
لمزيد من المعلومات: تنفيذ Fastspeech2 لإعداد مجموعة البيانات.
es tiny
افتراضيا:
--precision=16 . خيارات أخرى: "bf16-mixed", "16-mixed", 16, 32, 64 .--accelerator=gpu--infer-device=cuda--devices=1utils/tools.py python3 train.py
ES الصغيرة
python3 train.py --n-blocks 3 --reduction 2
قاعدة es
python3 train.py --head 2 --reduction 1 --expansion 2 --kernel-size 5 --n-blocks 3 --block-depth 3
python3 demo.py --checkpoint ./lightning_logs/version_2/checkpoints/epoch=4999-step=485000.ckpt --text "그는 괜찮은 척하려고 애 쓰는 것 같았다." --wav-filename base.wav
es vs fs2 vs portaspeech vs lightspeech
لمزيد من المعلومات ، يرجى الرجوع إلى المستودعات التالية:
synthesize.py ، وظيفة Text2Phoneme الكورية [✅]إذا وجدت هذا العمل مفيدًا ، فيرجى الاستشهاد:
@inproceedings{atienza2023efficientspeech,
title={EfficientSpeech: An On-Device Text to Speech Model},
author={Atienza, Rowel},
booktitle={ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={1--5},
year={2023},
organization={IEEE}
}