최근에 AI 영상을 만들고 싶어 본격적으로 시작하기 전에 간단한 퀴즈를 GPT + TTS 를 이용해서 영상을 만들어 보았다.
간단히 소개하자면, 명령어 하나 치면 알아서 퀴즈 만들고, 음성 넣고, 영상 까지 완성해주는 프로그램이다.
원래 유튜브에 업로드까지 자동화 하는거를 목표로 했었지만 API Key 발급 절차 및 검증 단계가 필요해서 일단 생략하고 진행했다.
기술 스택과 구현 방식
1. GPT-4를 활용한 퀴즈 생성
// quizGenerator.js 로직
const response = await this.openai.chat.completions.create({
model: "gpt-4",
messages: [
{
role: "system",
content: "당신은 흥미롭고 교육적인 퀴즈를 만드는 전문가입니다..."
},
{
role: "user",
content: prompt
}
],
max_tokens: 1000,
temperature: 0.8
});
- 카테고리 종류
- 역사의 숨은 이야기
- 과학의 신비한 현상
- 동물들의 놀라운 능력
- 브랜드와 로고의 비밀
- 심리학 재미있는 이야기
- 등등...
2. OpenAI TTS로 음성 생성
// ttsGenerator.js - Echo 음성 사용
const mp3 = await this.openai.audio.speech.create({
model: "tts-1",
voice: "echo",
speed: 1.15,
input: text
});
- Echo 음성이 한국어 발음에 가장 자연스러웠음
- 1.15x 속도로 설정하여 듣기 좋은 속도로 조절
3. FFmpeg와 Sharp를 이용한 영상 제작
// videoGenerator.js - 프레임 생성 및 영상 합성
await sharp({
create: {
width: 1080,
height: 1920, // YouTube 쇼츠 규격
channels: 4,
background: { r: 0, g: 0, b: 0, alpha: 0 }
}
})
.composite([
{ input: backgroundBuffer, top: 0, left: 0 },
{ input: textBuffer, top: textY, left: textX }
])
.png()
.toFile(framePath);
- 1080x1920 해상도 (YouTube 쇼츠에 최적화)
- 질문과 답변을 별도 화면으로 구성
사용법
1. 기본 사용법 (랜덤 퀴즈)
npm run run
- 진행 과정
- 카테고리 중 랜덤 선택
- GPT-4 퀴즈 생성
- OpenAI TTS로 음성 생성
- 영상 제작
- 로컬에 완성된 영상 저장
2. 특정 주제 지정 하는 방법
# 애플 로고에 대한 퀴즈
node src/cli.js run --topic "애플 로고의 사과에서 한 입이 빠진 이유와 의미"
# 과학 원리 퀴즈
node src/cli.js run --topic "무지개가 나타나는 각도와 과학적 원리"
# 브랜드 스토리 퀴즈
node src/cli.js run --topic "코카콜라의 비밀 레시피와 역사"
3. 자동 스케줄링
npm run schedule
매일 오전 9시, 오후 6시에 자동으로 퀴즈 영상을 생성하도록 설정.
개발하면서 느낀 점
결과물은 생각보다 그럴듯하게 나와서 꽤 놀랐고 아래는 각 카테고리 별로 내가 느낀점을 적어보았다.
- GPT (퀴즈 생성)
퀴즈 주제는 꽤 흥미로운 것들이 많아서 오히려 내가 흥미를 가지고 계속 실험하게 됐다. 따로 내가 뭘 많이 하지 않아도 콘텐츠 하나가 만들어 지는 느낌이 들어서 좋았다.
- TTS (음성)
TTS 음성이 완벽하진 않았지만 꽤 만족스러웠다. 가끔 퀴즈 낭독할 때 A, B, C, D 중에 C를 빼먹는다든가 하는 귀여운 오류 정도?? 발생했지만 프롬프트를 통해 해결할 수 있는 정도의 수준이였다.
- FFmpeg, Sharp (영상 생성)
이번에는 SVG로 디자인을 하고 나서 PNG 이미지로 변환 후 음성과 함께 영상으로 합성하는 형태로 구현을 했는데, 생각보다 음성과 화면이 딱딱 맞아떨어지게 싱크 맞추는 데 시간이 걸렸다. 이건 결국 프롬프트를 좀 더 정확하게 주니까 금방 해결됐다. 결국 프롬프트를 AI가 이해하기 쉽도록 작성하는게 제일 중요한거 같다.
이제 다음은, 다른 AI 영상 생성 도구들을 하나씩 건드려보는 일들만 남았다.
그러고 나서 유튜브 쇼츠에 업로드 할 생각이다.
'개발일지 > Vibe Coding' 카테고리의 다른 글
| [Vibe Coding] Claude Code와 만든 뉴스 요약 자동화 시스템 (4) | 2025.07.28 |
|---|