Ini adalah implementasi kode resmi? Matcha-tts [ICASSP 2024].
Kami melamar? Matcha-TTS, pendekatan baru untuk TTS neural non-autoregressive, yang menggunakan pencocokan aliran bersyarat (mirip dengan aliran yang diperbaiki) untuk mempercepat sintesis ucapan berbasis ode. Metode kami:
Lihat halaman demo kami dan baca kertas ICASSP 2024 kami untuk lebih jelasnya.
Model pra-terlatih akan diunduh secara otomatis dengan antarmuka CLI atau Gradio.
Anda juga bisa mencoba? Matcha-tts di browser Anda di Huggingface? ruang.
conda create -n matcha-tts python=3.10 -y
conda activate matcha-tts
pip install matcha-ttsdari sumber
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> "atau
matcha-tts-app atau buka synthesis.ipynb di jupyter notebook
matcha-tts --text " <INPUT TEXT> "matcha-tts --file < PATH TO FILE >matcha-tts --file < PATH TO FILE > --batchedArgumen tambahan
matcha-tts --text " <INPUT TEXT> " --speaking_rate 1.0matcha-tts --text " <INPUT TEXT> " --temperature 0.667matcha-tts --text " <INPUT TEXT> " --steps 10Mari kita asumsikan kita berlatih dengan pidato LJ
Unduh dataset dari sini, ekstrak ke data/LJSpeech-1.1 , dan siapkan daftar file untuk menunjuk ke data yang diekstraksi seperti untuk item 5 dalam pengaturan repo NVIDIA TACOTRON 2.
Klon dan masukkan repositori matcha-tts
git clone https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTSpip install -e .configs/data/ljspeech.yaml dan ubah 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} Perbarui nilai -nilai ini di configs/data/ljspeech.yaml di bawah kunci data_statistics .
data_statistics: # Computed for ljspeech dataset
mel_mean: -5.536622
mel_std: 2.116101ke jalur kereta kereta dan validasi Anda.
make train-ljspeechatau
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 > Terima kasih khusus kepada @Mush42 karena telah menerapkan dukungan ekspor dan inferensi ONNX.
Dimungkinkan untuk mengekspor pos pemeriksaan Matcha ke ONNX, dan menjalankan inferensi pada grafik ONNX yang diekspor.
Untuk mengekspor pos pemeriksaan ke ONNX, pertama instal ONNX dengan
pip install onnxKemudian jalankan berikut ini:
python3 -m matcha.onnx.export matcha.ckpt model.onnx --n-timesteps 5Secara opsional, eksportir ONNX menerima argumen vokoder-name dan vokoder-checkpoint . Ini memungkinkan Anda untuk menyematkan vocoder dalam grafik yang diekspor dan menghasilkan bentuk gelombang dalam satu run (mirip dengan sistem TTS ujung ke ujung).
Perhatikan bahwa n_timesteps diperlakukan sebagai hiper-parameter daripada input model. Ini berarti Anda harus menentukannya selama ekspor (bukan selama inferensi). Jika tidak ditentukan, n_timesteps diatur ke 5 .
Penting : Untuk saat ini, obor> = 2.1.0 diperlukan untuk ekspor karena operator scaled_product_attention tidak dapat diekspor dalam versi yang lebih lama. Sampai versi final dirilis, mereka yang ingin mengekspor model mereka harus menginstal Torch> = 2.1.0 secara manual sebagai pra-rilis.
Untuk menjalankan inferensi pada model yang diekspor, pertama -tama instal onnxruntime menggunakan
pip install onnxruntime
pip install onnxruntime-gpu # for GPU inferenceKemudian gunakan yang berikut:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputsAnda juga dapat mengontrol parameter sintesis:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --temperature 0.4 --speaking_rate 0.9 --spk 0 Untuk menjalankan inferensi pada GPU , pastikan untuk menginstal paket onnxruntime-gpu , dan kemudian lulus --gpu ke perintah inferensi:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --gpu Jika Anda hanya mengekspor Matcha ke Onnx, ini akan menulis Mel-Spectrogram sebagai grafik dan array numpy ke direktori output. Jika Anda menanamkan vocoder dalam grafik yang diekspor, ini akan menulis file audio .wav ke direktori output.
Jika Anda hanya mengekspor Matcha ke Onnx, dan Anda ingin menjalankan pipa TTS penuh, Anda dapat melewati jalur ke model vokoder dalam format ONNX :
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --vocoder hifigan.small.onnx Ini akan menulis file audio .wav ke direktori output.
Jika dataset disusun sebagai
data/
└── LJSpeech-1.1
├── metadata.csv
├── README
├── test.txt
├── train.txt
├── val.txt
└── wavsMaka Anda dapat mengekstrak keberpihakan tingkat fonem dari model Matcha-TTS terlatih menggunakan:
python matcha/utils/get_durations_from_trained_model.py -i dataset_yaml -c < checkpoint >Contoh:
python matcha/utils/get_durations_from_trained_model.py -i ljspeech.yaml -c matcha_ljspeech.ckptatau sederhana:
matcha-tts-get-durations -i ljspeech.yaml -c matcha_ljspeech.ckpt Dalam DatasetConfig mengaktifkan durasi beban. Contoh: ljspeech.yaml
load_durations: True
Atau lihat contoh dalam konfigurasi/eksperimen/ljspeech_from_durations.yaml
Jika Anda menggunakan kode kami atau menemukan pekerjaan ini bermanfaat, silakan kutip kertas kami:
@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}
}
Karena kode ini menggunakan lightning-hydra-template, Anda memiliki semua kekuatan yang menyertainya.
Kode Sumber Lain yang ingin kami akui: