Implementasi "Durasi Informed Attention Network untuk Sintesis Multimodal" (https://arxiv.org/pdf/1909.01700.pdf).
Status : Dirilis
Durian adalah arsitektur encoder-decoder untuk tugas sintesis teks-ke-pidato. Tidak seperti arsitektur sebelumnya seperti Tacotron 2, ia tidak belajar mekanisme perhatian tetapi memperhitungkan informasi durasi fonem. Jadi, tentu saja, untuk menggunakan model ini, seseorang harus memiliki dataset fonemized dan durasi-selaras. Namun, Anda dapat mencoba menggunakan model durasi pretrained pada dataset LJSPEECH (Dict CMU yang digunakan). Tautan akan disediakan di bawah ini.
Model durian terdiri dari dua modul: sintesizer backbone dan prediktor durasi. Berikut adalah beberapa perbedaan paling menonjol dari durian yang dijelaskan dalam kertas:
Synthesizer tulang punggung dan model durasi dilatih secara bersamaan. Untuk Model Durasi Penyederhanaan Implementasi memprediksi penyelarasan atas jumlah bingkai maks yang tetap. Anda dapat mempelajari output ini sebagai masalah BCE, masalah MSE dengan menjumlahkan sumbu frame atau untuk menggunakan kedua kerugian (belum menguji yang ini), atur di config.json . Eksperimen menunjukkan bahwa versi baru dari proses optimisasi menunjukkan dirinya tidak stabil dengan urutan teks yang lebih panjang, jadi lebih suka menggunakan MSE+BCE atau Just-MSE (jangan keberatan jika Anda mendapatkan keberpihakan yang buruk di Tensorboard).
Anda dapat memeriksa sintesis demo wavfile (diperoleh jauh sebelum konvergensi) di folder demo (menggunakan vocoder waveglow).
Pertama -tama, pastikan Anda telah menginstal semua paket menggunakan pip install --upgrade -r requirements.txt . Kode diuji menggunakan pytorch==1.5.0
Klon The Repository: git clone https://github.com/ivanvovk/DurrIAN
Untuk memulai pelatihan versi durian berbasis kertas, jalankan python train.py -c configs/default.json . Anda dapat menentukan untuk melatih model baseline sebagai python train.py -c configs/baseline.json --baseline
Untuk memastikan bahwa semuanya berfungsi dengan baik di lingkungan lokal Anda, Anda dapat menjalankan tes unit di folder tests dengan python <test_you_want_to_run.py> .
Implementasi ini dilatih menggunakan dataset LJSPEECH yang selaras dengan durasi fonemized dengan minimalisasi kehilangan durasi BCE. Anda mungkin menemukannya melalui tautan ini.
Kelemahan utama dari model ini membutuhkan dataset yang selaras dengan durasi. Anda dapat menemukan daftar file ljspeech yang diuraikan yang digunakan dalam pelatihan implementasi saat ini di folder filelists . Untuk menggunakan data Anda, pastikan Anda telah mengatur daftar file Anda dengan cara yang sama seperti yang disediakan LJSpeech. Namun, untuk menghemat waktu dan neuron otak Anda, Anda dapat mencoba melatih model pada dataset Anda tanpa durasi-selaras menggunakan pretrained pada model durasi LJSpeech dari pos pemeriksaan model saya (tidak dicoba). Tetapi jika Anda tertarik untuk menyelaraskan dataset pribadi, ikuti dengan cermat bagian berikutnya.
Dalam percobaan saya, saya menyelaraskan LJSPEECH dengan Montreal Forced Alignment Tool. Jika di sini ada sesuatu yang tidak jelas, silakan, ikuti instruksi dalam dokumen Toolkit. Untuk memulainya, menyelaraskan algoritma memiliki beberapa langkah:
Atur dataset Anda dengan benar. MFA mengharuskannya berada dalam satu folder struktur {utterance_id.lab, utterance_id.wav}. Pastikan semua teks Anda dari format .lab .
Unduh rilis MFA dan ikuti instruksi instalasi melalui tautan ini.
Setelah selesai dengan MFA, Anda memerlukan Kamus Kata Dataset Anda dengan transkripsi fonem. Di sini Anda memiliki beberapa opsi:
bin/mfa_generate_dictionary /path/to/model_g2p.zip /path/to/data dict.txt . Perhatikan, instalasi MFA default itu akan secara otomatis memberi Anda model pretrained bahasa Inggris, yang dapat Anda gunakan. Setelah data Anda menyiapkan data, Kamus dan Model G2P, sekarang Anda siap untuk diselaraskan. Jalankan perintah bin/mfa_align /path/to/data dict.txt path/to/model_g2p.zip outdir . Tunggu sampai selesai. Folder outdir akan berisi daftar kata -kata kosa kata dan folder dengan file khusus format .TextGrid , di mana penyelarasan WAV disimpan.
Sekarang kami ingin memproses file grid teks ini untuk mendapatkan daftar file akhir. Di sini Anda mungkin menemukan Python Package TextGrid . Instal menggunakan pip install TextGrid . Di sini contoh cara menggunakannya:
import textgrid
tg = textgrid.TextGrid.fromFile('./outdir/data/text0.TextGrid')
Sekarang tg adalah set dua objek: yang pertama berisi kata -kata yang selaras, yang kedua berisi fonem yang selaras. Anda membutuhkan yang kedua. Ekstrak durasi (dalam bingkai! tg memiliki interval dalam hitungan detik, sehingga dikonversi) untuk seluruh dataset dengan mengulangi file .TextGrid yang diperoleh dan menyiapkan daftar file dalam format yang sama seperti yang saya berikan di folder filelists .
Saya menemukan gambaran beberapa pelurus. Mungkin itu akan membantu. Namun, saya sarankan Anda untuk menggunakan MFA karena ini adalah salah satu pelurus paling akurat, sepengetahuan terbaik saya.