GPT-SoVITS 실전 분석
Pre-training과 Fine-tuning이 실제 코드에서 어떻게 동작하는지
GPT-SoVITS는 1분 분량의 음성만으로 화자의 목소리를 복제할 수 있는 오픈소스 Few-shot TTS 시스템입니다. 2단계 파이프라인으로 구성됩니다.
Stage 1 — GPT (Text-to-Semantic): 텍스트와 참조 음성을 입력받아 Semantic Token(의미 토큰)을 생성합니다. 24-layer Transformer로, 자기회귀(autoregressive) 방식으로 토큰을 하나씩 예측합니다. 핵심은 CN-HuBERT(자가지도학습 SSL 모델)가 추출한 semantic token을 예측 타겟으로 사용하는 것입니다.
Stage 2 — SoVITS (Semantic-to-Audio): Semantic Token을 실제 오디오 파형으로 변환합니다. VITS 아키텍처 기반으로, VQ(Vector Quantization) 코드북 + Flow 모델 + HiFi-GAN 디코더로 구성됩니다.
Pre-training에서 학습되는 것들:
CN-HuBERT: 2,000~5,000시간 다화자 데이터로 음성의 의미 표현 학습 (SSL)
Chinese-RoBERTa: 텍스트의 BERT 피처 추출기 (별도 사전학습)
SoVITS VQ 코드북: 다화자 데이터에서 범용 음성 코드북 학습
GPT 모델: 다화자 데이터에서 텍스트→semantic token 매핑 학습
Fine-tuning에서 하는 것:
사용자가 1분 음성 + 텍스트 제공
데이터 전처리: 음소 추출, BERT/SSL/Semantic 토큰 추출
s1_train.py: GPT 모델을 20 에폭, lr=0.01로 미세조정
s2_train.py: SoVITS 모델을 ~100 에폭, lr=0.0001로 미세조정
v3에서는 CFM 모듈에 LoRA(rank=32)를 적용하여 효율적 미세조정
핵심 개념
Pre-training ① CN-HuBERT: 수천 시간 음성 데이터로 자가지도학습 → 음성의 semantic 표현 학습
Pre-training ② SoVITS VQ: 다화자 데이터로 범용 음성 코드북 학습 → semantic↔acoustic 매핑
Pre-training ③ GPT 모델: 다화자 데이터로 텍스트→semantic token autoregressive 생성 학습
Fine-tuning 데이터 준비: 1분 음성 → 음소(phoneme), BERT 피처, SSL 피처, semantic token 추출
Fine-tuning ① s1_train.py: GPT 모델을 대상 화자 데이터로 20 에폭 학습 (lr=0.01)
Fine-tuning ② s2_train.py: SoVITS 모델을 대상 화자 데이터로 ~100 에폭 학습 (lr=0.0001)
추론: 텍스트 → GPT가 semantic token 생성 → SoVITS가 대상 화자의 음성 파형으로 변환
장점
- ✓ 1분 데이터만으로 고품질 음성 복제
- ✓ 오픈소스 — 코드 분석과 커스터마이징 가능
- ✓ 2단계 파이프라인으로 각 단계 독립 최적화
- ✓ v3에서 LoRA 지원 → Fine-tuning 효율 향상
- ✓ Pre-training/Fine-tuning 개념을 실전으로 이해 가능
단점
- ✗ Pre-trained 모델 품질에 의존
- ✗ 중국어 중심 사전학습 → 다른 언어에서 성능 저하 가능
- ✗ GPU 필요 (Fine-tuning에 VRAM 6GB+)
- ✗ 음성 딥페이크 악용 위험