본문 바로가기

Python/개발

SCE-TTS 활용기(2) - 데이터 학습

원작자 게시글:https://sce-tts.github.io

 

SCE-TTS: 내 목소리로 TTS 만들기

문서를 불러오고 있습니다...

sce-tts.github.io

데이터를 구했으니 이제 학습을 할 차례다. 그냥 ipynb 파일 받아서 순서대로 실행하면 되겠지? 

 

 

1. 파이썬은 라이브러리끼리 버전에 따라 호환이 안되는 경우가 더럽게 많다. 

2. 이 오픈소스는 4년 전에 제작되었다.

3. pip install은 라이브러리의 최신 버전을 설치해준다.

== Tons of error

 

내가 제작한 수정 버전이다. 뇌내의 방어기재가 오류 해결 과정을 삭제해버려 질문에 대답하는 것은 불가능합니다. 

train_glowtts_v2_ggaebap.ipynb
10.67MB
train_hifigan_v2_ggaebap.ipynb
8.60MB
infer-v2_ggaebap.ipynb
0.39MB

 

기존 코드에서의 변경점은 다음과 같다.

 

train-glowtts-v2 변경사항

 

3. 필수 라이브러리 및 함수 불러오기: 파이썬 버전과 필요 라이브러리 버전 및 설치 순서 정리(이거 진짜 힘들었습니다...)

!sudo apt-get update -y
!sudo apt-get install python3.8 -y
!sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
!sudo apt-get install python3.8-distutils
!sudo apt install python3.8-dev
!python3 --version #버전 체크
!sudo apt install python3-pip
import sys
from pathlib import Path

%cd /content
!git clone --depth 1 https://github.com/sce-tts/TTS.git -b sce-tts
%cd /content/TTS

#얘가 맨위여야 되는거아니야?
!pip install --upgrade pip

!pip install scikit-learn
!pip install audioread pooch
!pip install numba==0.52

!pip install scipy==1.5 resampy pandas==1.3.4 matplotlib numpy==1.18.5
!pip uninstall resampy
!pip install resampy==0.3.1
!pip install pydantic==1.10.10
!pip install -r requirements.txt
!pip install tensorboard
!pip install unidecode
!pip install blinker

#왠진 모르겠지만 나중에 설치해줘야 됨
!pip install bertopic

!python setup.py develop

#중간에 멈추면 Y엔터 해주세요

 

6. TensorBoard 실행: 필요 라이브러리 설치

!pip install zipp

 

7. Glow-TTS 학습 진행: UTF-8 인코딩 오류 해결 코드?(제가 쓴 코든데 왜 만든 건지 기억이 안나네요...)

# 파일 경로 지정
file_path = '/content/TTS/TTS/bin/train_glow_tts.py'
# 파일 열기 및 읽기
with open(file_path, 'r', encoding='utf-8') as f:
    lines = f.readlines()
# 파일 수정
modified_lines = []
for i, line in enumerate(lines):
    if 'test_sentences_file' in line:
        modified_lines.append(line.replace('with open(config.test_sentences_file, "r") as f:', 'with open(config.test_sentences_file, "r", encoding="utf-8") as f:', 1))
    elif 'test_sentences =' in line:
        modified_lines.append(line.replace('test_sentences = [s.strip() for s in f.readlines()]', 'test_sentences = [s.strip() for s in f.readlines()]', 1))
    else:
        modified_lines.append(line)
# 수정된 내용으로 파일 저장
with open(file_path, 'w', encoding='utf-8') as f:
    f.writelines(modified_lines)

 

train-hifigan-v2 변경사항

 

3. 필수 라이브러리 및 함수 불러오기: glowtts와 동일하게 파이썬과 라이브러리 버전 맞추고 설치합니다.(코드 생략)

6. TensorBoard 실행: 필요 라이브러리 설치: glowtts와 동일합니다.(코드 생략)

 

infer-v2 변경사항

 

2. 필수 라이브러리 및 함수 불러오기: 일부 코드 주석 처리와 필요 라이브러리 버전 및 설치 순서 정리 

%cd /content
!git clone --depth 1 https://github.com/sce-tts/TTS.git -b sce-tts
!git clone --depth 1 https://github.com/sce-tts/g2pK.git
%cd /content/TTS
#!pip install -q --no-cache-dir -e .
%cd /content/g2pK
!pip install konlpy jamo nltk python-mecab-ko
#!pip install -q --no-cache-dir "konlpy" "jamo" "nltk" "python-mecab-ko"
#!pip install -q --no-cache-dir -e .
#밑에서 없다는애들 설치중
!pip install pysbd
!pip install coqpit
!pip install unidecode
!pip install pypinyin
!pip install librosa==0.8.1

 

 

이걸 다 완료하고 축구 풀타임동안 녹음한 부족한 음성데이터(약 200개)로 적당한 epoch(기억안남)를 학습시킨 결과 한국어를 30분 정도 공부한 트랜스포머 디셉티콘의 목소리를 얻을 수 있었다고 한다.

 

결국 원작자의 사전학습 데이터를 사용하기로 타협하고 서버를 구축하는데...(3편에 계속)