
슬강 | 발표 PDF가 나레이션 강의 영상이 됩니다
슬강 | 발표 PDF가 나레이션 강의 영상이 됩니다
발표 자료는 완성했는데 영상으로 만들려면 얘기가 달라집니다. 마이크 앞에서
슬라이드를 넘기며 말하고, 버벅이면 다시 찍고, 자막은 따로 달고, 챕터
타임스탬프는 영상을 몇 번씩 돌려보며 손으로 적어야 합니다. 슬라이드
20장짜리 강의 하나에 녹화·편집으로 반나절이 갑니다. 슬강은 PDF 한 장을
넣으면 이 과정을 건너뛰고, 슬라이드별 나레이션·자막·챕터·SRT까지 한
번에 뽑아냅니다.
파이프라인
PDF ──extract.py──▶ 슬라이드 PNG + notes.json(초안)
│
(에이전트가 나레이션 대본을 채운다)
▼
notes.json(완성) ──narrate.py──▶ 슬라이드별 mp3 + 타이밍
│
▼
──build.py──▶ lecture.mp4 + chapters.txt + lecture.srt
목소리는 직접 녹음하지 않고 TTS로 대체하되, 나레이션 대본은 에이전트가
슬라이드 내용을 읽고 강의하듯 자연스럽게 씁니다(또는 이미 있는 발표자
노트를 그대로 씁니다).
실제 명령
uv run scripts/extract.py --pdf slides.pdf --out out/
# → out/notes.json 의 narration 필드를 채운다 (에이전트가 직접, 또는 발표자 노트 사용)
uv run scripts/narrate.py --notes out/notes.json --out out/
uv run scripts/build.py --meta out/narration_meta.json --assets out/ \
--out out/lecture.mp4 --crossfade 0.4
세 줄이 끝입니다. 5슬라이드 기준 실측 약 73초(추출 0.6초 + 음성합성
5초 + 영상 조립 67초, Apple Silicon 기준)가 걸렸습니다. 완성된lecture.mp4는 1920x1080, h264/yuv420p, AAC 스테레오이고 라우드니스는
-16 LUFS로 맞춰져 나옵니다(loudnorm 2-pass 재측정 오차 0.01dB).
포함 구성
| 구성 | 내용 |
|---|---|
scripts/extract.py |
PDF → 슬라이드 PNG(1920x1080, 레터박스) + 페이지 텍스트 + notes.json 초안 |
scripts/narrate.py |
notes.json → edge-tts 나레이션 mp3 + 문장 단위 타이밍(narration_meta.json) |
scripts/build.py |
슬라이드+나레이션 → mp4(자막/배지/크로스페이드 옵션) + chapters.txt + lecture.srt |
guides/notes-format.md |
notes.json 스키마와 나레이션 작성 요령 |
guides/tts-and-licensing.md |
edge-tts 상업 이용 리스크를 숨기지 않고 정리 |
사용 예시
1. 사내 온보딩 자료: 신입 교육용 PPT를 PDF로 내보내 넣으면, 발표자
노트에 적어둔 스크립트를 그대로 나레이션으로 써서 자체 시청용 영상을
만듭니다.
2. 유튜브 강의 채널: "엑셀 피벗 테이블 기초"처럼 주제형 강의 PDF를
넣고, 자막을 구운 상태로 업로드합니다. chapters.txt를 설명란에
붙여넣으면 유튜브가 자동으로 챕터 탐색 바를 만들어 줍니다.
3. 제품 소개 영상: 세일즈 덱을 크로스페이드 전환으로 부드럽게 이어
붙여, 랜딩페이지에 올릴 짧은 소개 영상으로 씁니다.
필요한 준비물
uv와 Homebrewffmpeg. 둘 다 무료이고 설치만 하면 됩니다.- 인터넷 연결: 나레이션 음성 합성(edge-tts)이 온라인 호출입니다. API
키나 가입은 필요 없습니다. - 슬라이드마다 나레이션 대본을 직접 쓰거나(에이전트가 대신 써 줄 수
있습니다), 이미 있는 발표자 노트를 준비합니다. - edge-tts는 마이크로소프트의 공식 API가 아니라 브라우저 기능을 우회
호출하는 비공식 오픈소스 클라이언트입니다. 무료로 쓸 수 있지만, 광고
수익이 붙는 상업 영상이라면guides/tts-and-licensing.md에 적어둔
대안(Azure Speech 정식 구독 등)을 검토하길 권합니다. - 실존 인물을 사칭하거나 실존 인물의 발언으로 오인시키는 딥페이크
목적으로는 쓰지 않아야 합니다. 이 스킬은 그런 용도로 설계되지
않았습니다.
추천 대상
- 슬라이드 자료가 이미 있고 발표자 노트나 초안 스크립트도 있는 경우
- 챕터·자막까지 챙긴 유튜브 강의를 빠르게 여러 편 찍어내야 하는 경우
- 사람 목소리가 아니어도(TTS 티가 나도) 괜찮은 정보 전달용 콘텐츠
비추천 대상
- 배경음악, 효과음, 화면 전환 애니메이션처럼 화려한 연출이 필요한 경우
(슬라이드+나레이션 이상은 하지 않습니다) - 실제 사람 목소리의 톤과 억양이 꼭 필요한 브랜드 영상
- 한 슬라이드에서 여러 화자가 번갈아 말하는 형식(슬라이드당 보이스
하나입니다)
FAQ
Q1. PPTX를 바로 넣어도 되나요?
아니요, PDF로 내보낸 뒤 넣습니다. 파워포인트·키노트·구글 슬라이드 모두
"다른 이름으로 저장 → PDF" 기능이 있어 한 단계만 거치면 됩니다.
Q2. 목소리를 한국어 말고 다른 언어로 바꿀 수 있나요?
edge-tts가 지원하는 언어라면 됩니다. notes.json의 voice 값을
해당 언어 보이스로 바꾸고, 나레이션 대본도 그 언어로 쓰면 됩니다.
Q3. 자막 글자가 너무 크거나 작아요.build.py --caption-size로 글자 크기를 조정합니다. 자막을 끄고lecture.srt만 별도로 쓰고 싶다면 --no-captions를 씁니다.
Q4. 슬라이드마다 다른 목소리를 쓸 수 있나요?
됩니다. notes.json의 슬라이드별 항목에 voice를 따로 지정하면 그
슬라이드만 다른 보이스로 나옵니다(질문 슬라이드만 다른 톤으로 하는 식).
Q5. 100장이 넘는 긴 자료도 되나요?
동작은 하지만 슬라이드 파일명이 두 자리(slide_01~`slide_99)라 100장부터는 정렬이 꼬입니다. extract.py`가 경고를 띄우니, 그보다 긴
자료는 여러 편으로 나누길 권합니다.
구매 안내
다운로드 후 package/ 폴더를 그대로 풀어 쓰면 됩니다. SKILL.md가
전체 절차를 안내하고, scripts/의 세 스크립트는 각각 uv run으로 바로
실행됩니다. 별도 설치나 빌드 과정은 없습니다.
예시 슬라이드의 사진은 NASA 공개 사진(퍼블릭 도메인)이고, 슬라이드와 나레이션 원고는 예시로 직접 작성했습니다.
외부 API
Microsoft Edge TTS


