Pitchtron

- Prosody Transfer Toolkit dengan mana Anda dapat menghasilkan pidato bergaya meskipun pelatihan Anda adalah suara netral dari orang biasa.
- Kita dapat mentransfer dialek Korea (Kyongsang, Cheolla) dan prosodi emosional serta dialog netral.
- Hard Pitchtron adalah untuk mentransfer prosodi secara ketat dengan demikian, struktur kalimat audio referensi dan kalimat target lebih cocok.
- Soft Pitchtron mengejar transfer prosodi yang terdengar alami bahkan audio referensi dan kalimat target sama sekali berbeda dalam konten.
- DB yang kami rilis dengan proyek ini tersedia di Emotion_tts
- Sampel audio tersedia di http://jsh-tts.tistory.com/entry/pitchtron
- Pitchtron Paper: https://arxiv.org/abs/2005.10456
Perbedaan tiga cabang
- Ketiga cabang yang disediakan di sini adalah untuk transfer prosodi.
- Anda dapat menghasilkan ucapan gaya, kalimat, dan suara yang diinginkan.
- Pembicara audio referensi dapat adalah siapa pun dan orang itu tidak perlu dimasukkan dalam data pelatihan.
- Speaker target (suara audio yang disintesis) harus dimasukkan dalam data pelatihan.
- Menggunakan pitchTorn yang keras dan lembut, Anda dapat mensintesis dalam dialek 'Kyongsang', dialek 'Cheolla' dan gaya emosional bahkan jika model itu hanya dilatih dengan ucapan yang sederhana dan netral.
- Di sisi lain, untuk token gaya global, Anda membutuhkan DB gaya yang diinginkan selama waktu pelatihan.
- Saya mengusulkan pitchtron ini untuk berbicara dalam dialek Cheolla Kyongsang Korea.
- DB dari dialek -dialek ini sangat terbatas dan 'kontur pitch' adalah kunci untuk merujuknya secara alami. Ini juga berlaku untuk banyak bahasa beraksen pitch lainnya (Jepang), langauge nada (Cina) dan gaya berbicara emosional.
| Resolusi temporal | Kontrol linier | Penyesuaian rentang vokal | Referensi non-paralel | Dukungan gaya yang tidak terlihat | Persyaratan Analisis Dimensi |
|---|
| GST | X | X | X | HAI | X | HAI |
| Pitchtron yang lembut | HAI | * | HAI | HAI | HAI | X |
| Pitchtron yang keras | HAI | HAI | HAI | ** | HAI | X |
- *: Soft Pitchtron akan membiarkan Anda mengontrol pitch selama itu bisa terdengar alami. Jika berada di luar jangkauan vokal speaker target, itu akan dipotong untuk membuat suara alami.
- **: Hard Pitchtron memungkinkan referensi non-paralel terbatas.
- Terbatas non-paralel: Teks dapat berbeda, tetapi struktur kalimat harus cocok.
| Kalimat |
|---|
| Referensi | "아니요 지는 그짝허고 이야기허고 싶지 않아요" |
| Target | "그래요 갸는 친구허고 나들이가고 싶은것 같아요" |
- Resolusi Temporal: Dapatkah kita mengontrol gaya secara berbeda berdasarkan timestep?
- Kontrol Linier: Dapatkah saya mengontrol dengan tepat jumlah pitch (catatan) yang akan diskalakan? Saya tidak perlu mengeksplorasi ruang embedding untuk mengetahui perubahan skala dalam dimensi embedding saat input berubah?
- Penyesuaian rentang vokal: Jika rentang vokal speaker referensi dan speaker target berbeda secara drastis, dapatkah saya merujuk secara alami dalam rentang vokal speaker target?
- Referensi non-paralel: Jika kalimat referensi dan kalimat target berbeda, dapatkah saya mensintesisnya secara alami?
- Dukungan Gaya yang Tidak Terlihat: Jika audio referensi yang diinginkan adalah gaya yang belum pernah terlihat selama pelatihan, dapatkah ditransfer secara alami?
- Persyaratan Analisis Dimensi: Apakah saya harus menganalisis token/dimensi yang mengontrol mana yang memiliki kontrol atas model ini?
1. Pitchtron yang lembut
- Cabang ini memberikan transfer prosodi yang tidak diawasi dari kalimat paralel, non-paralel terbatas dan non-paralel.
- Paralel: Kalimat Audio Referensi dan Kalimat Sintesis Target cocok.
- Limited Non-Parallel: Disebutkan di atas.
- Non-paralel: Kalimat audio referensi dan kalimat sintesis target tidak perlu ditandingi.
- Mirip dengan token gaya global, tetapi ada beberapa keuntungan.
- Jauh lebih kuat untuk gaya yang tidak terlihat selama pelatihan.
- Jauh lebih mudah untuk dikendalikan.
- Anda tidak perlu menganalisis token atau dimensi untuk melihat apa yang dilakukan masing -masing token.
- Anda dapat skala rentang pitch audio referensi agar sesuai dengan target speaker sehingga transfer antar gender lebih alami.
- Anda juga dapat mengontrol pitch untuk setiap input fonem
- Rentang pitch Audio referensi ditingkatkan agar sesuai dengan target speaker sehingga transfer antar gender lebih alami.
- Kontrol Anda atas nada tidak begitu ketat sehingga hanya akan skala ke jumlah yang kedengarannya alami.
2. Pitchtron yang keras
- Cabang ini memberikan transfer prosodi tanpa pengawasan yang tidak diawasi dan 'terbatas non-paralel'.
- Sebaliknya, ritme dan pitch persis sama dengan audio referensi.
- Rentang pitch Audio referensi ditingkatkan agar sesuai dengan target speaker sehingga transfer antar gender lebih alami.
- Anda memiliki kontrol yang ketat atas rentang pitch, dengan jumlah di mana ia akan skala bahkan jika itu menghasilkan suara yang tidak wajar.
3. Token Gaya Global
- Implementasi token gaya global. Token Gaya Global
- Tidak seperti Pitchtron, token gaya global cenderung bekerja dengan baik hanya untuk gaya yang terlihat selama fase pelatihan.
- Rentang pitch tidak dapat diskalakan, menghasilkan suara bising jika audio referensi di luar jangkauan vokal speaker target.
- Karena tidak kuat untuk gaya baru yang tidak terlihat selama pelatihan, kadang -kadang menghasilkan ucapan dengan energi yang terlalu keras atau jeda terlalu lama.
Langkah Preprocessing Untuk Berlari untuk Multi-Speaker Korea TTS
python preprocess.py --dataset={following keywords}
Jalankan mereka dalam urutan berikut. Anda dapat memilih beberapa bagian tergantung pada kebutuhan Anda.
- selvas_mulpeaker_pron
- public_korean_pron
- Integrate_dataset
- check_file_integrity
- generate_mel_f0
1. Selvas_mulpeaker_pron
- PCM mentah ke WAV_22050 di bawah setiap speaker
- src: '{data_root}/{speaker}/raw/*. pcm'
- dst: '{data_root}/{speaker}/wav_22050/*. wav'
- trim dengan 25 db teratas
- Data Split: Untuk setiap 400 audio, buat evaluasi & sama untuk tes
- Kereta: 33194 WAVS
- Eval: 83 WAVS
- Tes: 84 WAVS
- Hasilkan file meta dengan skrip yang ada di Phoneme *FileLists/single_language_selvas/train_file_list_pron.txt
2. Public_korean_pron
- tempat mengunduh: 서울말 낭독체 발화 말뭉치
- Regregrefisasi laju pengambilan sampel ke 22050 Hz (DB ini memiliki SR tidak teratur)
- Trim dengan 25 dB teratas
- sumber:
- wav_16000/{speaker}/*. wav
- pron/{speaker}/t **. txt
- Dikecualikan dari skrip:
- Skrip untuk membuka ritsleting dan memindahkan WAV ke WAV_16000 tidak termasuk. Anda perlu membuatnya dalam bentuk ini sendiri
- File teks untuk semua speaker sama dalam DB ini, jadi saya membagi skrip bersama ini dengan literatur secara manual. (Termasuk kesalahan baru yang hilang jadi saya harus melakukannya secara manual)
- Juga, skrip untuk G2P juga tidak termasuk
- Kesalahan tambahan dalam DB ini
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- dst: wav_22050/{speaker}/*. wav
3. Integrate_dataset
- Saya mengintegrasikan di atas dua DB Korea.
- Ini dapat digeneralisasi ke TT multi-bahasa di mana ada beberapa DB dari berbagai bahasa.
- Dengan demikian, kode bahasa korespod untuk setiap DB ditambahkan ke file teks meta terintegrasi yang dibuat pada langkah ini.
- Bagaimana
- Ubah daftar file sumber ('train_file_lists', 'eval_file_lists', 'test_file_lists') dan daftar file target (target_train_file_list, target_eval_file_list, target_test_file_list) dari preprocess.process.integrate_datasease_list) dari preprocess.process.integrate_datasease (argsetas) dari preprocess.preprepreprate_dataseas)
- Anda mungkin ingin memodifikasi metode _integrate () untuk menunjuk kode bahasa untuk setiap DB. Maaf itu sulit untuk saat ini.
- Jalankan preprocess.py
python preprocess.py --dataset=integrate_dataset
4. Check_file_integrity
- Langkah ini menghasilkan file meta dengan jalur WAV yang tidak dapat dibaca.
- Anda mungkin ingin menghapusnya dari daftar file akhir Anda atau melalui investigasi. Itu untukmu. Langkah ini tidak menghapus file yang terdeteksi ini dari daftar file.
- Out: Problematic_merge_korean_pron _ {}. Txt
5. Generate_Mel_F0 (Opsional)
- Langkah ini opsional. Langkah ini mengekstrak fitur untuk pelatihan dan menyimpan sebagai file.
- SRC: WAV_22050/*. WAV
- DST: Mel/*. PT dan F0/*. PT
6. Inisialisasi beberapa zaman pertama dengan DB speaker tunggal
- Siapkan kereta terpisah, daftar file yang valid untuk pembicara tunggal
- File untuk pelatihan dan validasi speaker tunggal juga termasuk dalam daftar file multispeaker.
- Saya bereksperimen pelatihan 30 zaman awal dengan DB pembicara tunggal dan itu membantu mempelajari pelurusan encoder-decoder.
Bagaimana cara berlatih?
1. Perintah
python train.py {program arguments}
2. Argumen program
| Pilihan | Wajib | Tujuan |
|---|
| -Hai | HAI | Jalur direktori untuk menyimpan pos pemeriksaan. |
| -C | X | Jalur pos pemeriksaan pretrained untuk dimuat. |
| -l | HAI | Direktori log untuk menjatuhkan log untuk Tensorboard. |
3. Model pretrained
*Model pretrain dilatih pada fonem. Mereka mengharapkan fonem sebagai input ketika Anda memberikan teks untuk disintesis.
| Model | Pos Pemeriksaan Pretrain | Hyperparameter yang cocok |
|---|
| Pitchtron yang lembut | Pitchtron yang lembut | konfigurasi |
| Pitchtron yang keras | Pitchtron yang keras | konfigurasi |
| Token Gaya Global | GST | konfigurasi |
| VOCODER WAVEGLOW | Waveglow | - |
Bagaimana cara mensintesis?
1. Pitchtron yang lembut
python inferent_soft_pitchtron.py
2. Pitchtron yang keras
python inference_hard_pitchtron.py
3. GST
python inference_gst_tts.py
Tips!
- Untuk mencegah retak, rentang vokal audio referensi perlu ditingkatkan ke rentang vokal speaker target.
- Bagian itu diimplementasikan dalam kode kami, tetapi rentang vokal speaker target dihitung secara kasar dengan mencicipi hanya 10 audio dan mengambil varian max-min sebagai varian.
- Anda akan mendapatkan suara yang jauh lebih baik jika Anda menggunakan statistik yang lebih akurat untuk rentang vokal speaker target.
Ucapan Terima Kasih
- Materi ini didasarkan pada pekerjaan yang didukung oleh Kementerian Perdagangan, Industri & Energi (MOTIE, Korea) di bawah Program Inovasi Teknologi Industri (No. 10080667, pengembangan teknologi sintesis pidato percakapan untuk mengekspresikan emosi dan kepribadian robot melalui diversifikasi sumber suara).
- Saya mendapat bantuan tentang grapheme ke penutup fonem dari pria mengagumkan ini => jeongpil_lee
- Repositori ini adalah implementasi penulis dari makalah berikut => (Pitchtron) https://arxiv.org/abs/2005.10456
- Repositori yang direferensikan
| Kontribusi | Url |
|---|
| Tacotron2 | https://github.com/nvidia/tacotron2 |
| Mellotron | https://github.com/nvidia/mellotron |
| Waveglow | https://github.com/nvidia/waveglow |
| Pemrosesan teks Korea | https://github.com/keithito/tacotron |