Dalam makalah kami, kami mengusulkan DAFT-EXPRT, model akustik multi-speaker memajukan canggih untuk transfer prosodi lintas-speaker pada teks apa pun. Ini adalah salah satu tugas yang paling menantang, dan jarang ditangani secara langsung, dalam sintesis bicara, terutama untuk data yang sangat ekspresif. DAFT-EXPRT menggunakan lapisan pengkondisian film untuk secara strategis menyuntikkan informasi prosodik yang berbeda di semua bagian arsitektur. Model ini secara eksplisit mengkode fitur prosodi tingkat rendah tradisional seperti nada, kenyaringan dan durasi, tetapi juga informasi prosodik tingkat yang lebih tinggi yang membantu menghasilkan suara yang meyakinkan dalam gaya yang sangat ekspresif. Identitas pembicara dan informasi prosodik dipecat melalui strategi pelatihan permusuhan yang memungkinkan transfer prosodi yang akurat lintas pembicara. Hasil eksperimen menunjukkan bahwa DAFT-EXPRT secara signifikan mengungguli baseline yang kuat pada tugas transfer prosodi lintas-speaker antar-teks, sambil menghasilkan kealamian yang sebanding dengan model ekspresif yang canggih. Selain itu, hasil menunjukkan bahwa model tersebut membuang informasi identitas pembicara dari representasi prosodi, dan secara konsisten menghasilkan pidato dengan suara yang diinginkan. Kunjungi halaman demo kami untuk sampel audio yang terkait dengan eksperimen kertas.
Pengungkapan penuh : Model yang disediakan dalam repositori ini tidak sama dengan dalam evaluasi kertas. Model makalah ini dilatih dengan data eksklusif yang mencegah kami merilisnya secara publik.
Kami pra-pelatihan daft-exprt pada kombinasi dataset ucapan LJ dan dataset ucapan emosional (ESD) dari Zhou et al.
Kunjungi rilis repositori ini untuk mengunduh model pra-terlatih dan mendengarkan contoh transfer prosodi menggunakan model yang sama ini.
Persyaratan:
Kami merekomendasikan penggunaan Conda untuk Manajemen Lingkungan Python, misalnya unduh dan instal miniconda.
Buat lingkungan Python Anda dan instal dependensi menggunakan Makefile:
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmakeSemua dependensi Linux/Conda/PIP akan diinstal oleh Makefile, dan repositori akan diinstal sebagai paket PIP dalam mode yang dapat diedit.
Persyaratan:
Bangun gambar Docker menggunakan DockerFile yang terkait:
docker build -f environment/Dockerfile -t daft_exprt . Panduan Mulai Cepat ini akan menggambarkan cara menggunakan skrip yang berbeda dari repositori ini untuk:
Semua skrip terletak di direktori skrip.
Kode Sumber Daft-Exprt terletak di direktori DAFT_EXPRT.
Parameter konfigurasi yang digunakan dalam skrip semuanya dipasang di hparams.py.
Sebagai contoh awal yang cepat, kami mempertimbangkan untuk menggunakan dataset pidato LJ 22KHz dan Dataset Pidato Emosional 16kHz (ESD) dari Zhou et al.
Ini menggabungkan total 11 pembicara. Semua dataset speaker harus berada di direktori root yang sama. Misalnya:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
Dalam contoh ini, kami menggunakan gambar Docker yang dibangun di bagian sebelumnya:
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
Kode sumber mengharapkan struktur pohon spesifik untuk setiap set data speaker:
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
metadata.csv harus diformat sebagai berikut:
wav_file_name_1|text_1
...
wav_file_name_N|text_N
Mengingat setiap dataset memiliki nomenklatur sendiri, proyek ini tidak memberikan skrip universal yang sudah jadi.
Namun, skrip format_dataset.py sudah mengusulkan kode untuk memformat LJ dan ESD:
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
Di bagian ini, kode akan:
Untuk pra-proses semua data yang diformat yang tersedia (yaitu LJ dan ESD dalam contoh ini):
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
Ini akan pra-proses data menggunakan hyper-parameter default yang ditetapkan untuk audio 22kHz.
Semua output yang terkait dengan percobaan akan disimpan di /workdir/repo_dir/trainings/EXPERIMENT_NAME .
Anda juga dapat menargetkan speaker spesifik untuk pra-pemrosesan data. Misalnya, hanya mempertimbangkan speaker ESD:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
Fungsi pra-proses mengambil beberapa argumen:
--features_dir : Jalur absolut di mana data yang telah diproses akan disimpan. Default ke /workdir/repo_dir/datasets--proportion_validation : Proporsi contoh yang akan berada di set validasi. Default menjadi 0.1 % per speaker.--nb_jobs : Jumlah inti yang akan digunakan untuk multi-pemrosesan Python. Jika diatur ke max , semua inti CPU digunakan. Default ke 6 . Perhatikan bahwa jika ini adalah pertama kalinya Anda melakukan pra-proses data, langkah ini akan memakan waktu beberapa jam.
Anda dapat mengurangi waktu komputasi dengan meningkatkan parameter --nb_jobs .
Setelah pra-pemrosesan selesai, pelatihan peluncuran. Untuk melatih semua data yang telah diproses:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
Atau jika Anda menargetkan speaker spesifik selama pra-pemrosesan (misalnya speaker ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
Semua output yang terkait dengan percobaan akan disimpan di /workdir/repo_dir/trainings/EXPERIMENT_NAME .
Fungsi kereta mengambil beberapa argumen:
--checkpoint : Jalur absolut dari pos pemeriksaan daft-exprt. Default ke ""--no_multiprocessing_distributed : Nonaktifkan pelatihan terdistribusi multi-pemrosesan Pytorch. Default ke False--world_size : Jumlah node untuk pelatihan terdistribusi. Default ke 1 .--rank : Peringkat simpul untuk pelatihan terdistribusi. Default ke 0 .--master : URL digunakan untuk mengatur pelatihan terdistribusi. Default ke tcp://localhost:54321 . Nilai -nilai default ini akan meluncurkan pelatihan baru mulai dari iterasi 0, menggunakan semua GPU yang tersedia pada mesin.
Kode ini mengandaikan bahwa hanya 1 GPU yang tersedia di mesin.
Ukuran batch default dan akumulasi gradien hiper-parameter diatur ke nilai untuk mereproduksi ukuran batch 48 dari kertas.
Kode ini juga mendukung penebangan Tensorboard. Untuk menampilkan output logging:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
Setelah pelatihan selesai, Anda dapat membuat dataset untuk fine-tuning vocoder:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
Atau jika Anda menargetkan pembicara spesifik selama pra-pemrosesan dan pelatihan (misalnya penutur ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
Dataset fine-tuning akan disimpan di /workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset .
Sebagai contoh tentang cara menggunakan daft-exprt untuk sintesis TTS, jalankan skrip sintesis.py.
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
Kalimat default dan ucapan referensi digunakan dalam skrip.
Script juga menawarkan kemungkinan untuk:
--batch_size : Proses batch kalimat secara paralel--real_time_factor : Perkiraan kinerja faktor waktu nyata DAFT-EXPRT mengingat ukuran batch yang dipilih--control : Lakukan kontrol prosodi lokal @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
Kontribusi apa pun untuk repositori ini lebih dari disambut!
Jika Anda memiliki umpan balik, silakan kirim ke [email protected].
© [2021] Ubisoft Entertainment. Semua hak dilindungi undang -undang