docs: 6개 한국어 TTS 리포 심층분석 + 다중엔진 통합 계획
This commit is contained in:
41
docs/ENGINES.md
Normal file
41
docs/ENGINES.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 한국어 TTS 엔진 분석 및 통합 계획
|
||||
|
||||
6개 리포를 심층 분석하여 한국어 TTS를 스튜디오에 다중 엔진으로 통합하기 위한 기록.
|
||||
목표: 무제한·무료 자가호스팅, 가능하면 GPU(Blackwell sm_120, torch cu128) 사용.
|
||||
|
||||
## 분석 결과 (feasibility matrix)
|
||||
|
||||
| # | 리포 | 아키텍처 | 한국어 | 사전학습 모델 | 라이선스 | 런타임 | GPU(Blackwell) | 판정 |
|
||||
|---|------|----------|--------|----------------|----------|--------|----------------|------|
|
||||
| 1 | FunAudioLLM/CosyVoice (=QwenAudio/CosyVoice) | LLM+flow+HiFiGAN | 예(zero-shot) | CosyVoice2-0.5B, ~1–2GB, HF/ModelScope, 비게이트 | Apache-2.0 (무제한/상업 OK) | PyTorch (torch 2.3.1 pin) | cu128로 올리면 가능 | 통합(주의) |
|
||||
| 2 | TensorSpeech/TensorFlowTTS | Tacotron2/FS2 + MB-MelGAN | 예(KSS) | tts-*-kss-ko, HF, 비게이트 | 코드 Apache-2.0 / **가중치 CC BY-NC-SA(비상업)** | TensorFlow2 | ❌ CPU만 | 옵션(주의) |
|
||||
| 3 | hccho2/Tacotron2-Wavenet-Korean-TTS | Tacotron2+WaveNet | 예 | ❌ 없음(직접 학습) | MIT | TF1 | ❌ | 제외 |
|
||||
| 4 | ttop32/coqui_tts_korea | GlowTTS + MB-MelGAN | 예(KSS) | GlowTTS+MBMelGAN ckpt, Google Drive, 비게이트 | **MPL-2.0(무제한/상업 OK)** | PyTorch (coqui-tts idiap fork) | ✅ 동작 확인 | **1순위 통합** |
|
||||
| 5 | esoyeon/KoreanTTS | Tacotron/Tacotron2 | 예 | ❌ 없음(직접 학습) | MIT | TF1 | ❌ | 제외 |
|
||||
| 6 | AzamRabiee/Emotional-TTS | Tacotron(emotional) | 의도상 예 | ❌ 없음, 코드도 없음 | **없음(권리 유보)** | TF1 | ❌ | 제외 |
|
||||
|
||||
핵심 결론
|
||||
- 실제로 최신 스택에서 돌릴 수 있는 "무료·무제한·한국어" 엔진: **Coqui GlowTTS-KSS(4번)**, 그리고 **CosyVoice2(1번, Apache)**.
|
||||
- 3·5·6번은 사전학습 가중치가 없고 TF1 전용이라 최신 Python3.11/CUDA12.8/Blackwell에서 실행 불가 → 제외.
|
||||
- 2번은 비상업 라이선스 + CPU 전용 + 레거시 TF 사이드카 필요 → 개인 테스트용으로만 옵션.
|
||||
|
||||
## 통합 아키텍처
|
||||
|
||||
기존 스튜디오는 단일 MeloTTS 인프로세스였음. 문제: Coqui/CosyVoice는 각자 다른 torch/librosa/numpy 핀을 요구 → 한 venv에 섞으면 충돌(예: MeloTTS는 librosa==0.9.1, Coqui는 최신 요구).
|
||||
|
||||
해결: **단일 컨테이너 + 엔진별 격리 venv + 서브프로세스 호출**.
|
||||
- 메인 FastAPI(기본 venv, MeloTTS 인프로세스)가 `/api/engines`, `/api/tts?engine=...` 제공.
|
||||
- Coqui 등은 `/opt/<engine>-venv` 전용 venv의 합성 스크립트를 subprocess로 실행해 WAV 반환.
|
||||
- 배포 포트는 그대로 8788 유지.
|
||||
|
||||
엔진 레지스트리 인터페이스: `list_models()`, `synth(text, model, speed, pitch) -> wav bytes`.
|
||||
프론트엔드: 엔진 선택 → 모델(목소리) 선택 → 속도/피치.
|
||||
|
||||
## 진행 단계 (단계마다 Gitea 커밋/푸시)
|
||||
|
||||
- A. 백엔드를 엔진 레지스트리로 리팩터링(MeloTTS 유지, 동작 불변) + 프론트 엔진 선택 UI. ✅ 커밋
|
||||
- B. Coqui GlowTTS-KSS 엔진 추가(전용 venv + Google Drive 체크포인트 베이킹 + subprocess). 테스트 후 커밋.
|
||||
- C. CosyVoice2 한국어 엔진 추가(Apache, torch cu128 재빌드). 가능 시 커밋.
|
||||
- D. (옵션) TensorFlowTTS KSS CPU 엔진. 비상업 라이선스 명시.
|
||||
|
||||
무료·무제한 보장: 통합 대상은 Apache-2.0(CosyVoice) / MPL-2.0(Coqui)만 GPU 기본 경로로 사용. 비상업(CC BY-NC-SA)인 TF-TTS는 개인용 옵션으로만, UI에 라이선스 표기.
|
||||
Reference in New Issue
Block a user