Black technology based on the three giants of artificial intelligence:
OpenAI's whisper, 680,000 hours in multiple languages
Nvidia's bigvgan, anti-aliasing for speech generation
Microsoft's adapter, high-efficiency for fine-tuning
Lora ไม่ได้ใช้งานอย่างเต็มที่ในโครงการนี้ แต่สามารถพบได้ที่นี่: Lora TTS & Paper
ใช้แบบจำลอง pretrain เพื่อปรับแต่ง
การประมวลผลล่วงหน้าที่จำเป็น:
จากนั้นใส่ชุดข้อมูลลงในไดเร็กทอรี data_raw ตามโครงสร้างไฟล์ต่อไปนี้
data_raw
├───speaker0
│ ├───000001.wav
│ ├───...
│ └───000xxx.wav
└───speaker1
├───000001.wav
├───...
└───000xxx.wav1 การพึ่งพาซอฟต์แวร์
PIP Install -r rechent.txt
2 ดาวน์โหลด The Timbre Encoder: Speaker-encoder โดย @mueller91 ใส่ best_model.pth.tar ลงใน speaker_pretrain/
3 ดาวน์โหลด Whisper Model Model Medium Medium Medium ตรวจสอบให้แน่ใจว่าได้ดาวน์โหลด medium.pt , ใส่ลงใน whisper_pretrain/
เคล็ดลับ: Whisper อยู่ในตัวอย่าติดตั้งนอกจากนี้มันจะขัดแย้งและรายงานข้อผิดพลาด
4 ดาวน์โหลด pretrain model maxgan_pretrain_32k.pth และทำการทดสอบ
python svc_inference.py -config configs/maxgan.yaml -โมเดล maxgan_pretrain_32k.pth ---spk ./configs/singers/singer0001.npy -wave test.wav
ใช้คำสั่งนี้หากคุณต้องการทำสิ่งนี้โดยอัตโนมัติ:
Python3 เตรียม/easyProcess.py
หรือทีละขั้นตอนดังนี้:
1, การสุ่มตัวอย่างอีกครั้ง
สร้างเสียงด้วยอัตราการสุ่มตัวอย่าง 16000Hz
Python เตรียม/preprocess_a.py -w ./data_raw -o ./data_svc/waves-16k -s 16000
สร้างเสียงด้วยอัตราการสุ่มตัวอย่าง 32000Hz
Python เตรียม/preprocess_a.py -w ./data_raw -o ./data_svc/waves-32k -s 32000
2, ใช้เสียง 16K เพื่อแยกระดับเสียง
Python เตรียม/preprocess_f0.py -w data_svc/waves -16k/-p data_svc/pitch
3, ใช้เสียง 16K เพื่อแยก PPG
Python เตรียม/preprocess_ppg.py -w data_svc/waves -16k/-p data_svc/Whisper
4, ใช้เสียง 16K เพื่อแยกรหัส Timbre
Python เตรียม/preprocess_speaker.py data_svc/waves-16k/data_svc/ลำโพง
5, แยกรหัสนักร้องเพื่อการอนุมาน
Python เตรียม/preprocess_speaker_ave.py data_svc/ลำโพง/data_svc/singer
6, ใช้เสียง 32K เพื่อสร้างดัชนีการฝึกอบรม
Python เตรียม/preprocess_train.py
7, การฝึกอบรมการดีบักไฟล์
Python เตรียม/preprocess_zzz.py -c configs/maxgan.yaml
data_svc/
└── waves-16k
│ └── speaker0
│ │ ├── 000001.wav
│ │ └── 000xxx.wav
│ └── speaker1
│ ├── 000001.wav
│ └── 000xxx.wav
└── waves-32k
│ └── speaker0
│ │ ├── 000001.wav
│ │ └── 000xxx.wav
│ └── speaker1
│ ├── 000001.wav
│ └── 000xxx.wav
└── pitch
│ └── speaker0
│ │ ├── 000001.pit.npy
│ │ └── 000xxx.pit.npy
│ └── speaker1
│ ├── 000001.pit.npy
│ └── 000xxx.pit.npy
└── whisper
│ └── speaker0
│ │ ├── 000001.ppg.npy
│ │ └── 000xxx.ppg.npy
│ └── speaker1
│ ├── 000001.ppg.npy
│ └── 000xxx.ppg.npy
└── speaker
│ └── speaker0
│ │ ├── 000001.spk.npy
│ │ └── 000xxx.spk.npy
│ └── speaker1
│ ├── 000001.spk.npy
│ └── 000xxx.spk.npy
└── singer
├── speaker0.spk.npy
└── speaker1.spk.npy0, หากการปรับแต่งตามรุ่นที่ผ่านการฝึกอบรมมาก่อนคุณต้องดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมมาก่อน: maxgan_pretrain_32k.pth
ตั้งค่า pretrain: "./maxgan_pretrain_32k.pth" ใน configs/maxgan.yaml, และปรับอัตราการเรียนรู้อย่างเหมาะสมเช่น 1E-5
1, เริ่มการฝึกอบรม
python svc_trainer.py -c configs/maxgan.yaml -n svc
2, การฝึกอบรมกลับมาทำงานต่อ
python svc_trainer.py -c configs/maxgan.yaml -n svc -p chkpt/svc/***. pth.
3, ดูบันทึก
Tensorboard -บันทึก Logdir/

ใช้คำสั่งนี้หากคุณต้องการ GUI ที่ทำคำสั่งทั้งหมดด้านล่าง:
Python3 svc_gui.py
หรือทีละขั้นตอนดังนี้:
1, โมเดลการอนุมานการส่งออก
Python svc_export.py -config configs/maxgan.yaml -checkpoint_path chkpt/svc/***. pt
2, ใช้ Whisper เพื่อแยกการเข้ารหัสเนื้อหาโดยไม่ต้องใช้การให้เหตุผลแบบคลิกเดียวเพื่อลดการใช้หน่วยความจำ GPU
python Whisper/inference.py -w test.wav -p test.ppg.npy
3, แยกพารามิเตอร์ F0 ไปยังรูปแบบข้อความ CSV
python pitch/inferfer.py -w test.wav -p test.csv
4, ระบุพารามิเตอร์และอนุมาน
python svc_inference.py -config configs/maxgan.yaml -Model Maxgan_g.pth ---spk ./data_svc/singers/your_singer.npy -test.wav -test.ppg.npy
เมื่อมีการระบุ -PPG เมื่อเสียงเดียวกันมีเหตุผลหลายครั้งจะสามารถหลีกเลี่ยงการสกัดรหัสเนื้อหาเสียงซ้ำ ๆ หากไม่ได้ระบุไว้จะมีการสกัดโดยอัตโนมัติ
เมื่อ -PIT ถูกระบุพารามิเตอร์ F0 ที่ปรับด้วยตนเองสามารถโหลดได้ หากไม่ได้ระบุไว้จะมีการสกัดโดยอัตโนมัติ
สร้างไฟล์ในไดเรกทอรีปัจจุบัน: svc_out.wav
| อาร์กอน | -การกำหนด | --แบบอย่าง | -สเปค | --คลื่น | -PPG | --หลุม | --กะ |
|---|---|---|---|---|---|---|---|
| ชื่อ | เส้นทางการกำหนดค่า | เส้นทางแบบจำลอง | ลำโพง | อินพุตคลื่น | คลื่น ppg | สนามคลื่น | กะสนาม |
5, โพสต์โดย vad
Python svc_inference_post.py -ref test.wav ---svc svc_out.wav -out svc_post.wav
ส่วนขยายที่ใช้อะแดปเตอร์ของโมเดลข้อความหลายลำโพงเป็นคำพูดสำหรับลำโพงใหม่
adaspeech: ข้อความที่ปรับได้เป็นคำพูดสำหรับเสียงที่กำหนดเอง
https://github.com/nii-yamagishilab/project-nn-pytorch-scripts/tree/master/project/01-nsf
https://github.com/mindslab-ai/univnet [กระดาษ]
https://github.com/openai/whisper/ [กระดาษ]
https://github.com/nvidia/bigvgan [Paper]