Adaptasi reformator: transformator yang efisien untuk tugas teks-ke-unggun.
Proyek ini berisi:
Kami bertujuan untuk membuat versi yang jauh lebih efisien dari model teks-ke-speech canggih, dengan mengganti arsitektur transformatornya dengan optimasi yang diusulkan dalam makalah reformer yang lebih baru. Kami akan menggunakannya untuk menghasilkan Deepfake dari Donald Trump yang dapat dipercaya berdasarkan dataset khusus pidatonya, yang dibuat khusus untuk tujuan ini.
Sayangnya, kami tidak dapat menghasilkan hasil yang sesuai dengan yang dari kertas TTS Transformer, setelah bereksperimen dengan lebih dari 100 kombinasi hiperparameter selama 2 bulan. Kami percaya bahwa ukuran model adalah faktor penting di sini, dan untuk melatih transformator untuk TTS yang benar -benar perlu mengurangi overfitting untuk memungkinkan proses pelatihan yang panjang dan stabil (~ 1 minggu pelatihan pada RTX 2080TI).
Juga, memiliki akses ke implementasi asli transformator TTS akan sangat membantu.
Sementara reformator tidak sesuai dengan harapan kami, implementasi gelombang squeezewa cocok dengan kinerja yang asli tanpa dukungan FP16.
Kami juga menyertakan CLI untuk menjalankan pelatihan dan inferensi (lihat bagian penggunaan ), dan semua data yang diperlukan untuk reproduksi percobaan (lihat bagian pengembangan ).
Proyek ini berada di bawah refotaktor yang signifikan, versi ini ditinggalkan di sini untuk memungkinkan kompatiblilitas dengan ekspektasi kami sebelumnya dan akan dipindahkan dalam waktu dekat .
Proyek ini adalah paket python normal, dan dapat diinstal menggunakan pip , selama Anda memiliki Python 3.8 atau lebih besar .
Buka halaman rilis untuk menemukan instruksi instalasi untuk rilis terbaru.
Setelah instalasi, Anda dapat melihat perintah yang tersedia dengan menjalankan:
python -m reformer_tts.cli --helpSemua perintah dijalankan menggunakan CLI, misalnya:
python -m reformer_tts.cli train-vocoder Sebagian besar parameter (khususnya, semua hyperparameters pelatihan) ditentukan melalui --config Argumen ke cli (yang berlaku sebelum perintah yang ingin Anda jalankan), misalnya:
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoder Nilai default dapat ditemukan di reformer_tts.config.Config (dan bidangnya).
Berkat komunitas Conda-Forge, kami dapat menginstal semua paket (termasuk biner yang diperlukan, seperti ffmpeg ) menggunakan satu perintah.
conda env create -f environment.ymlPython>=3.8 : which python
python --versionpip install -r requirements.txt Pastikan Anda memiliki ffmpeg>=3.4,<4.0 terpasang (instruksi instalasi)
Untuk pelatihan, pastikan Anda menginstal driver CUDA dan GPU (untuk detailnya, lihat instruksi di situs web Pytorch)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.jsonCatatan: Jika Anda hanya perlu membaca akses (untuk reproduksi), Anda tidak perlu melakukan langkah 1
dvc pullUntuk melakukan ini, Anda dapat menjalankan tes proyek:
python -m pytest --pyargs reformer_ttsSemua tes harus bekerja pada CPU dan GPU, dan dapat memakan waktu hingga satu menit untuk diselesaikan.
Ingatlah untuk lulus --pyargs reformer_tts ke Pytest, jika tidak, ia akan mencari direktori data untuk tes
Python>=3.8requirements.txt serta di environment.ymlreformer_tts/cli.py , jalankan python reformer_tts/cli.py --help untuk referensi terperinciKonfigurasi diatur dalam Struktur Dataclass:
config.py , di mana parameter dan nilai default ditentukan - misalnya, parameter konfigurasi dataset ditentukan dalam reformer_tts.dataset.configreformer_tts.config.Config berisi semua pengaturan konfigurasi submodule 'Dengan cara ini, nilai default ditetapkan mendekati tempat di mana mereka digunakan, nilai konfigurasi apa pun dapat ditimpa di mana pun Anda inginkan
Untuk mengubah konfigurasi runtime
python reformer_tts/cli.py save-config -o config/custom.yml atau salin secara manual salah satu file konfigurasi yang ada di config/ direktori-c , yaitu: python reformer_tts/cli.py -c config/custom.yml [COMMAND]Untuk menambahkan konfigurasi untuk modul baru
config.py di modul Andadataset dan modul squeezewave ))reformer_tts.config Kami menggunakan DVC untuk mendefinisikan saluran pipa pemrosesan data. Remote diatur di Google Cloud Storage, untuk detailnya menjalankan dvc config list .
Node disiapkan untuk berlari:
/scidatalgSebelum berlari:
Untuk menjalankan pelatihan:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash/scidatalg/reformer-tts/reformer-tts/ Pastikan repositori ditarik dan pada cabang yang tepatjobs/train_entropy.sbatch - Isi Nama Node dan Perintah Pelatihansbatch your/job/script/location.sbatch Pro Tip watch -n 1 squeue -u your_username untuk ditonton jika pekerjaan Anda sudah berjalan pro tip2 Anda dapat menonton pembaruan ke log dengan menjalankan tail -f file.log atau less --follow-name +F file.log
Untuk menarik dari DVC Gunakan jobs/entropy_dvc_pull.sbatch .
Karena /Direktori Scidatasm tidak disinkronkan sementara kami ingin berlatih, kami harus mengatur pelatihan pada setiap node secara terpisah dengan tangan. Untuk mengatur env di node baru Ikuti Instuksi ini:
Catatan : Hanya node dengan /scidatalg yang didukung oleh skrip ini. Node ini adalah: Asusgpu4, Asusgpu3, Asusgpu2, Asusgpu1, Arnold, Sylvester
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.json (menggunakan editor favorit Anda)scripts/setup_entropy_node.sh ke file baru di home dir (lagi menggunakan editor)