هذا هو تنفيذ الكود الرسمي؟ Matcha-TTS [ICASSP 2024].
نقترح؟ Matcha-TTS ، وهو نهج جديد ل TTS العصبية غير التوت ، والذي يستخدم مطابقة التدفق الشرطي (على غرار التدفقات المصححة) لتسريع تخليق الكلام القائم على العطورة. طريقتنا:
تحقق من صفحة العرض التجريبي وقراءة ورقة ICASSP 2024 لمزيد من التفاصيل.
سيتم تنزيل النماذج المدربة مسبقًا تلقائيًا باستخدام واجهة CLI أو Gradio.
يمكنك أيضا المحاولة؟ Matcha-tts في متصفحك على Luggingface؟ المساحات.
conda create -n matcha-tts python=3.10 -y
conda activate matcha-tts
pip install matcha-ttsمن المصدر
pip install git+https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTS
pip install -e . # This will download the required models
matcha-tts --text " <INPUT TEXT> "أو
matcha-tts-app أو Open synthesis.ipynb على دفتر Jupyter
matcha-tts --text " <INPUT TEXT> "matcha-tts --file < PATH TO FILE >matcha-tts --file < PATH TO FILE > --batchedحجج إضافية
matcha-tts --text " <INPUT TEXT> " --speaking_rate 1.0matcha-tts --text " <INPUT TEXT> " --temperature 0.667matcha-tts --text " <INPUT TEXT> " --steps 10لنفترض أننا نتدرب مع خطاب LJ
قم بتنزيل مجموعة البيانات من هنا ، واستخراجها إلى data/LJSpeech-1.1 ، وإعداد قوائم الملف للإشارة إلى البيانات المستخرجة مثل للبند 5 في إعداد Nvidia Tacotron 2 repo.
استنساخ وأدخل مستودع Matcha-TTS
git clone https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTSpip install -e .configs/data/ljspeech.yaml وتغيير train_filelist_path : data/filelists/ljs_audio_text_train_filelist.txt
valid_filelist_path : data/filelists/ljs_audio_text_val_filelist.txtmatcha-data-stats -i ljspeech.yaml
# Output:
#{ ' mel_mean ' : -5.53662231756592, ' mel_std ' : 2.1161014277038574} قم بتحديث هذه القيم في configs/data/ljspeech.yaml ضمن مفتاح data_statistics .
data_statistics: # Computed for ljspeech dataset
mel_mean: -5.536622
mel_std: 2.116101إلى مسارات قطارك والتحقق من صحة.
make train-ljspeechأو
python matcha/train.py experiment=ljspeechpython matcha/train.py experiment=ljspeech_min_memorypython matcha/train.py experiment=ljspeech trainer.devices=[0,1]matcha-tts --text " <INPUT TEXT> " --checkpoint_path < PATH TO CHECKPOINT > شكر خاص لـ @Mush42 لتنفيذ دعم ONNX ودعم الاستدلال.
من الممكن تصدير نقاط تفتيش Matcha إلى OnNx ، وتشغيل الاستدلال على الرسم البياني ONNX المصدر.
لتصدير نقطة تفتيش إلى ONNX ، قم أولاً بتثبيت ONNX مع
pip install onnxثم قم بتشغيل ما يلي:
python3 -m matcha.onnx.export matcha.ckpt model.onnx --n-timesteps 5اختياريا ، يقبل مصدر ONNX حجج المبرى و checkpoint . يمكّنك ذلك من تضمين Vocoder في الرسم البياني الذي تم تصديره وإنشاء أشكال موجية في تشغيل واحد (على غرار أنظمة TTS من طرف إلى طرف).
لاحظ أن n_timesteps يتم التعامل معها كمعلمة مفرطة بدلاً من إدخال النموذج. هذا يعني أنه يجب عليك تحديده أثناء التصدير (وليس أثناء الاستدلال). إذا لم يتم تحديدها ، يتم تعيين n_timesteps على 5 .
هام : في الوقت الحالي ، هناك حاجة إلى Torch> = 2.1.0 للتصدير لأن مشغل scaled_product_attention غير قابل للتصدير في الإصدارات القديمة. حتى يتم إصدار الإصدار النهائي ، يجب على أولئك الذين يرغبون في تصدير نماذجهم تثبيت Torch> = 2.1.0 يدويًا كإطلاق مسبقًا.
لتشغيل الاستدلال على النموذج المصدر ، قم أولاً بتثبيت onnxruntime باستخدام
pip install onnxruntime
pip install onnxruntime-gpu # for GPU inferenceثم استخدم ما يلي:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputsيمكنك أيضًا التحكم في معلمات التوليف:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --temperature 0.4 --speaking_rate 0.9 --spk 0 لتشغيل الاستدلال على GPU ، تأكد من تثبيت حزمة OnNxRuntime-GPU ، ثم تمرير- --gpu إلى أمر الاستدلال:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --gpu إذا قمت بتصدير Matcha فقط إلى ONNX ، فسيقوم ذلك بكتابة طيف الميل كرسوم بيانية ومصفوفات numpy إلى دليل الإخراج. إذا قمت بتضمين Vocoder في الرسم البياني الذي تم تصديره ، فسوف يكتب هذا .wav Audio Files إلى دليل الإخراج.
إذا قمت بتصدير Matcha فقط إلى Onnx ، وكنت ترغب في تشغيل خط أنابيب TTS كامل ، يمكنك نقل مسار إلى نموذج Vocoder بتنسيق ONNX :
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --vocoder hifigan.small.onnx سيؤدي هذا إلى كتابة ملفات الصوت .wav إلى دليل الإخراج.
إذا تم تنظيم مجموعة البيانات كـ
data/
└── LJSpeech-1.1
├── metadata.csv
├── README
├── test.txt
├── train.txt
├── val.txt
└── wavsثم يمكنك استخراج محاذاة مستوى الصوت من نموذج Matcha-TTS مدرب باستخدام:
python matcha/utils/get_durations_from_trained_model.py -i dataset_yaml -c < checkpoint >مثال:
python matcha/utils/get_durations_from_trained_model.py -i ljspeech.yaml -c matcha_ljspeech.ckptأو ببساطة:
matcha-tts-get-durations -i ljspeech.yaml -c matcha_ljspeech.ckpt في DatasetConfig قم بتشغيل مدة التحميل. مثال: ljspeech.yaml
load_durations: True
أو انظر أمثلة في التكوينات/التجربة/ljspeech_from_durations.yaml
إذا كنت تستخدم الكود الخاص بنا أو ابحث عن هذا العمل مفيدًا ، فيرجى الاستشهاد بالورقة:
@inproceedings{mehta2024matcha,
title={Matcha-{TTS}: A fast {TTS} architecture with conditional flow matching},
author={Mehta, Shivam and Tu, Ruibo and Beskow, Jonas and Sz{'e}kely, {'E}va and Henter, Gustav Eje},
booktitle={Proc. ICASSP},
year={2024}
}
نظرًا لأن هذا الرمز يستخدم Lightning-Hydra-Template ، لديك كل الصلاحيات التي تأتي معها.
رمز المصدر الآخر نود الاعتراف به: