| Tugas | Buku catatan |
|---|---|
| Whisper_vits_japanese (Dataset Ella bawaan) |
Proyek ini menggunakan proyek Whisper Google sebagai prosesor data VITS. Dengan memodifikasi Transcribe.py dari Proyek Whisper, ia menghasilkan file SRT yang sesuai untuk audio (PR yang dihapus digunakan di sini, dan PR tidak lagi ditemukan, sehingga tidak dapat dirujuk ke penulis asli). Pada saat yang sama, batas Whisper hanya dapat membaca beberapa file audio santai ke titik di mana ia dapat melintasi semua file audio di folder. Whisper dapat mengeluarkan SRT untuk membuat input audio panjang menjadi mungkin, dan pengguna tidak perlu lagi memotong audio menjadi potongan -potongan, atau bahkan menerjemahkan teks audio panjang. Kami secara langsung mengandalkan Whisper untuk pengenalan suara dan persiapan data, secara otomatis mengiris audio pendek, secara otomatis menghasilkan file transkrip, dan kemudian mengirimnya ke proses pelatihan VITS. Mempertimbangkan bahwa suara kering audio jangka panjang lebih mudah diperoleh, hambatan entri VIT sangat berkurang lagi.
Proses pemrosesan kira -kira sebagai berikut: File SRT yang diakui oleh Whisper akan diproses oleh auto.py. Proses pemrosesan mengacu pada tobiasrordorf/srt-to-csv-and-audio-split: split file audio panjang berdasarkan subtitle-info dalam file srt (transkrip disimpan dalam csv) (github.com). File audio pertama kali dikonversi menjadi 22050Hz dan 16 bit, dan kemudian cap waktu dari file SRT dengan nama yang sama dan transkrip pengenalan suara dikonversi ke file CSV. File CSV memiliki waktu mulai dan waktu akhir setiap segmen audio, serta jalur transkrip dan file audio yang sesuai. Kemudian, paket audiosment digunakan untuk membagi audio yang panjang sesuai dengan waktu mulai dan akhir waktu, dan file audio dengan sufiks dihasilkan dalam urutan irisan, seperti a_0.wav dan a_1.wav, dll. Semua audio yang diiris akan disimpan dalam folder slice_audio, dan kemudian file txt dengan "terjemahan" yang disyaratkan oleh VITS slice_audio. Aliran data selanjutnya dapat dihubungkan langsung ke bagian VIT.
Vits Cleaner dan Symbol yang saya gunakan sekarang adalah Cjangcjengh/Vits: Vits Implementasi Jepang, Cina, Korea, dan Sanskerta (github.com) sebagai versi awal periode dewa ciptaan. Sekarang gudangnya telah memperbarui lebih banyak pembersih dan simbol, tetapi saya adalah orang yang sangat nostalgia, dan saya merindukan waktu ketika semua orang datang ke Vits di awal, jadi saya masih menggunakan versi aslinya. Vits memiliki dua preprocessing utama, satu monotonik Align dan yang lainnya adalah preprocess.py, dan kemudian Anda dapat memulai train.py. Saya memasukkan semua proses ke dalam Whisper-Vits-Jepang.ipynb, dan saya hanya perlu mengklik mereka langkah demi langkah untuk dijalankan. Satu -satunya hal yang membutuhkan pengguna untuk mengubah adalah mengganti jalur zip audio saya dengan zip audio Anda sendiri, dan bagian -bagian lain tidak perlu dimodifikasi. Akhirnya, saya menambahkan instruksi untuk menyimpan model dan memproses file ke disk jaringan, dan untuk mengembalikan pos pemeriksaan terakhir terakhir dari disk jaringan selama pelatihan berikutnya.
Cukup beri nama format file audio speakerid_xxxx.wav dan unggah ke folder audio. Kemudian ikuti langkah -langkah umum untuk menjalankannya. Ketika pemrosesan audio selesai, jalankan file auto_ms.py, dan file txt akan secara otomatis dihasilkan, dengan format path | speakerid | teks.
Catatan: Jika Anda menggunakan auto_ms.py untuk menghasilkan txt, Anda harus memodifikasinya ke kode dalam langkah konversi dan teks konversi: (karena tex_index tidak 1 tetapi 2 saat pelatihan untuk banyak orang)
python preprocess.py --text_index 2 --text_cleaners japanese_cleaners --filelists /content/whisper-vits-japanese/filelists/train_filelist.txt /content/whisper-vits-japanese/filelists/val_filelist.txt
python train_ms.py -c configs/ms.json -m ms
hps = utils.get_hparams_from_file("./configs/ms.json")
net_g = SynthesizerTrn(
len(symbols),
hps.data.filter_length // 2 + 1,
hps.train.segment_size // hps.data.hop_length,
n_speakers=hps.data.n_speakers,
**hps.model).cuda()
_ = net_g.eval()
_ = utils.load_checkpoint("/root/autodl-tmp/logs/ms/G_29000.pth", net_g, None)
stn_tst = get_text("ごめんね優衣", hps)
with torch.no_grad():
x_tst = stn_tst.cuda().unsqueeze(0)
x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda()
sid = torch.LongTensor([11]).cuda() //11指speakerId为11,如果有12个n_speaker,编号就从0-11
audio = net_g.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.cpu().float().numpy()
ipd.display(ipd.Audio(audio, rate=hps.data.sampling_rate, normalize=False))