🤖 AI 숏츠 비디오 자동 생성기: 2025년 6월 3일 작업 요약
✅ 완료된 작업
-
스크립트 생성 (script_generator.py)
- OpenAI API를 연결하여 사용자가 입력한 5가지 옵션을 처리:
- 주제: 예: "미래 도시의 하루"
- 핵심 내용: 예: "AI와 로봇이 공존하는 활기찬 도시 풍경"
- 장면 수: 예: 3개 장면
- 캡션 언어: 예: 한국어
- 비디오 스타일 가이드: videostyle/groovy_vlog_style.txt
- script_generator.py에서 OpenAI API를 호출하여 각 장면에 대해 image_prompt (영어, 이미지 생성용)와 caption (한국어, 내레이션 및 자막용)을 생성.
- 출력: JSON 형식, 각 장면은 image_prompt와 caption 키 포함.
-
TTS 파일 생성 (text_to_speech.py)
- 생성된 caption을 text_to_speech.py로 전달.
- ElevenLabs API를 사용해 각 caption에 해당하는 TTS 오디오 파일 생성.
- 오디오 파일은 assets/generated_temp/ 폴더에 저장.
- 오디오 길이(초)를 반환하여 자막 동기화에 활용 가능.
-
자막 생성 (subtitle_handler.py)
- subtitle_handler.py를 통해 caption과 TTS 오디오 길이를 기반으로 자막 클립(TextClip) 생성.
- 자막 스타일은 configs/의 설정 파일(예: default_style_config.json) 또는 videostyle/groovy_vlog_style.txt 참조.
- 테스트 완료: 자막 클립 생성 성공, 하지만 실제 비디오에 적용 미완료.
- 미적용 이유: 비디오 생성을 위한 video_processor.py 미구현.
📊 현재 상태
- 완료된 모듈:
- script_generator.py: OpenAI API로 스크립트 및 캡션 생성.
- text_to_speech.py: ElevenLabs API로 TTS 오디오 생성.
- subtitle_handler.py: 자막 클립 생성 테스트 완료.
- 미완성 모듈:
- video_processor.py: 비디오 생성 및 편집 로직.
- audio_processor.py: 배경음악 및 효과음 통합.
- utils.py: 공용 유틸리티 함수.
- main.py: 전체 워크플로우 조율.
🚀 다음 단계
- Stable Diffusion으로 이미지 생성:
- script_generator.py의 image_prompt를 사용해 각 장면의 이미지를 생성.
- 로컬에서 Stable Diffusion 모델 실행 (models/stable_diffusion/).
- 생성된 이미지를 assets/generated_temp/에 저장.
- 비디오 편집 자동화 (video_processor.py):
- MoviePy와 OpenCV로 이미지, TTS, 자막 클립 조합.
- videostyle/groovy_vlog_style.txt 스타일 적용 (점프컷, 와이프 전환, 손글씨 폰트 효과).
- 최종 비디오를 output/ 폴더에 렌더링.
- 오디오 통합 (audio_processor.py):
- Pydub과 Librosa로 TTS와 배경음악 혼합.
- noisereduce로 오디오 품질 개선.
- 메인 스크립트 (main.py):
- 사용자 입력(주제, 내용, 장면 수, 캡션 언어, 스타일 가이드)을 받아 워크플로우 조율.
- 모든 모듈 통합.
📝 코드 예시
아래는 main.py의 스케치로, 전체 워크플로우를 조율하는 예시입니다.
import argparse
from core.script_generator import ScriptGenerator
from core.text_to_speech import generate_audio_elevenlabs
from core.subtitle_handler import create_subtitle_clips
def main():
parser = argparse.ArgumentParser(description="AI 숏츠 비디오 자동 생성기")
parser.add_argument("--config", required=True, help="설정 파일 경로")
parser.add_argument("--style-guide", required=True, help="비디오 스타일 가이드 경로")
parser.add_argument("--topic", required=True, help="비디오 주제")
parser.add_argument("--content", required=True, help="핵심 내용")
parser.add_argument("--num-scenes", type=int, default=3, help="생성할 장면 수")
parser.add_argument("--caption-language", default="Korean", help="캡션 언어")
args = parser.parse_args()
# 스크립트 생성
generator = ScriptGenerator()
scenes = generator.generate_scenes(args.topic, args.content, args.num_scenes, args.caption_language, args.style_guide)
# TTS 및 자막 생성
for scene in scenes:
audio_path, duration = generate_audio_elevenlabs(scene["caption"], f"assets/generated_temp/scene_{id}.wav", voice_id="YOUR_VOICE_ID")
scene["audio_duration"] = duration
create_subtitle_clips([scene], subtitle_style_params={})
'A_V' 카테고리의 다른 글
| AI 숏츠 비디오 자동 생성기: 2025년 6월 8일 전체 요약 (1) | 2025.06.08 |
|---|---|
| ElevenLabs API (TTS) 테스트 ! AI 숏츠 프로젝트 일일 요약 (3) (0) | 2025.05.31 |
| 숏츠 영상 제작 어플리케이션 계획 (2) (3) | 2025.05.29 |
| AI 숏츠 영상 제작 어플리케이션 계획 (0) | 2025.05.29 |