[Vibe Coding] TTS를 활용한 영상 개발 체험기

2025. 8. 2. 16:01·개발일지/Vibe Coding

 
최근에 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

- 진행 과정

  1. 카테고리 중 랜덤 선택
  2. GPT-4 퀴즈 생성
  3. OpenAI TTS로 음성 생성
  4. 영상 제작
  5. 로컬에 완성된 영상 저장

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
'개발일지/Vibe Coding' 카테고리의 다른 글
  • [Vibe Coding] Claude Code와 만든 뉴스 요약 자동화 시스템
lifehi
lifehi
lifehi 님의 블로그 입니다.
  • lifehi
    lifehi 님의 블로그
    lifehi
  • 전체
    오늘
    어제
    • 분류 전체보기 (7)
      • 일상 (1)
      • 개발일지 (6)
        • AI (3)
        • 문제해결 아카이브 (1)
        • Vibe Coding (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 인기 글

  • 태그

    youtubeshorts
    Midjourney
    hailuo
    국악크로스오버
    hailuoai
    Development
    ai공모전
    개발환경
    IDE
    ai콘텐츠
    vibe coding
    ai영상제작
    AI
    SUNOAI
    claude code
    AI헤리티지
    CURSOR
    ai창작
    Capcut
    GR홍보공모전
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lifehi
[Vibe Coding] TTS를 활용한 영상 개발 체험기
상단으로

티스토리툴바