GPT-SoVITS/only_tts/README.md
2025-09-05 08:10:39 +09:00

189 lines
4.7 KiB
Markdown

# GPT-SoVITS only_tts
한국어/영어 전용 GPT-SoVITS TTS 라이브러리입니다. API 서버 없이 단순한 함수 호출만으로 TTS 기능을 사용할 수 있습니다.
## 지원 기능
- **언어**: 한국어, 영어
- **모델**: V4, V2Pro, V2ProPlus
- **출력**: 고품질 음성 합성
- **의존성**: 최소한의 패키지 (20개)
## 설치
### 1. 의존성 설치
```bash
pip install -r requirements.txt
```
### 2. 모델 다운로드
```bash
# 모든 모델 다운로드
python download_models.py --all
# V4 모델만 다운로드
python download_models.py --v4
# V2Pro 모델만 다운로드
python download_models.py --v2pro
# 기본 모델만 다운로드 (HuBERT, RoBERTa)
python download_models.py --base-models
# 사용 가능한 모델 정보 확인
python download_models.py --info
```
## 사용법
### 기본 사용 예시
```python
from tts_simple import TTSEngine
# TTS 엔진 초기화
tts = TTSEngine(model="v4", device="cuda")
# 음성 생성
audio_data = tts.generate_speech(
text="안녕하세요, 테스트입니다.",
text_lang="ko",
prompt_text="안녕",
prompt_lang="ko",
ref_audio_path="reference.wav"
)
# 파일로 저장
tts.save_audio(audio_data, "output.wav")
```
### 영어 예시
```python
# 영어 TTS
audio_data = tts.generate_speech(
text="Hello, this is a test.",
text_lang="en",
prompt_text="Hello",
prompt_lang="en",
ref_audio_path="reference_en.wav"
)
tts.save_audio(audio_data, "output_en.wav")
```
### 고급 설정
```python
# 더 많은 옵션 사용
audio_data = tts.generate_speech(
text="긴 텍스트를 여러 부분으로 나누어 처리합니다.",
text_lang="ko",
prompt_text="긴 텍스트",
prompt_lang="ko",
ref_audio_path="reference.wav",
top_k=5,
top_p=1.0,
temperature=1.0,
speed_factor=1.0
)
```
## API 참조
### TTSEngine
#### `__init__(model, device, is_half)`
- `model`: 사용할 모델 ("v4", "v2pro", "v2proplus")
- `device`: 디바이스 ("cuda", "cpu")
- `is_half`: 반정밀도 사용 여부 (기본값: False)
#### `generate_speech(text, text_lang, prompt_text, prompt_lang, ref_audio_path, **kwargs)`
음성을 생성합니다.
**필수 파라미터:**
- `text`: 합성할 텍스트
- `text_lang`: 텍스트 언어 ("ko", "en")
- `prompt_text`: 참조 텍스트
- `prompt_lang`: 참조 텍스트 언어
- `ref_audio_path`: 참조 오디오 파일 경로
**선택적 파라미터:**
- `top_k`: Top-K 샘플링 (기본값: 5)
- `top_p`: Top-P 샘플링 (기본값: 1.0)
- `temperature`: 샘플링 온도 (기본값: 1.0)
- `speed_factor`: 속도 조절 (기본값: 1.0)
#### `save_audio(audio_data, output_path)`
생성된 오디오를 파일로 저장합니다.
## 모델 정보
### 기본 모델 (필수)
- **chinese-hubert-base**: 다국어 음성 특징 추출 모델
- **chinese-roberta-wwm-ext-large**: 다국어 텍스트 특징 추출 모델
### V4 모델
- **s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt**: V4 GPT 모델
- **s2Gv4.pth**: V4 SoVITS 모델
- **vocoder.pth**: V4 보코더 모델
### V2Pro 모델
- **s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt**: V2Pro GPT 모델
- **s2Gv2Pro.pth**: V2Pro SoVITS 모델
- **s2Gv2ProPlus.pth**: V2ProPlus SoVITS 모델
- **pretrained_eres2netv2w24s4ep4.ckpt**: 화자 검증 모델
## 디렉토리 구조
```
only_tts/
├── README.md
├── requirements.txt
├── download_models.py
├── tts_simple.py
├── config_examples.py
├── configs/
├── pretrained_models/ # 다운로드된 모델들
│ ├── chinese-hubert-base/
│ ├── chinese-roberta-wwm-ext-large/
│ ├── gsv-v4-pretrained/
│ └── v2Pro/
└── src/
├── TTS_infer_pack/
├── text/
├── module/
├── feature_extractor/
└── AR/
```
## 주의사항
1. **모델 이름**: "chinese"가 포함된 모델명이지만, 실제로는 다국어 모델입니다.
2. **참조 오디오**: 고품질의 3-10초 길이 참조 오디오를 사용하세요.
3. **GPU 메모리**: CUDA 사용 시 충분한 GPU 메모리가 필요합니다.
4. **언어 혼합**: 한 문장에 한국어와 영어를 혼합해서 사용할 수 있습니다.
## 문제 해결
### 일반적인 오류
1. **모델을 찾을 수 없음**: `python download_models.py --all` 실행
2. **CUDA 메모리 부족**: `device="cpu"` 사용 또는 `is_half=True` 설정
3. **참조 오디오 오류**: 3-10초 길이의 깔끔한 오디오 사용
### 성능 최적화
- GPU 사용: `device="cuda"`
- 반정밀도: `is_half=True` (GPU에서만)
- 배치 처리: 긴 텍스트는 자동으로 분할 처리됨
## 라이선스
GPT-SoVITS 프로젝트의 라이선스를 따릅니다.