| 일 | 공책 |
|---|---|
| whisper_vits_japanese (내장 엘라 데이터 세트) |
이 프로젝트는 Google의 Whisper Project를 VITS 데이터 프로세서로 사용합니다. Whisper Project의 Transcribe.py를 수정함으로써 오디오에 해당하는 SRT 파일을 생성합니다 (여기에서 삭제 된 PR은 여기에 사용되며 PR은 더 이상 찾을 수 없으므로 원래 저자에게는 참조 할 수 없습니다). 동시에, Whisper의 한계는 폴더의 모든 오디오 파일을 가로 지르는 지점까지 몇 개의 오디오 파일 만 읽을 수 있습니다. Whisper는 SRT를 출력하여 오디오를 긴 오디오를 입력 할 수 있으며 사용자는 더 이상 오디오를 조각으로 자르거나 오디오의 텍스트를 번역 할 필요가 없습니다. 우리는 음성 인식 및 데이터 준비에 대한 속삭임에 직접 의존하고 자동으로 짧은 오디오로 슬라이스하고 자동으로 전사 파일을 생성 한 다음 VITS 교육 프로세스로 보냅니다. 장기 오디오 건조 사운드를 쉽게 얻을 수 있다는 점을 고려하면 VITS 진입 장벽이 다시 줄어 듭니다.
처리 프로세스는 대략 다음과 같습니다. Whisper가 인식하는 SRT 파일은 Auto.py에서 처리합니다. 처리 프로세스는 Tobiasrordorf/srt-to-csv and-audio-split : srt 파일의 자막 인포를 기반으로 한 긴 오디오 파일 (csv에 저장된 전사) (github.com)을 말합니다 (github.com). 오디오 파일은 먼저 22050Hz 및 16 비트로 변환 된 다음 이름이 같은 SRT 파일의 타임 스탬프를 CSV 파일로 변환됩니다. CSV 파일에는 오디오의 각 세그먼트의 시작 시간 및 종료 시간과 해당 전사 및 오디오 파일 경로가 있습니다. 그런 다음 Audiosegment 패키지는 시작 시간과 종료 시간에 따라 긴 오디오를 분할하는 데 사용되며 접미사가있는 오디오 파일은 A_0.wav 및 A_1.wav 등과 같은 슬라이스 순서로 생성됩니다. 모든 슬라이스 오디오는 Slice_audio 폴더에 저장된 다음 "경로 | 번역"이있는 TXT 파일이 푸드리스트 아래에 생성됩니다. 후속 데이터 흐름은 VITS 부분에 직접 연결될 수 있습니다.
내가 지금 사용하는 vits 클리너와 상징은 Cjangcjengh/vits입니다 : Vits는 창조 신 기간의 초기 버전으로 일본어, 중국어, 한국 및 산스크리트어 (github.com)의 구현입니다. 이제 그의 창고는 더 많은 클리너와 기호를 업데이트했지만 나는 매우 향수가 많은 사람이며, 처음에 모든 사람들이 Vits에 와서 원래 버전을 사용하는 시간이 그리워요. VITS에는 두 가지 주요 전처리가 있으며, 하나는 단조로운 정렬이고 다른 하나는 Preprocess.py이며, Train.py를 시작할 수 있습니다. 모든 프로세스를 Whisper-Vits-Japanese.ipynb에 넣었으며 단계별로 클릭하여 실행하면됩니다. 사용자가 변경 해야하는 유일한 것은 오디오 지퍼 경로를 자신의 오디오 지퍼로 바꾸는 것입니다. 나머지 부분을 수정할 필요가 없습니다. 마지막으로 모델 및 처리 된 파일을 네트워크 디스크에 저장하고 다음 교육 중에 네트워크 디스크에서 마지막 최신 체크 포인트를 복원하기위한 지침을 추가했습니다.
오디오 파일 형식의 이름을 지정하고 오디오 폴더에 업로드하십시오. 그런 다음 일반 단계를 따라 실행하십시오. 오디오 처리가 완료되면 Auto_ms.py 파일을 실행하면 형식 경로 | spewerid | 텍스트로 txt 파일이 자동으로 생성됩니다.
참고 : auto_ms.py를 사용하여 txt를 생성하는 경우 정렬 및 텍스트 변환 단계에서 코드로 수정해야합니다.
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))