يحتوي هذا المستودع على Dockerfile الذي يمتد حاوية Pytorch 21.02-PY3 NGC ويغلف بعض التبعيات. لإنشاء الحاوية الخاصة بك ، اختر حاوية Pytorch من إصدارات حاوية Nvidia Pytorch وإنشاء dockerfile كتنسيق التالي:
FROM nvcr . io / nvidia / pytorch : 21.02 - py3
WORKDIR / path / to / working / directory / text2speech /
COPY requirements . txt .
RUN pip install - r requirements . txt انتقل إلى /path/to/working/directory/text2speech/docker
$ docker build - - no - cache - t torcht2s .
$ docker run - it - - rm - - gpus all - p 2222 : 8888 - v / path / to / working / directory / text2speech : / path / to / working / directory / text2speech torcht2s$ python - m ipykernel install - - user - - name = torcht2s
$ jupyter notebook - - ip = 0.0 . 0.0 - - port = 8888 - - no - browser - - allow - roothttp://127.0.0.1:2222/?token=${TOKEN} وأدخل الرمز المميز المحدد في المحطة الخاصة بك.من أجل تدريب نماذج توليف الكلام ، هناك حاجة إلى أصوات وتسلسلات صوتية معربًا عن الأصوات. هذا هو WYH في الخطوة الأولى ، يتم تشفير نص الإدخال في قائمة من الرموز. في هذه الدراسة ، سوف نستخدم الأحرف التركية والصوتيات كرموز. نظرًا لأن التركية هي لغة صوتية ، يتم التعبير عن الكلمات عند قراءتها. وهذا هو ، تسلسل الأحرف هي كلمات مبنية باللغة التركية. في اللغات غير الفنية مثل اللغة الإنجليزية ، يمكن التعبير عن الكلمات مع الصوتيات. لتوليف الكلام التركي مع البيانات الإنجليزية ، يجب أولاً ترجمة الكلمات في مجموعة البيانات الإنجليزية صوتيًا إلى تركية.
valid_symbols = [ '1' , '1:' , '2' , '2:' , '5' , 'a' , 'a:' , 'b' , 'c' , 'd' , 'dZ' , 'e' , 'e:' , 'f' , 'g' , 'gj' , 'h' , 'i' , 'i:' , 'j' ,
'k' , 'l' , 'm' , 'n' , 'N' , 'o' , 'o:' , 'p' , 'r' , 's' , 'S' , 't' , 'tS' , 'u' , 'u' , 'v' , 'y' , 'y:' , 'z' , 'Z' ]للتدريب السريع ، يمكن إنشاء هذه التدريب خلال خطوة ما قبل المعالجة والقراءة مباشرة من القرص أثناء التدريب. اتبع هذه الخطوات لاستخدام مجموعة البيانات المخصصة.
text2speech/Fastpitch/dataset/ . يجب أن يسرد هؤلاء الأسلوبون كلامًا واحدًا لكل سطر على النحو التالي: < audio file path > | < transcript >text2speech/Fastpitch/data_preperation.ipynb $ python prepare_dataset . py
- - wav - text - filelists dataset / tts_data . txt
- - n - workers 16
- - batch - size 1
- - dataset - path dataset
- - extract - pitch
- - f0 - method pyin
- - extract - mels create_picth_text_file(manifest_path) من text2speech/Fastpitch/data_preperation.ipynb < mel or wav file path > | < pitch file path > | < text > | < speaker_id >تحتوي مجموعة البيانات الكاملة على الهيكل التالي:
. / dataset
├── mels
├── pitch
├── wavs
├── tts_data . txt # train + val
├── tts_data_train . txt
├── tts_data_val . txt
├── tts_pitch_data . txt # train + val
├── tts_pitch_data_train . txt
├── tts_pitch_data_val . txt سيؤدي التدريب إلى إنتاج نموذج fastpitch قادر على توليد طيف الميل من النص الخام. سيتم تسلسله كملف نقطة تفتيش واحد .pt ، جنبا إلى جنب مع سلسلة من نقاط التفتيش الوسيطة.
$ python train . py - - cuda - - amp - - p - arpabet 1.0 - - dataset - path dataset
- - output saved_fastpicth_models /
- - training - files dataset / tts_pitch_data_train . txt
- - validation - files dataset / tts_pitch_data_val . txt
- - epochs 1000 - - learning - rate 0.001 - - batch - size 32
- - load - pitch - from - diskالخطوة الأخيرة هي تحويل الطيف إلى الشكل الموجي. وتسمى عملية توليد الكلام من الطيفية أيضًا Vocoder.
بعض مولدات الطيف الميل عرضة للنموذج التحيز. نظرًا لأن الطيف يختلف عن البيانات الحقيقية التي تم تدريب HIFI-GAN ، فقد تعاني جودة الصوت الذي تم إنشاؤه. من أجل التغلب على هذه المشكلة ، يمكن ضبط نموذج HIFI-GAN على مخرجات مولد طيف ميل معين من أجل التكيف مع هذا التحيز. في هذا القسم ، سنقوم بعملية صقل إلى مخرجات FastPitch.
text2speech/Hifigan/data/pretrained_fastpicth_model/ directory.tts_pitch_data.txt في text2speech/Hifigan/data/ directory. $ python extract_mels . py - - cuda
- o data / mels - fastpitch - tr22khz
- - dataset - path / text2speech / Fastpitch / dataset
- - dataset - files data / tts_pitch_data . txt # train + val
- - load - pitch - from - disk
- - checkpoint - path data / pretrained_fastpicth_model / FastPitch_checkpoint . pt - bs 16 يجب الآن تحضير Mel-spectrograms في دليل text2speech/Hifigan/data/mels-fastpitch-tr22khz . سيقوم البرنامج النصي بالضبط بتحميل نموذج HIFI الحالي وتشغيل عدة عصر من التدريب باستخدام الطيف الناتج في الخطوة الأخيرة.
ستنتج هذه الخطوة ملف نقطة تفتيش نموذج .pt آخر تم ضبطه على نموذج FastPitch معين.
results دليل text2speech/Hifigan . $ nohup python train . py - - cuda - - output / results / hifigan_tr22khz
- - epochs 1000 - - dataset_path / Fastpitch / dataset
- - input_mels_dir / data / mels - fastpitch - tr22khz
- - training_files / Fastpitch / dataset / tts_data . txt
- - validation_files / Fastpitch / dataset / tts_data . txt
- - fine_tuning - - fine_tune_lr_factor 3 - - batch_size 16
- - learning_rate 0.0003 - - lr_decay 0.9998 - - validation_interval 10 > log . txt$ tail - f log . txt قم بتشغيل الأمر التالي لتوليف الصوت من النص الخام مع مولد طيف الميل
python inference . py - - cuda
- - hifigan / Hifigan / results / hifigan_tr22khz / hifigan_gen_checkpoint . pt
- - fastpitch / Fastpitch / saved_fastpicth_models / FastPitch_checkpoint . pt
- i test_text . txt
- o wavs / يتم إنشاء الكلام من ملف تم تمريره مع حجة -i . سيتم تخزين صوت الإخراج في المسار المحدد بواسطة الوسيطة -o .