📌 GCP 인스턴스 만들기
💡 Coqui TTS같은 경우.. 연식이 좀 된 친구다 보니 라이브러리 의존도에 의해 매우매우 높은 확률로 colab 환경에서 문제가 발생하기 때문에, GCP 인스턴스를 통해 Coqui TTS가 정상적으로 작동하는 버전으로 가상 환경을 세팅해주어야 한다!!
👇🏻 그렇기 때문에 수행하게 되는 작업 과정들
⚙️ 인스턴스 사양
- GPU : T4
- 머신 유형 : n1-standard-4
- 부팅 디스크 : Ubuntu, 100GB
- 방화벽 옵션 : 모두 사용
- 고급 옵션 : 네트워크 태그 - jupyter
📌 SSH 연결 & 기본 세팅
💡 요기서는 Anaconda3-2022.10을 이용했는데, 본인이 사용할 상황에 따라 바꿔주면 된다!!
⚙️ Jupyter Notebook 설치
- sudo passwd **** (암호는 임의로 설정)
- su - 👉🏻 암호 입력
- wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh
(💡 사용할 아나콘다 버전에 따라 다른 링크 사용) - bash Anaconda3-2022.10-Linux-x86_64.sh (💡 사용할 아나콘다 버전에 따라 다르게 호출)
- source ~/.bashrc
- conda activate
- jupyter notebook --generate -config
- vi /root/.jupyter/jupyter_notebook_config.py
- a를 눌러서 편집모드로 변경
- 아래 명령어를 아무데나 입력
c = get_config()
c.NotebookApp.ip='*'
c.NotebookApp.open_browser=False
c.NotebookApp.port = 8888
- 이후 jupyter notebook --no-browser --port=8888 --allow-root
👉🏻 인스턴스의 외부 ip주소:8888을 브라우저 주소창에 입력하면 jupyter 접근 가능
👉🏻 토큰은 SSH 창에서 확인 가능
⚙️ GPU & 라이브러리의 특정 버전 설치
💡 GPU를 사용할 예정이고, 자꾸 나를 괴롭히는 pytorch, cuda 관련된 친구들의 버전을 지정해서 설치해줬다..
(SSH에서 설치하지 않고 jupyter 내부에서 설치하게 되면 붕 떠서 처음부터 해야할 수도 있다고 함!)
- ctr+c로 잠시 주피터 세션은 죽여주기
- curl https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-installation/main/linux/install_gpu_driver.py --output install_gpu_driver.py
- sudo python3 install_gpu_driver.py
- sudo apt-get install nvidia-driver-515
- conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -c nvidia
📌 데이터셋을 이용해 coqui 모델 훈련시키기
📁 디렉터리 설정
💡 처음부터 만들고 시작할 필요는 없고, 코드 실행시키면서 한번씩 체크해서 수정해주면 된다!!
💡 coqui github 문서 에서 v0.11.0 👉🏻 Assets 👉🏻 Source code (zip) 다운로드 및 Root 폴더에 업로드 필수
💡 LJSpeech를 사용했기 때문에, LJSpeech 데이터셋 다운 & Root 폴더에 업로드 필수
📁 Root
|-------- 📁 TTS-0.11.1
| |-------- 📁 recipes
| | |-------- 📁 ljspeech
| ... | |-------- 📁 vits_tts
| ... | |-------- 📄 train_vits.py
| ...
|
|-------- 📁 LJSpeech-1.1
... |-------- 📄 metadata.csv
|-------- 📁 wavs
|-------- 🔈 LJ001-0001.wav
|-------- 🔈 LJ001-0002.wav
|
...
⚙️ Root 폴더에 ipynb 파일 생성 & 기본 세팅
# 최초 1회 수행
!unzip TTS-0.11.1.zip
%cd /root/TTS-0.11.1
# 최초 1회 수행
!pip install -e .
# 최초 1회 수행
!pip install tensorboard
%cd /root/LJSpeech-1.1
# 최초 1회 수행
!unzip LJSpeech_mini100.zip
⚙️ 훈련 진행하기
💡 사전 작업들
- 데이터셋 정리가 잘 되었는지 체크 (경로 관련 코드들은 본인 환경에 맞게 잘 수정해주세요)
- train_vits.py 코드 수정이 필요
# 경로 문제가 발생하면 에러코드 읽고 수정해주세요!!
dataset_config = BaseDatasetConfig(
formatter="ljspeech", meta_file_train="metadata.csv", path="/root/LJSpeech-1.1/"
)
# 참고.. train_vits.py에서 기본 epoch로 지정된 1000회를 바꿔줄 수 있습니다!!
🛠️ 훈련 시작
# 훈련시키기!
%run recipes/ljspeech/vits_tts/train_vits.py
🛠️ 훈련된 모델로 TTS 음성 생성하기
# 결과 폴더 이름은 체크해서 수정해주세요!!
%cd /root/TTS-0.11.1/recipes/ljspeech/vits_tts/vits_ljspeech-February-23-2024_07+02AM-0000000
!tts --text "Text for TTS" --config_path config.json --model_path best_model.pth
"Text for TTS"는 본인이 원하는 텍스트로 수정이 가능하며,
모델이 완전 처음부터 학습을 진행하기 때문에,
웬만한 epoch로는 만족스러운 결과가 나오지 않을 확률이 높다!!
(테스트용으로 epoch을 10으로 세팅하고 돌렸는데.. output이 완전 기계음만 나왔다는..)