docs: README.md 추가
- 프로젝트 개요 및 기능 설명 - 기술 스택 및 구조 문서화 - 설치/실행 방법 안내 - API 엔드포인트 목록 - 대본 형식 가이드 - GPU 요구사항 명시 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
192
README.md
Normal file
192
README.md
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
# Drama Studio
|
||||||
|
|
||||||
|
AI 기반 라디오 드라마 제작 시스템
|
||||||
|
|
||||||
|
## 개요
|
||||||
|
|
||||||
|
Drama Studio는 Qwen3-TTS와 MusicGen을 활용하여 텍스트 대본으로부터 완성된 라디오 드라마를 자동 생성하는 시스템입니다.
|
||||||
|
|
||||||
|
## 기능
|
||||||
|
|
||||||
|
- **TTS 음성 합성**: Qwen3-TTS 1.7B 모델을 사용한 고품질 한국어/다국어 음성 생성
|
||||||
|
- **배경음악 생성**: MusicGen을 활용한 AI 배경음악 생성
|
||||||
|
- **효과음 검색**: Freesound API 연동으로 다양한 효과음 검색 및 사용
|
||||||
|
- **드라마 제작**: 대본 파싱 → 음성 생성 → 배경음악/효과음 믹싱 → 최종 오디오 출력
|
||||||
|
- **음성 관리**: 커스텀 음성 프로필 생성 및 관리
|
||||||
|
|
||||||
|
## 기술 스택
|
||||||
|
|
||||||
|
| 구성요소 | 기술 |
|
||||||
|
|---------|------|
|
||||||
|
| Frontend | Next.js 15 + React 19 + TypeScript + Tailwind CSS 4 |
|
||||||
|
| Backend | FastAPI + Python 3.11 + Pydantic v2 |
|
||||||
|
| TTS Engine | Qwen3-TTS 1.7B (GPU) |
|
||||||
|
| Music Gen | MusicGen-small (GPU) |
|
||||||
|
| Database | MongoDB 7.0 + Redis 7 |
|
||||||
|
| Container | Docker + Docker Compose |
|
||||||
|
|
||||||
|
## 프로젝트 구조
|
||||||
|
|
||||||
|
```
|
||||||
|
drama-studio/
|
||||||
|
├── audio-studio-api/ # FastAPI 백엔드 서버
|
||||||
|
│ ├── app/
|
||||||
|
│ │ ├── routers/ # API 엔드포인트
|
||||||
|
│ │ │ ├── drama.py # 드라마 프로젝트 관리
|
||||||
|
│ │ │ ├── tts.py # TTS 음성 합성
|
||||||
|
│ │ │ ├── music.py # 배경음악 생성
|
||||||
|
│ │ │ ├── sound_effects.py # 효과음 검색
|
||||||
|
│ │ │ ├── voices.py # 음성 프로필 관리
|
||||||
|
│ │ │ └── recordings.py # 녹음 파일 관리
|
||||||
|
│ │ └── services/ # 비즈니스 로직
|
||||||
|
│ │ ├── drama_orchestrator.py # 드라마 생성 오케스트레이터
|
||||||
|
│ │ ├── script_parser.py # 대본 파서
|
||||||
|
│ │ ├── audio_mixer.py # 오디오 믹싱
|
||||||
|
│ │ ├── tts_client.py # TTS 엔진 클라이언트
|
||||||
|
│ │ └── freesound_client.py # Freesound API 클라이언트
|
||||||
|
│ ├── Dockerfile
|
||||||
|
│ └── requirements.txt
|
||||||
|
│
|
||||||
|
├── audio-studio-ui/ # Next.js 프론트엔드
|
||||||
|
│ ├── src/app/
|
||||||
|
│ │ ├── page.tsx # 대시보드
|
||||||
|
│ │ ├── drama/ # 드라마 제작
|
||||||
|
│ │ ├── tts/ # TTS 테스트
|
||||||
|
│ │ ├── music/ # 배경음악 생성
|
||||||
|
│ │ ├── sound-effects/ # 효과음 검색
|
||||||
|
│ │ ├── voices/ # 음성 관리
|
||||||
|
│ │ └── recordings/ # 녹음 관리
|
||||||
|
│ ├── Dockerfile
|
||||||
|
│ └── package.json
|
||||||
|
│
|
||||||
|
├── audio-studio-tts/ # Qwen3-TTS 엔진 (GPU)
|
||||||
|
│ ├── app/
|
||||||
|
│ │ ├── main.py # FastAPI 서버
|
||||||
|
│ │ └── services/
|
||||||
|
│ │ └── qwen_tts.py # TTS 모델 서비스
|
||||||
|
│ ├── Dockerfile.gpu
|
||||||
|
│ └── requirements.txt
|
||||||
|
│
|
||||||
|
├── audio-studio-musicgen/ # MusicGen 서비스 (GPU)
|
||||||
|
│ ├── app/
|
||||||
|
│ │ ├── main.py # FastAPI 서버
|
||||||
|
│ │ └── services/
|
||||||
|
│ │ └── musicgen_service.py # MusicGen 모델 서비스
|
||||||
|
│ ├── Dockerfile.gpu
|
||||||
|
│ └── requirements.txt
|
||||||
|
│
|
||||||
|
├── docker-compose.yml # 운영 환경 (GPU 포함)
|
||||||
|
├── docker-compose.dev.yml # 개발 환경 (GPU 없이)
|
||||||
|
└── .env.example # 환경변수 템플릿
|
||||||
|
```
|
||||||
|
|
||||||
|
## 설치 및 실행
|
||||||
|
|
||||||
|
### 환경 설정
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 환경변수 설정
|
||||||
|
cp .env.example .env
|
||||||
|
# .env 파일을 편집하여 필요한 값 입력
|
||||||
|
```
|
||||||
|
|
||||||
|
### 개발 환경 (GPU 없음)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# API + UI + MongoDB + Redis만 실행
|
||||||
|
docker compose -f docker-compose.dev.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
- UI: http://localhost:3010
|
||||||
|
- API: http://localhost:8010
|
||||||
|
- API Docs: http://localhost:8010/docs
|
||||||
|
|
||||||
|
### 운영 환경 (GPU 필요)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 전체 서비스 실행 (TTS, MusicGen 포함)
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 프라이빗 레지스트리에서 Pull
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Docker 이미지 Pull
|
||||||
|
docker pull docker.yakenator.io/drama-studio/api:latest
|
||||||
|
docker pull docker.yakenator.io/drama-studio/ui:latest
|
||||||
|
docker pull docker.yakenator.io/drama-studio/tts:latest
|
||||||
|
docker pull docker.yakenator.io/drama-studio/musicgen:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## API 엔드포인트
|
||||||
|
|
||||||
|
### 드라마 프로젝트
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| GET | `/api/drama/projects` | 프로젝트 목록 조회 |
|
||||||
|
| POST | `/api/drama/projects` | 새 프로젝트 생성 |
|
||||||
|
| GET | `/api/drama/projects/{id}` | 프로젝트 상세 조회 |
|
||||||
|
| POST | `/api/drama/projects/{id}/generate` | 드라마 생성 시작 |
|
||||||
|
|
||||||
|
### TTS
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| POST | `/api/tts/synthesize` | 텍스트를 음성으로 변환 |
|
||||||
|
| GET | `/api/tts/voices` | 사용 가능한 음성 목록 |
|
||||||
|
|
||||||
|
### 배경음악
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| POST | `/api/music/generate` | 프롬프트로 배경음악 생성 |
|
||||||
|
|
||||||
|
### 효과음
|
||||||
|
|
||||||
|
| Method | Endpoint | 설명 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| GET | `/api/sound-effects/search` | Freesound에서 효과음 검색 |
|
||||||
|
|
||||||
|
## 대본 형식
|
||||||
|
|
||||||
|
드라마 대본은 다음 형식을 따릅니다:
|
||||||
|
|
||||||
|
```
|
||||||
|
[장면: 숲속, 아침]
|
||||||
|
[BGM: 잔잔한 피아노]
|
||||||
|
|
||||||
|
영희: (조용히) 여기가 그 장소야...
|
||||||
|
철수: 정말 아름답군.
|
||||||
|
|
||||||
|
[효과음: 새소리]
|
||||||
|
|
||||||
|
영희: (기쁘게) 들어봐, 새들이 노래하고 있어!
|
||||||
|
```
|
||||||
|
|
||||||
|
### 태그 설명
|
||||||
|
|
||||||
|
- `[장면: ...]` - 장면 설명 (메타데이터)
|
||||||
|
- `[BGM: ...]` - 배경음악 프롬프트
|
||||||
|
- `[효과음: ...]` - 효과음 검색 키워드
|
||||||
|
- `캐릭터명: (감정) 대사` - 대사 및 감정 표현
|
||||||
|
|
||||||
|
## GPU 요구사항
|
||||||
|
|
||||||
|
| 서비스 | 최소 VRAM | 권장 VRAM |
|
||||||
|
|--------|----------|----------|
|
||||||
|
| Qwen3-TTS 1.7B | 8GB | 16GB |
|
||||||
|
| MusicGen-small | 4GB | 8GB |
|
||||||
|
| **합계** | **12GB** | **24GB** |
|
||||||
|
|
||||||
|
## 개발 가이드
|
||||||
|
|
||||||
|
자세한 개발 가이드는 `.claude/skills/` 디렉토리를 참조하세요:
|
||||||
|
|
||||||
|
- [deployment-standards.md](.claude/skills/deployment-standards.md) - Docker 배포 규칙
|
||||||
|
- [api-design-standards.md](.claude/skills/api-design-standards.md) - API 설계 표준
|
||||||
|
- [frontend-component-patterns.md](.claude/skills/frontend-component-patterns.md) - React 컴포넌트 패턴
|
||||||
|
|
||||||
|
## 라이선스
|
||||||
|
|
||||||
|
Private - Yakenator
|
||||||
Reference in New Issue
Block a user