chldkato

윈도우에서 waveglow 학습하기 본문

딥러닝

윈도우에서 waveglow 학습하기

chldkato 2019. 9. 14. 17:51

nvidia apex가 필요한데 윈도우에서 apex 설치가 잘 안되고

 

싱글 gpu 사용중이라 apex를 안쓰고 실행했습니다.

 

1080ti 1개와 cuda10.0, cudnn7.5 사용 중입니다.

 

 

1. 코드 다운로드 및 학습 준비

 

https://github.com/NVIDIA/waveglow

 

NVIDIA/waveglow

A Flow-based Generative Network for Speech Synthesis - NVIDIA/waveglow

github.com

github에 나와있는대로 진행합니다.

git clone https://github.com/NVIDIA/waveglow.git
cd waveglow
git submodule init
git submodule update
pip3 install -r requirements.txt

다음에 Apex를 설치하라고 되있는데 저는 설치가 안되서 Apex를 코드에서 배제하고 실행하겠습니다.

 

그리고 pytorch를 설치해줍니다. 아래는 cuda10.0 버전 기준입니다.

conda install pytorch torchvision cuda100 -c pytorch

 

 

2. 데이터 준비

 

1) LJ speech 데이터를 받은 후 압축을 풀어서 wave 파일들만 waveglow/data 경로에 넣어줍니다.

 

https://keithito.com/LJ-Speech-Dataset/

 

The LJ Speech Dataset

The LJ Speech Dataset This is a public domain speech dataset consisting of 13,100 short audio clips of a single speaker reading passages from 7 non-fiction books. A transcription is provided for each clip. Clips vary in length from 1 to 10 seconds and have

keithito.com

2) 학습, 테스트 데이터 셋을 만들어 줍니다.

 

저는 리눅스 기본 명령어를 cmd에서 가능하게 설치해놔서 그대로 했습니다.

 

윈도우에서는 ls 대신 dir로 하면 되는걸로 알고있습니다.

 

아래부터 모든 명령문은 waveglow 경로에서 실행하시면 됩니다.

ls data/*.wav | tail -n+10 > train_files.txt
ls data/*.wav | head -n10 > test_files.txt

 

3. 학습

 

train.py에서 33번째줄(from distributed...)과 34번째줄(from torch.utils...)을 주석처리합니다.

 

그리고 config.json을 열어서 fp16_run을 false로 수정합니다.

 

참고로 fp16_run이 true면 연산 속도가 빨라지는데 gpu가 10xx보다 높아야합니다. ex) 2080, v100

 

기본 batch_size가 12일텐데 싱글 1080ti로는 out of memory가 뜹니다.

 

저는 batch_size를 1로 수정했고 학습하면 gpu에서 4기가 정도의 메모리를 차지합니다.

 

다른 방법으로는 WN_config에서 n_layers 값을 줄여줘도 됩니다.

mkdir checkpoints
python train.py -c config.json

 

4. 테스트

 

python mel2samp.py -f test_files.txt -o . -c config.json
ls *.pt > mel_files.txt
python inference.py -f mel_files.txt -w checkpoints/waveglow_10000 -o . -s 0.6

waveglow_10000에서 숫자는 checkpoints 폴더 확인하시고 수정하면 됩니다.

 

완료되면 waveglow 경로에 음성 파일이 생성됩니다.

Comments