ในบทความของเราเราเสนอ Daft-exprt โมเดลอะคูสติกหลายลำโพงที่ก้าวหน้าไปสู่ความทันสมัยสำหรับการถ่ายโอนฉันทลักษณ์ข้ามลำโพงบนข้อความใด ๆ นี่เป็นหนึ่งในสิ่งที่ท้าทายที่สุดและไม่ค่อยได้รับการกล่าวถึงโดยตรงในการสังเคราะห์คำพูดโดยเฉพาะอย่างยิ่งสำหรับข้อมูลที่แสดงออกสูง Daft-Exprt ใช้เลเยอร์ปรับอากาศของฟิล์มเพื่อฉีดข้อมูลฉันทลักษณ์ที่แตกต่างกันอย่างมีกลยุทธ์ในทุกส่วนของสถาปัตยกรรม โมเดลเข้ารหัสคุณสมบัติฉันทลักษณ์ระดับต่ำแบบดั้งเดิมอย่างชัดเจนเช่นระดับเสียงเสียงดังและระยะเวลา แต่ยังมีข้อมูลระดับสูงกว่าที่ช่วยสร้างเสียงที่น่าเชื่อถือในรูปแบบที่แสดงออกสูง ข้อมูลประจำตัวของผู้บรรยายและข้อมูลฉันทลักษณ์ถูกแยกออกจากกลยุทธ์การฝึกอบรมที่เป็นปฏิปักษ์ที่ช่วยให้ฉันสามารถถ่ายโอนฉันทลักษณ์ได้อย่างแม่นยำทั่วลำโพง ผลการทดลองแสดงให้เห็นว่า Daft-exprt มีประสิทธิภาพสูงกว่าฐานที่แข็งแกร่งในงานการถ่ายโอนฉันทลักษณ์ข้ามข้อความระหว่างข้อความในขณะที่ให้ความเป็นธรรมชาติเทียบเท่ากับแบบจำลองการแสดงออกที่ล้ำสมัย นอกจากนี้ผลลัพธ์บ่งชี้ว่าโมเดลทิ้งข้อมูลตัวตนของผู้พูดจากการเป็นตัวแทนของฉันทลักษณ์และสร้างคำพูดด้วยเสียงที่ต้องการอย่างต่อเนื่อง เยี่ยมชมหน้าตัวอย่างของเราสำหรับตัวอย่างเสียงที่เกี่ยวข้องกับการทดลองกระดาษ
การเปิดเผยอย่างเต็มรูปแบบ : แบบจำลองที่ให้ไว้ในที่เก็บนี้ไม่เหมือนกับในการประเมินผลกระดาษ รูปแบบของกระดาษได้รับการฝึกฝนด้วยข้อมูลที่เป็นกรรมสิทธิ์ซึ่งป้องกันไม่ให้เราเผยแพร่ต่อสาธารณะ
เราฝึกอบรม daft-exprt ล่วงหน้าในการรวมกันของชุดข้อมูล LJ Speech และชุดข้อมูลการพูดทางอารมณ์ (ESD) จาก Zhou et al
เยี่ยมชมรีลีสของที่เก็บนี้เพื่อดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมมาก่อนและฟังตัวอย่างการถ่ายโอนฉันทลักษณ์โดยใช้โมเดลเดียวกันนี้
ความต้องการ:
เราขอแนะนำให้ใช้ Conda สำหรับการจัดการสภาพแวดล้อม Python เช่นดาวน์โหลดและติดตั้ง Miniconda
สร้างสภาพแวดล้อม Python ของคุณและติดตั้งการพึ่งพาโดยใช้ MakeFile:
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmakeการพึ่งพา Linux/Conda/PIP ทั้งหมดจะถูกติดตั้งโดย MakeFile และที่เก็บจะติดตั้งเป็นแพ็คเกจ PIP ในโหมดแก้ไขได้
ความต้องการ:
สร้างภาพนักเทียบท่าโดยใช้ DockerFile ที่เกี่ยวข้อง:
docker build -f environment/Dockerfile -t daft_exprt . คู่มือเริ่มต้นอย่างรวดเร็วนี้จะแสดงวิธีใช้สคริปต์ที่แตกต่างกันของที่เก็บนี้เป็น:
สคริปต์ทั้งหมดอยู่ในไดเรกทอรีสคริปต์
ซอร์สโค้ด Daft-exprt อยู่ในไดเรกทอรี daft_exprt
พารามิเตอร์การกำหนดค่าที่ใช้ในสคริปต์ทั้งหมดจะถูก instanciated ใน hparams.py
เป็นตัวอย่างการเริ่มต้นอย่างรวดเร็วเราพิจารณาใช้ชุดข้อมูลคำพูด 22KHz LJ และชุดข้อมูลการพูดทางอารมณ์ 16KHz (ESD) จาก Zhou et al
สิ่งนี้รวมลำโพงทั้งหมด 11 ลำ ชุดข้อมูลลำโพงทั้งหมดจะต้องอยู่ในไดเรกทอรีรากเดียวกัน ตัวอย่างเช่น:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
ในตัวอย่างนี้เราใช้อิมเมจนักเทียบท่าที่สร้างขึ้นในส่วนก่อนหน้า:
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
ซอร์สโค้ดคาดว่าโครงสร้างต้นไม้เฉพาะสำหรับชุดข้อมูลลำโพงแต่ละชุด:
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
metadata.csv ต้องจัดรูปแบบดังนี้:
wav_file_name_1|text_1
...
wav_file_name_N|text_N
เนื่องจากชุดข้อมูลแต่ละชุดมีระบบการตั้งชื่อของตัวเองโครงการนี้ไม่ได้ให้สคริปต์สากลแบบสำเร็จรูป
อย่างไรก็ตามสคริปต์ format_dataset.py เสนอรหัสให้ฟอร์แมต LJ และ 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
ในส่วนนี้รหัสจะ:
ในการประมวลผลข้อมูลที่มีรูปแบบทั้งหมดที่มีอยู่ทั้งหมด (เช่น LJ และ ESD ในตัวอย่างนี้):
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
นี่จะเป็นข้อมูลล่วงหน้าโดยใช้พารามิเตอร์ไฮเปอร์เริ่มต้นที่ตั้งไว้สำหรับ Audios 22kHz
เอาต์พุตทั้งหมดที่เกี่ยวข้องกับการทดสอบจะถูกเก็บไว้ใน /workdir/repo_dir/trainings/EXPERIMENT_NAME
นอกจากนี้คุณยังสามารถกำหนดเป้าหมายลำโพงเฉพาะสำหรับการประมวลผลข้อมูลล่วงหน้า ตัวอย่างเช่นในการพิจารณาเฉพาะผู้พูด ESD:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
ฟังก์ชั่นก่อนกระบวนการใช้ข้อโต้แย้งหลายประการ:
--features_dir : เส้นทางสัมบูรณ์ที่จะจัดเก็บข้อมูลล่วงหน้า ค่าเริ่มต้นเป็น /workdir/repo_dir/datasets--proportion_validation : สัดส่วนของตัวอย่างที่จะอยู่ในชุดการตรวจสอบความถูกต้อง ค่าเริ่มต้นเป็น 0.1 % ต่อลำโพง--nb_jobs : จำนวนแกนที่ใช้สำหรับการประมวลผล Python Multi-Processing หากตั้งค่าเป็น max จะใช้คอร์ CPU ทั้งหมด ค่าเริ่มต้นเป็น 6 โปรดทราบว่าหากเป็นครั้งแรกที่คุณประมวลผลข้อมูลล่วงหน้าขั้นตอนนี้จะใช้เวลาหลายชั่วโมง
คุณสามารถลดเวลาในการคำนวณได้โดยการเพิ่มพารามิเตอร์ --nb_jobs
เมื่อการประมวลผลล่วงหน้าเสร็จแล้วให้เปิดการฝึกอบรม เพื่อฝึกอบรมข้อมูลที่ประมวลผลล่วงหน้าทั้งหมด:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
หรือถ้าคุณกำหนดเป้าหมายลำโพงเฉพาะระหว่างการประมวลผลล่วงหน้า (เช่นลำโพง ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
เอาต์พุตทั้งหมดที่เกี่ยวข้องกับการทดสอบจะถูกเก็บไว้ใน /workdir/repo_dir/trainings/EXPERIMENT_NAME
ฟังก์ชั่นรถไฟมีข้อโต้แย้งหลายประการ:
--checkpoint : เส้นทางที่แน่นอนของจุดตรวจสอบ DAFT-EXPRT ค่าเริ่มต้นเป็น ""--no_multiprocessing_distributed : ปิดการฝึกอบรมการประมวลผลแบบหลายครั้ง ค่าเริ่มต้นเป็น False--world_size : จำนวนโหนดสำหรับการฝึกอบรมแบบกระจาย ค่าเริ่มต้นเป็น 1 .--rank : อันดับโหนดสำหรับการฝึกอบรมแบบกระจาย ค่าเริ่มต้นเป็น 0--master : URL ที่ใช้ในการตั้งค่าการฝึกอบรมแบบกระจาย ค่าเริ่มต้นเป็น tcp://localhost:54321 ค่าเริ่มต้นเหล่านี้จะเปิดการฝึกอบรมใหม่เริ่มต้นที่การทำซ้ำ 0 โดยใช้ GPU ที่มีอยู่ทั้งหมดบนเครื่อง
รหัสสมมติว่ามีเพียง 1 GPU ที่มีอยู่ในเครื่อง
ขนาดแบทช์เริ่มต้นและการสะสมแบบไล่ระดับสูงไฮเปอร์พารามิเตอร์ถูกตั้งค่าเป็นค่าเพื่อทำซ้ำขนาดแบทช์ของ 48 จากกระดาษ
รหัสยังรองรับการบันทึก Tensorboard เพื่อแสดงผลการบันทึก:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
เมื่อการฝึกอบรมเสร็จสิ้นคุณสามารถสร้างชุดข้อมูลสำหรับการปรับแต่ง Vocoder:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
หรือถ้าคุณกำหนดเป้าหมายลำโพงเฉพาะระหว่างการประมวลผลล่วงหน้าและการฝึกอบรม (เช่นลำโพง 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
ชุดข้อมูลการปรับแต่งจะถูกเก็บไว้ใน /workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset
สำหรับตัวอย่างเกี่ยวกับวิธีการใช้ daft-exprt สำหรับการสังเคราะห์ TTS ให้เรียกใช้สคริปต์ synthesize.py
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
ประโยคเริ่มต้นและคำพูดอ้างอิงถูกใช้ในสคริปต์
สคริปต์ยังมีความเป็นไปได้ที่จะ:
--batch_size : กระบวนการของประโยคในแบบคู่ขนาน--real_time_factor : ประเมินประสิทธิภาพปัจจัยเรียลไทม์ DAFT-EXPRT ตามขนาดแบทช์ที่เลือก--control : ดำเนินการควบคุมฉันทลักษณ์ท้องถิ่น @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}
}
การมีส่วนร่วมใด ๆ ในที่เก็บนี้เป็นมากกว่าการต้อนรับ!
หากคุณมีข้อเสนอแนะใด ๆ โปรดส่งไปที่ [email protected]
© [2021] Ubisoft Entertainment สงวนลิขสิทธิ์