Show GN: 대본(YAML) 한 장이면 나레이션·자막·BGM 입힌 영상이 나오는 도구를 만들었습니다
(github.com/kmg28801)영상 편집이 처음이라 한 편에 반나절씩 걸려서, 편집 과정을 코드로 자동화했습니다.
입력은 장면별로 narration / visual / callout을 적은 YAML 한 장이 전부입니다.
python3 src/pipeline.py scenario.yaml config.yaml 한 줄이면 완성된 mp4가 나옵니다.
파이프라인 (Python):
- 대본 → TTS 나레이션 (say / Supertone / ElevenLabs 교체식, 결과 캐싱)
- 나레이션 길이에 맞춰 자막 타이밍 자동 배분, 내레이션=자막 동일
- 자막·콜아웃을 PNG로 렌더해 overlay (이 ffmpeg 빌드에 libass/drawtext가 없어 택한 방식 — 한글 외곽선·위치 픽셀 제어가 오히려 쉬움)
- 세로로 찍은 폰 영상은 배경 블러 패딩으로 화면비 자동 보정 (config 한 줄로 16:9 ↔ 9:16 쇼츠)
- 나레이션 concat + BGM 믹스 (영상 끝에 맞춰 BGM 자동 컷 + 페이드 → '검은 꼬리' 방지)
- 렌더 끝에 길이 드리프트·마지막 프레임 밝기 자동 검사
faceless 자막 영상 전용이고, 실제로 이 도구로 제 유튜브 채널 영상을 뽑고 있습니다.
한계: 자막이 단어 단위 싱크가 아니라 장면 단위(글자수 비례 배분)입니다.
그리고 이 환경 ffmpeg에 libass가 없다는 전제로 만들어서, PNG overlay 방식이 기본입니다.
완벽한 편집기 대체가 아니라, '대본 → 초벌 영상'을 사실상 0초로 만들어 반복 제작 비용을 없애는 게 목적입니다.
스모크 테스트(키 없이 macOS say 음성으로 전체 파이프라인 확인):
python3 -m pip install -r requirements.txt
python3 demo/make_placeholders.py
python3 src/pipeline.py demo/scenario.yaml demo/config.yaml
MIT. 피드백 환영합니다.