오디오 설교를 유튜브 영상으로 자동 변환하기
Python과 AI를 활용한 실제 목회 자동화 프로젝트
📋 프로젝트 개요
목회 현장의 니즈
- • PDF 설교 원고를 음성으로 녹음
- • 음성을 유튜브 영상으로 만들고 싶음
- • 단순한 오디오 파일보다 시각적 콘텐츠가 필요
- • 핵심 메시지를 슬라이드로 표현하고 싶음
최종 결과물
입력: 오디오 파일 (설교 녹음)
출력: 자막/슬라이드가 포함된 유튜브 영상
추가 기능:
- ✓ 타임스탬프 기반 자동 슬라이드 전환
- ✓ AI 기반 핵심 내용 추출
- ✓ PDF 원고 기반 교열
- ✓ GPU 가속 영상 생성
🐍 왜 Python인가?
🌍세계에서 가장 인기있는 프로그래밍 언어
전 세계 수천만 명의 개발자가 Python을 사용하고 있으며, AI, 데이터 분석, 웹 개발, 자동화 등 거의 모든 분야에서 활용됩니다.
🤝강력한 커뮤니티 = 무한한 자원
어떤 문제든 이미 해결책이 존재
음성 인식? Whisper. 영상 처리? FFmpeg. PDF 읽기? PyPDF2. 필요한 기능은 이미 누군가 만들어서 공유했습니다.
에러 메시지를 검색하면 답이 나옴
Stack Overflow, GitHub Issues, 공식 문서 등에 수백만 개의 질문과 답변이 축적되어 있습니다. AI(Cursor, ChatGPT)는 이 모든 지식을 학습했습니다.
설치 한 줄이면 고급 기능 사용 가능
pip install openai 명령 하나로 최첨단 AI 기술을 내 프로그램에 바로 연결할 수 있습니다.
💼업무 자동화의 최강자
🎬 목회 콘텐츠 제작
설교 영상 자동 생성, 자막 추가, 유튜브 업로드
📊 교회 행정 자동화
출석 통계, 헌금 보고서, 문자 발송 자동화
📝 문서 작업 자동화
주보 생성, PDF 변환, 이메일 일괄 발송
🔍 데이터 분석
성도 통계, 사역 효과 분석, 트렌드 파악
💡 핵심 포인트:Python을 선택하면 혼자가 아닙니다. 전 세계 개발자들이 만든 도구와 지식, 그리고 AI의 도움을 받아 복잡한 자동화 프로젝트도 쉽게 구현할 수 있습니다. 이 실습에서 사용하는 음성 인식, 텍스트 처리, 영상 생성 기능도 모두 커뮤니티가 만든 오픈소스 라이브러리입니다.
🎯 학습 목표
- ✓실제 목회 현장의 문제를 AI 코딩으로 해결하는 과정 체험
- ✓Python 프로젝트 구조 이해 (파일 분리, 모듈화)
- ✓OpenAI API를 활용한 음성 인식 및 텍스트 처리
- ✓기술적 문제 발생 시 AI와 함께 해결하는 방법
- ✓프롬프트 엔지니어링을 통한 품질 개선
🔧 사용 기술
Python 3.11+
프로젝트 기반 언어
AI/음성/영상 처리에 최적화
OpenAI API
Whisper (음성→텍스트)
GPT-4o (텍스트 분석/교열)
FFmpeg
오디오/영상 처리
압축, 인코딩, GPU 가속
Playwright
HTML/CSS → 이미지 변환
슬라이드 생성
💡 중요: 이 모든 기술을 미리 알 필요 없습니다! Cursor가 필요한 패키지를 설치하고, 코드를 작성하며, 에러를 해결해줍니다.
💻 실습: 단계별 진행
STEP 1프로젝트 시작 - 비전 공유하기 (10분)
💭 핵심 개념: AI에게 "무엇을" 만들지 명확히 전달
코딩을 시작하기 전에, AI에게 프로젝트의 전체 그림을 보여주는 것이 중요합니다. 세부 기술은 몰라도 됩니다. "무엇을 하고 싶은지"에 집중하세요.
📁 프로젝트 폴더 만들기
🪟 Windows:
- 바탕화면에
sermon-to-video폴더 생성 - Cursor 실행 → File → Open Folder → 해당 폴더 선택
🍎 Mac:
- Finder에서 문서 폴더에
sermon-to-video폴더 생성 - Cursor 실행 → File → Open Folder → 해당 폴더 선택
🤖 첫 번째 프롬프트
Cmd/Ctrl + L을 눌러 채팅창 열기
나는 오디오 파일의 내용을 기반으로 핵심 키워드와 내용을 정리하여 영상화하려고 해. 음성 파일을 전사한 후(타임코드 포함), 대본을 가지고 핵심 내용을 파악 타임별로 정리하여 슬라이드로 만들고 이를 영상화 하려는 거지. 파이썬을 가지고 이러한 절차를 진행하는 프로젝트를 만들어 보자. 전사 모델은 "whisper-1"을 쓰자.
🎯 프롬프팅 포인트:
- ✓ 전체 워크플로우를 순서대로 설명
- ✓ 사용할 기술 스택 제안 (Python, Whisper)
- ✓ 최종 목표가 명확함 (슬라이드 영상)
📊 AI의 제안 확인
AI가 다음과 같은 프로젝트 구조를 제안할 것입니다:
sermon-to-video/ ├── main.py # 전체 실행 ├── transcribe.py # 음성 전사 ├── analyzer.py # 내용 분석 ├── slide_generator.py # 슬라이드 생성 ├── video_generator.py # 영상 생성 ├── config.py # 설정 관리 └── requirements.txt # 필요한 패키지 목록
→ 이 구조를 Accept하고 다음 단계로 진행합니다.
STEP 2기술적 문제 해결하기 (20분)
💭 핵심 개념: 에러는 학습의 기회
실제 개발에서는 항상 예상치 못한 문제가 발생합니다. 중요한 것은 에러 메시지를 그대로 AI에게 보여주는 것입니다.
🚨 문제 1: ModuleNotFoundError
ModuleNotFoundError: No module named 'openai'
🔍 상황: Python에 필요한 패키지가 설치되지 않음
💬 Cursor에게 보낼 메시지:
다음 에러가 발생했어요:
[에러 메시지 전체 복사]
어떻게 해결하면 될까요?
✅ AI의 해결책:
터미널에서 실행:
🪟 Windows:
pip install -r requirements.txt🍎 Mac:
pip3 install -r requirements.txt🚨 문제 2: API 모델 호환성
Error code: 400 - response_format 'verbose_json' is not compatible
🔍 상황: 타임스탬프가 필요한데 모델이 지원하지 않음
🎯 의사결정:
선택지 1: gpt-4o-transcribe 사용 (타임스탬프 없음)
선택지 2: whisper-1 사용 (타임스탬프 지원)
→ 결정: whisper-1 선택
이유: 타임스탬프가 프로젝트의 핵심 기능
💬 Cursor에게 요청:
response_format을 "verbose_json"으로,
timestamp_granularities를 ["segment"]로 설정해줘.
🚨 문제 3: 파일 크기 제한 (25MB)
Error code: 413 - Maximum content size limit (26214400) exceeded
🔍 상황: 15분 오디오가 38MB로 인식됨
💬 실제 프롬프트:
우선 인코딩을 확인해서 32k/64k 정도로 압축한 후
그래도 크면 분할하는 건 어떨까요?
🎯 의사결정: 2단계 접근
1단계: FFmpeg로 압축 시도 (32kbps 모노)
2단계: 압축 후에도 크면 10분 단위로 분할
💡 프롬프팅 포인트: 점진적 해결책을 제안하면 AI가 우선순위에 따라 구현합니다.
🚨 문제 4: Python 버전 호환성
ModuleNotFoundError: No module named 'audioop'
🔍 상황: Python 3.14에서 audioop 모듈이 제거됨
💬 Cursor에게:
Python 3.14 환경입니다. 해결 방법이 있나요?
✅ AI의 해결책:
pydub(audioop 의존) 대신 FFmpeg를 직접 사용하도록 코드 수정
🎓 핵심 교훈
"에러 메시지를 두려워하지 마세요!"
에러는 무엇이 문제인지 알려주는 힌트입니다. 전체 에러 메시지를 AI에게 보여주면, AI가 문제를 진단하고 해결책을 제시합니다.
STEP 3품질 개선 - 교열 시스템 추가하기 (20분)
💭 핵심 개념: 프롬프트 엔지니어링
AI의 출력 품질은 프롬프트에 달려있습니다. 구체적인 예시와 명확한 우선순위를 제공하면 더 정확한 결과를 얻을 수 있습니다.
🚨 발견된 문제
전사 결과에서 고유명사 오류 발견:
- ❌ "여호수아" → "여우수아"
- ❌ "아간" → "악안"
- ✅ PDF 원고는 정확한데 음성 인식이 틀림
💬 개선 요청 프롬프트:
GPT-4o에 전사내용과 PDF를 같이 주고 교열을 할 수 있는
과정을 넣어보자
🎯 의사결정: 2단계 교열 프로세스
1단계: 고유명사 추출
PDF에서 인물명, 지명, 전문용어 추출
2단계: 교정
추출된 목록 + PDF 원문으로 전사 내용 교정
📝 프롬프트 엔지니어링 실습
AI에게 교정을 요청할 때 다음과 같이 구체적으로 작성:
당신은 음성 인식 전사 내용을 교정하는 전문가입니다.
⚠️ 특히 고유명사 교정에 집중하세요! ⚠️
음성 인식은 고유명사를 자주 잘못 인식합니다:
- - "여호수아" → "여우수아" ❌
- - "아간" → "악안" ❌
- - "여리고" → "예리고" ❌
교정 원칙:
- 1. 고유명사를 최우선으로 교정
- 2. PDF 원본의 정확한 표기를 따르세요
- 3. 발음이 비슷한 단어는 맥락 고려
- 4. 잘못 인식된 단어 수정
- 5. 문장 부호 개선
temperature=0.1 # 정확성 우선
🎓 프롬프팅 베스트 프랙티스
💡 Cursor 요청 방법
위의 프롬프트 구조를 Cursor에게 보여주며:
시스템 프롬프트는 다음과 같이 구성해줘:
[위의 프롬프트 내용 복사]
STEP 4UX 개선 - 슬라이드 디자인 (15분)
💭 핵심 개념: 전문 용어 몰라도 OK
"자간을 줄이고", "날씬하게" 같은 일상 용어로 요청해도 AI가 letter-spacing, font-stretch 같은 CSS 속성으로 변환해줍니다.
🚨 현재 상황
PIL로 만든 기본 슬라이드가 너무 단조로움
💬 디자인 개선 프롬프트
글꼴은 HANDotum, HANDotumB를 써줘. 폴더에 넣어놨음
🎯 AI의 제안:
PIL 대신 HTML/CSS + Playwright 방식으로 변경 제안
- ✓ CSS는 디자인에 특화됨
- ✓ 커스텀 폰트 쉽게 적용
- ✓ Playwright로 HTML → 이미지 변환
🔧 세부 조정: 타이포그래피
디자인이 생성된 후 미세 조정:
💬 추가 프롬프트:
글자들의 자간을 조금 줄이고
옆으로 굵기? 뚱뚱함?을 약간만 날씬하게 해 줘.
✅ AI가 적용할 CSS:
body {
letter-spacing: -0.5px; /* 자간 줄임 */
font-stretch: condensed; /* 날씬하게 */
}
.title {
letter-spacing: -1px;
font-weight: 600; /* bold → 600 */
}
.summary {
letter-spacing: -0.5px;
font-weight: 400;
}🎨 더 많은 디자인 요청 예시
- 💬 "전체 배경을 은은한 그라데이션으로"
→ AI가background: linear-gradient(...)적용 - 💬 "제목을 좀 더 강조하고 싶어"
→ AI가font-size,font-weight,text-shadow조정 - 💬 "중요한 키워드를 박스로 감싸줘"
→ AI가border,padding,background-color적용
🎓 핵심 교훈
"CSS 문법을 외울 필요 없습니다!"
시각적으로 원하는 것을 일상 언어로 표현하면, AI가 기술 용어로 변환합니다.
STEP 5성능 최적화 - GPU 가속 (15분)
💭 핵심 개념: 최적화 사고방식
"이 작업이 꼭 필요한가?", "더 빠른 방법은?" 질문하면 AI가 병목 지점을 찾아 개선해줍니다.
🚨 현재 상황
영상 생성에 시간이 너무 오래 걸림
💬 최적화 요청 프롬프트
혹시 GPU를 쓰도록 하는 옵션이 있는지?
또한 이것은 정지되어 있는 그림 기반 영상이기 때문에
frame rate가 낮아도 될 것 같아.
이미 그렇게 했는지 모르지만
🎯 AI의 분석 및 최적화
1️⃣ FPS 최적화
변경 전: VIDEO_FPS = 30
→ 1초당 30프레임 (정지 이미지인데 불필요)
변경 후: VIDEO_FPS = 1
→ 인코딩 시간 30배 단축
2️⃣ GPU 가속
자동으로 GPU 인코더 감지:
- • h264_nvenc (NVIDIA GPU) → 10배+ 빠름
- • h264_amf (AMD GPU)
- • h264_qsv (Intel Quick Sync)
- • libx264 (CPU, 백업용)
3️⃣ 인코딩 프리셋
VIDEO_PRESET = "ultrafast" # 속도 우선
VIDEO_THREADS = 4 # 멀티스레드
📈 성능 향상 결과
| 최적화 | 개선 | 누적 |
|---|---|---|
| 30fps → 1fps | 30배 | 30배 |
| CPU → GPU | 10배 | 300배 |
| Preset 조정 | 2배 | 600배 |
실제: 15분 영상 생성 10분 → 5초
🖥️ GPU 확인 방법
🪟 Windows:
작업 관리자 → 성능 탭 → GPU 사용률 확인
작업 관리자(Ctrl+Shift+Esc) → 성능🍎 Mac:
활성 상태 보기 → GPU 내역
Command + Space → "활성 상태 보기" 입력🎓 핵심 교훈
"평범한 언어로 성능 문제를 표현하세요"
"시간이 너무 걸려요", "정지 이미지인데" → AI가 병목 분석하고 최적화합니다.
STEP 6AI에게 더 많은 자율권 주기 (15분)
💭 핵심 개념: AI에게 판단 권한 위임
"5분마다 자르기" 같은 기계적 규칙 대신, AI가 내용의 흐름을 파악하여 자연스럽게 분할하도록 합니다.
🚨 현재 문제
슬라이드가 5분 단위로 기계적으로 끊김 → 지루함
💬 개선 요청 프롬프트
AI모델에 조금더 자율권을 줘서,
내용 및 콘텐츠 흐름에 따라 분석하도록 하되,
조금 자세히 하여 슬라이드 장수가 좀 많이 나오도록 해보자.
현재는 슬라이드 변화가 없어 너무 지루해 보임.
유튜브 콘텐츠 - 시청자는 장년에 맞춰서
너무 딱딱하지 않게 자연스러운 슬라이드가 나오도록
프롬프트 수정도 부탁해.
🔧 AI가 개선할 부분 1: 섹션 분할
변경 전: 5분씩 강제로 끊기
변경 후: AI가 의미 단위로 분할
🔧 AI가 개선할 부분 2: 슬라이드 톤 조정
타겟 청중에 맞춘 프롬프트:
⚙️ Temperature 조정
• temperature=0.1 - 매우 일관적, 예측 가능 (교열용)
• temperature=0.5 - 균형잡힌 창의성 (콘텐츠 생성) ✓
• temperature=0.9 - 매우 창의적, 변화무쌍
🎯 프롬프트 엔지니어링 원칙 정리
1. 역할 설정
"유튜브 콘텐츠 제작 전문가"
2. 타겟 명시
"장년층 시청자"
3. 톤 지정
"친근하고 자연스러운"
4. 제약 조건
"15자 내외", "2-3문장"
5. 출력 형식
JSON으로 구조화
6. Temperature
작업 특성에 맞게 조정
🎓 핵심 교훈
"AI에게 역할과 맥락을 주세요"
명확한 역할, 타겟, 톤, 제약조건을 주면 AI가 사람처럼 판단하여 작업합니다.
✅ 완성 체크리스트
💎 이 실습에서 배운 핵심 원칙
1. 비전을 먼저 공유
"이런 걸 만들고 싶어요" → AI가 전체 구조 설계
세부 기술은 몰라도 OK
2. 에러는 학습 기회
에러 메시지 전체 복사 → AI가 진단 및 해결
두려워하지 말 것
3. 구체적 예시 제공
"여호수아 → 여우수아 ❌"
명확한 예시로 AI가 정확히 이해
4. 일상 언어로 표현
"자간을 줄이고 날씬하게"
→ AI가 CSS 속성으로 변환
5. 점진적 개선
1차: 압축 시도
2차: 분할 처리
단계별 접근
6. AI에게 자율권
기계적 규칙 대신
"내용 흐름에 따라 판단"
🔧 자주 발생하는 문제와 해결법
Q: Python 패키지 설치가 안 돼요!
Windows: pip install [패키지명]
Mac: pip3 install [패키지명]
또는 에러 메시지를 Cursor에게 보여주세요.
Q: OpenAI API 키는 어떻게 발급하나요?
platform.openai.com → API Keys → Create new secret key
.env 파일에 OPENAI_API_KEY=sk-... 저장
Q: FFmpeg가 없다고 나와요!
Windows: Cursor에게 "FFmpeg 설치 방법 알려줘" 요청
Mac: brew install ffmpeg
Q: 영상 생성이 너무 느려요!
Cursor에게 "GPU 가속 활성화되었는지 확인해줘" 요청
GPU 없는 환경이라면 FPS를 더 낮춰보세요 (1fps)
🚀 프로젝트 확장 아이디어
이 프로젝트를 더 발전시킨다면?
1. 웹 인터페이스 추가
- • 파일 업로드 UI
- • 진행 상황 표시
- • 브라우저에서 바로 사용
2. 자막 생성
- • SRT 파일 출력
- • 유튜브 자동 자막
- • 다국어 자막 지원
3. 다국어 번역
- • 한국어 → 영어 번역
- • 다국어 슬라이드 생성
- • 글로벌 전도 콘텐츠
4. 클라우드 배포
- • 교회 홈페이지 통합
- • 여러 목회자 공동 사용
- • 자동 유튜브 업로드
💡 각각의 확장 기능도 Cursor와 함께 단계별로 개발할 수 있습니다!
🎯 핵심 마인드셋
당신이 할 일
- ✓비전 제시: "이런 걸 만들고 싶어요"
- ✓문제 공유: 에러나 불만족스러운 부분
- ✓방향 설정: "이렇게 바뀌면 좋겠어요"
AI가 할 일
- ✓구조 설계: 프로젝트 전체 아키텍처
- ✓코드 작성: 실제 구현 및 패키지 관리
- ✓문제 해결: 에러 수정, 최적화
- ✓개선 제안: 더 나은 방법 제시
코딩 = 문제 해결의 도구
AI = 문제 해결의 파트너
당신은 목회 현장의 니즈를 가장 잘 압니다.
AI는 그것을 코드로 만드는 것을 도와줍니다.
👨🏫 강사 노트
⏰ 시간 배분: STEP 1-2 (30분), STEP 3-4 (35분), STEP 5-6 (30분), 마무리 (15분)
🎯 핵심 메시지: "Python을 몰라도, 실제 문제를 해결하는 앱을 만들 수 있어요!"
💬 참여 유도: 에러가 발생하면 당황하지 말고 함께 AI에게 물어보는 과정 시연
🔄 에러 대응: 실제로 에러를 유도해서 해결하는 과정을 보여주면 더 효과적
📸 완성 공유: 최종 영상을 함께 시청하며 감동 공유
🏠 과제 안내: 자신의 설교 오디오로 영상 만들어보기 (OpenAI API 키 필요)
💡 추가 팁: 실습 전에 sample 오디오 파일(1분 이내)을 미리 준비하면 빠른 테스트 가능