หมายเหตุ: ฉันไม่ได้ทำงานในโครงการนี้อีกต่อไป ดู #9.
งานนี้ได้รับแรงบันดาลใจจากโมเดล M-CNN ที่อธิบายไว้ในการผกผันของ Spectrogram อย่างรวดเร็วโดยใช้เครือข่ายประสาทแบบหลายหัว ผู้เขียนแสดงให้เห็นว่าแม้แต่เครือข่ายการสุ่มตัวอย่างที่เรียบง่ายก็เพียงพอที่จะสังเคราะห์รูปคลื่นจาก Spectrogram/Mel-Spectrogram
ใน repo นี้ฉันใช้คุณสมบัติ Spectrogram สำหรับรูปแบบการฝึกอบรมเพราะมีข้อมูลมากกว่าคุณสมบัติ Mel-Spectrogram อย่างไรก็ตามเนื่องจากการแปลงจาก spectrogram เป็น mel-spectrogram เป็นเพียงการฉายเชิงเส้นดังนั้นโดยพื้นฐานแล้วคุณสามารถฝึกอบรมเครือข่ายอย่างง่าย ๆ ทำนายสเปกโตรรัมจาก mel-spectrogram นอกจากนี้คุณยังสามารถเปลี่ยนพารามิเตอร์เพื่อให้สามารถฝึกอบรมนักร้องจากคุณสมบัติ Mel-Spectrogram ได้เช่นกัน
เปรียบเทียบกับ M-CNN เครือข่ายที่ฉันเสนอมีความแตกต่างบางอย่าง:
$ pip install -r requirements.txtฉันใช้ชุดข้อมูล ljspeech สำหรับการทดสอบของฉัน หากคุณยังไม่มีโปรดดาวน์โหลดชุดข้อมูลและวางไว้ที่ไหนสักแห่ง
หลังจากนั้นคุณสามารถเรียกใช้คำสั่งเพื่อสร้างชุดข้อมูลสำหรับการทดสอบของเรา:
$ python preprocessing.py --samples_per_audio 20
--out_dir ljspeech
--data_dir path/to/ljspeech/dataset
--n_workers 4$ python train.py --out_dir ${output_directory}สำหรับตัวเลือกการฝึกอบรมเพิ่มเติมโปรดเรียกใช้:
$ python train.py --help$ python gen_spec.py -i sample.wav -o out.npz$ python synthesis.py --model_path path/to/checkpoint
--spec_path out.npz
--out_path out.wavคุณสามารถรับโมเดลที่ผ่านการฝึกอบรมมาก่อนได้ที่นี่
การใช้งานนี้ใช้รหัสจาก Nvidia, Ryuichi Yamamoto, Keith Ito ตามที่อธิบายไว้ในรหัสของฉัน
มิกซ์