diff --git a/docs/ENGINES.md b/docs/ENGINES.md index b9f6b40..5cdd251 100644 --- a/docs/ENGINES.md +++ b/docs/ENGINES.md @@ -39,3 +39,22 @@ - D. (옵션) TensorFlowTTS KSS CPU 엔진. 비상업 라이선스 명시. 무료·무제한 보장: 통합 대상은 Apache-2.0(CosyVoice) / MPL-2.0(Coqui)만 GPU 기본 경로로 사용. 비상업(CC BY-NC-SA)인 TF-TTS는 개인용 옵션으로만, UI에 라이선스 표기. + +## 진행 로그 / 실측 결과 + +### Coqui GlowTTS-KSS (repo #4) — 통합 불가로 확정 +- 라이브러리(coqui-tts idiap fork)는 torch 2.11+cu128에서 정상 동작(Synthesizer import OK, torchcodec 필요). +- 그러나 **사전학습 체크포인트 구글드라이브 폴더 4개가 전부 삭제(404)**: GlowTTS/MB-MelGAN/HalfLife 2종 모두. 가중치가 없어 직접 학습(수일) 외 방법이 없어 제외. + +### CosyVoice (repo #1) — GPU 실측 성공 ✅ (채택) +- 모델: `iic/CosyVoice-300M-SFT` (ModelScope, ~5.4GB), Apache-2.0. +- 프리셋 화자에 `韩语女`(한국어) 포함 → 참조음성 없이 `inference_sft(text, '韩语女')` 로 한국어 합성. +- 실측(RTX 5050, torch 2.11+cu128): 로드 15.3s, 합성 3.2s(4.8s 음성, RTF 0.66), device=cuda. +- 의존성 조정(핵심): + - torch/torchaudio를 2.11.0+cu128로 고정(원 requirements의 2.3.1/cu121 제거). + - deepspeed / tensorrt / onnxruntime-gpu 제거(추론 불필요), onnxruntime(CPU)로 대체. + - pyworld 제거(학습 파이프라인에서만 사용). numpy 1.26과 빌드 비호환. + - openai-whisper는 CosyVoice 토크나이저(`whisper.tokenizer.get_tokenizer`)에 필요 → `--no-deps`로 설치(토치 덮어쓰기 방지) + tiktoken/more-itertools. + - `cosyvoice/cli/frontend.py`, `cosyvoice/dataset/processor.py`의 `import whisper`/`import pyworld`를 optional 처리. + - WAV 저장은 torchaudio(2.11 torchcodec 경로 깨짐) 대신 soundfile 사용. +- 통합 방식: 전용 venv(`/opt/cosyvoice`, base torch 공유) + subprocess 호출. 모델은 이미지에 베이킹(또는 호스트 볼륨 마운트).