هذا الريبو هو محاولة للجمع بين جميع المكونات الرئيسية الثلاثة لـ NEMO في واجهة ويب يمكن استخدامها بسهولة دون الحاجة إلى البحث بشكل أعمق في مجموعة الأدوات نفسها.
تعني NEMO "الوحدات العصبية" وهي مجموعة أدوات تم إنشاؤها Bey nvidia مع مجموعات من الوحدات النمطية التي تم إنشاؤها مسبقًا للتعرف على الكلام التلقائي (ASR) ، ومعالجة اللغة الطبيعية (NLP) وتوليف النص (TTS). يتكون Nemo من:
تم تصميم NEMO's ليكون الإطار الغريب ، ولكن حاليًا يتم دعم Pytorch فقط. علاوة على ذلك ، يوفر NEMO دعمًا مدمجًا للتدريب الموزع والدقة المختلطة على أحدث وحدات معالجة الرسومات NVIDIA.
للبدء في هذا المستودع ، تحتاج إلى التثبيت:
pip install -r requirements.txt
إذا كان جهازك يدعم CUDA ، فأنت بحاجة إلى تثبيت Nvidia Apex للحصول على أفضل أداء في النماذج التدريبية/التقييم.
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
إذا كنت ترغب في استخدام نموذج لغة عند استخدام نموذج ASR ، فأنت بحاجة إلى تثبيت وحدة فك تشفير CTC من Baidu:
./scripts/install_decoders.sh
هنا ، سأشرح كيفية استخدام التعرف التلقائي على الكلام داخل مجموعات Nemo . يمكنك القيام بذلك بسهولة عن طريق اتباع هذه الخطوات:
قم بتنزيل نموذج تم تدريبه مسبقًا من هنا. إذا كنت قد قمت بتدريب النموذج الخاص بك ، فيمكنك تخطي هذه الخطوة. أنا ، أنا ، استخدمت نموذج QuartzNet15x5 Jasper. يمكنك تنزيله من هنا.
حدد موقع نموذج ASR داخل دليل asr_model . أو حدد موقعه في أي مكان تريده ، فقط قم بتحرير متغير yaml asr: model_dir داخل ملف conf.yaml .
سجل الصوت بصوتك. أو يمكنك تنزيل عينة صوتية ، لقد استخدمت هذا.
قم بتشغيل الكود التالي للحصول على نسخ الموجة:
>>> from asr import ASR
>>> asr_model = ASR()
2019-12-31 10:59:38,248 - INFO - PADDING: 16
2019-12-31 10:59:38,249 - INFO - STFT using conv
2019-12-31 10:59:39,491 - INFO - ================================
2019-12-31 10:59:39,495 - INFO - Number of parameters in encoder: 18894656
2019-12-31 10:59:39,495 - INFO - Number of parameters in decoder: 29725
2019-12-31 10:59:39,498 - INFO - Total number of parameters in model: 18924381
2019-12-31 10:59:39,499 - INFO - ================================
>>>
>>> wav_filepath = "./romance_gt.wav"
>>> asr_model.transcribe(wav_filepath)
2019-12-31 10:57:50,554 - INFO - Started Transcribing Speech
2019-12-31 10:57:50,582 - INFO - Dataset loaded with 0.00 hours. Filtered 0.00 hours.
2019-12-31 10:57:50,584 - INFO - Loading 1 examples
2019-12-31 10:57:52,799 - INFO - Evaluating batch 0 out of 1
You said: ["i'm too busy for romance"]
لمزيد من المعلومات ، يمكنك التحقق من الوثائق الرسمية من هنا.
هنا ، سأشرح كيفية استخدام وحدة الكلام في مجموعات NEMO . يمكنك القيام بذلك بسهولة عن طريق اتباع هذه الخطوات:
قم بتنزيل نموذج تم تدريبه مسبقًا من هنا. إذا كنت قد قمت بتدريب النموذج الخاص بك ، فيمكنك تخطي هذه الخطوة. أنا ، أنا ، استخدمت Tacotron2 Model Traind على مجموعة بيانات LJSpeech. يمكنك تنزيله من هنا.
حدد موقع نموذج TTS الخاص بك داخل دليل tts_model . أو حدد موقعه في أي مكان تريده ، فقط قم بتحرير tts: model_dir داخل ملف conf.yaml .
تحديد نموذج Vocoder ... يمكنك استخدام griffin-lim المستخدم في Tacotron1 وهو سريع للغاية ولا يحتاج إلى أي تدريب. ولكن ، إذا كنت ترغب في الحصول على نتائج أفضل ، فسيتعين عليك إما:
(اختياري) إذا قررت استخدام Vocoder WaveGlow ، فأنت بحاجة إلى تحديد موقعه في هذا الدليل ./tts_model/waveglow . أو يمكنك تحديد موقعه في أي مكان تريده ، فقط قم بتحرير tts: vocoder_dir داخل ملف conf.yaml .
قم بتشغيل الكود التالي لإجراء عملية تكوين خطاب على النص المفضل لديك:
>>> from tts import TTS
>>> tts_model = TTS()
2019-12-31 11:15:02,897 - INFO - ================================
2019-12-31 11:15:03,001 - INFO - Number of parameters in text-embedding: 35328
2019-12-31 11:15:03,089 - INFO - Number of parameters in encoder: 5513728
2019-12-31 11:15:03,285 - INFO - Number of parameters in decoder: 18255505
2019-12-31 11:15:03,373 - INFO - Number of parameters in postnet: 4348144
2019-12-31 11:15:03,373 - INFO - Total number of parameters in model: 28152705
2019-12-31 11:15:03,373 - INFO - Loading waveglow as a vocoder
2019-12-31 11:15:15,161 - INFO - ================================
>>>
>>> text = "Speech synthesis is pretty cool"
>>> tts_model.synthesis(text)
2019-12-31 11:23:33,953 - INFO - Starting speech synthesis
2019-12-31 11:23:33,963 - INFO - Running Tacotron 2
2019-12-31 11:23:34,055 - INFO - Evaluating batch 0 out of 1
2019-12-31 11:23:35,689 - INFO - Running Waveglow as a vocoder
2019-12-31 11:23:35,690 - INFO - Evaluating batch 0 out of 1
2019-12-31 11:24:39,655 - INFO - Wav file was generated and named: waveglow_sample.wav
لمزيد من المعلومات ، يمكنك التحقق من الوثائق الرسمية من هنا.