DAY 2 · 11교시 · 60분

오디오 생성: 로컬 TTS(Qwen 0.6B TTS)와 음성 모델 비교

📚1단계: 주요 개념 설명

이번 단원의 목표

로컬 Qwen 0.6B TTS로 대사를 자연스러운 한국어 음성 파일(.wav)로 만들고, Kokoro·Piper·Chatterbox와 크기·속도·음질·기능을 비교해 한국어 쇼츠 나레이션에 Qwen 0.6B TTS가 왜 적합한지 근거로 고른다.

🗂️강의 슬라이드
슬라이드 1 / 10

오디오 생성 — 대본에 목소리를 입히다

오디오 생성 — 목소리를 입히다텍스트오디오음성이미지비디오
  • 4대 생성기술의 두 번째는 '오디오'입니다. 대본의 나레이션을 음성 파일로 만듭니다.
  • 6교시에서 쓴 클라우드 TTS를 이번엔 완전 오프라인·무료 로컬 모델로 대체합니다.
  • 여기서 만든 음성의 '길이'가 나중에 각 장면 이미지의 노출 시간을 결정합니다.

🛠️2단계: 따라하기 실습

🛠 따라 만들기 · AI 바이브 코딩
로컬 TTS로 내레이션 만들고 웹앱에 연동하기

로컬 Qwen 0.6B TTS로 음성을 만든 뒤, OpenAI 호환 API(/v1/audio/speech)로 감싸 웹앱의 음성 기능을 '주소만' 로컬로 바꿔 실제로 들어봅니다. 강사 시연을 Kiro로 따라 하고, 막히면 완성 코드를 붙여넣으세요.

🎯 완성 결과: 웹앱 음성 화면을 '온프렘(로컬)'으로 전환하면 로컬 모델 목소리가 실제로 재생되는 상태
1오디오·서버 패키지 설치

음성 저장 + 로컬 API 서버 도구를 준비합니다.

▶ 터미널에서 실행
pip install qwen-tts soundfile fastapi uvicorn
💡 핵심 코드 설명
  • Qwen 0.6B TTS는 한국어 음질이 좋은 가벼운 로컬 모델이고, soundfile은 음성 파형(숫자 배열)을 .wav로 저장해 줍니다.
  • 모델이 가벼워 설치·실행이 수월하고, 한국어 발음·억양이 자연스럽습니다.
2텍스트 → wav 함수 만들기

대사 한 줄을 음성 파일로 바꿉니다.

🤖 AI에게 이렇게 시켜보세요

파이썬으로 Qwen 0.6B TTS(qwen_tts의 Qwen3TTS, language=Korean)로 텍스트를 받아 음성을 만들고, soundfile로 scene_번호.wav에 저장하는 함수를 만들어줘. 모델이 반환한 샘플레이트를 함께 넘겨 정상 속도로 저장되게 해줘.

💡 핵심 코드 설명
  • 모델이 만든 파형과 샘플레이트를 soundfile.write에 함께 넘겨야 정상 속도로 저장됩니다.
  • 샘플레이트가 어긋나면 배속·잡음이 생기니 생성값을 그대로 넘기는 습관이 중요합니다.
3Kokoro-82M 설치하고 같은 문장으로 비교하기

비교 모델 Kokoro를 직접 돌려 Qwen 0.6B TTS와 한국어 음질을 나란히 들어봅니다.

🤖 AI에게 이렇게 시켜보세요

파이썬으로 Kokoro TTS(kokoro의 KPipeline)를 써서 같은 한국어 문장을 음성으로 만들어 kokoro_1.wav로 저장하는 함수를 만들어줘. lang_code와 voice를 지정하고 샘플레이트 24000으로 soundfile 저장해줘.

📄 kokoro_test.py
# ===== kokoro_test.py (비교용 Kokoro-82M) =====
from kokoro import KPipeline
import soundfile as sf

pipe = KPipeline(lang_code="a")   # 다국어 파이프라인 (음색은 voice로 지정)

def make_kokoro(text: str, name: str = "kokoro_1") -> str:
    for _, _, audio in pipe(text, voice="af_heart"):
        sf.write(f"{name}.wav", audio, 24000)   # Kokoro는 24kHz
    return f"{name}.wav"

if __name__ == "__main__":
    print(make_kokoro("안녕하세요, 코코로 음성 비교 테스트입니다."))
▶ 터미널에서 실행
pip install kokoro soundfile
💡 핵심 코드 설명
  • Kokoro-82M(~2~3GB)은 더 가볍고 빠릅니다. 같은 한국어 문장을 Qwen 0.6B TTS와 Kokoro로 각각 만들어 번갈아 들어보세요.
  • 판단 기준: 한국어 발음·억양의 자연스러움 vs 생성 속도. 우리 쇼츠는 '한국어 음질'을 기준으로 Qwen 0.6B TTS를 권장합니다.
  • 두 모델을 실제로 돌려 보고 '왜 이 모델을 골랐는지'를 근거로 말할 수 있으면 성공입니다.
4OpenAI 호환 API로 감싸기 (/v1/audio/speech)

웹앱이 클라우드처럼 호출할 수 있도록 로컬 음성 서버를 만듭니다.

🤖 AI에게 이렇게 시켜보세요

FastAPI로 POST /v1/audio/speech 엔드포인트를 만들어줘. OpenAI TTS와 같은 형식으로 input·voice를 JSON으로 받아 위 make_audio로 음성을 만들고 mp3(또는 wav) 오디오를 그대로 반환하게 해줘. CORS는 모두 허용하고, uvicorn으로 8000포트에서 실행되게 해줘.

💡 핵심 코드 설명
  • 요청·응답 형식을 OpenAI 규격(/v1/audio/speech)에 맞추는 게 핵심 — 그래야 웹앱 코드를 안 고치고 주소만 바꿉니다.
  • uvicorn server:app --port 8000 으로 띄우면 http://localhost:8000/v1/audio/speech 가 열립니다.
5⭐ 웹앱에 연동해 '실제로' 들어보기

웹앱 음성 기능을 클라우드 → 로컬 서버로 갈아끼워 로컬 목소리를 재생합니다.

💡 핵심 코드 설명
  • 이 강의의 '음성 생성 체험'에서 상단 토글을 ☁️클라우드 → 💻온프렘(로컬)으로 바꾸고 주소에 http://localhost:8000 을 넣어 생성해 보세요.
  • 키 없이도 로컬 서버로 요청이 가고, 내 컴퓨터가 만든 목소리가 그대로 재생됩니다.
  • 코드는 그대로 두고 '연결 대상 주소만' 바꿨다는 점 — 이것이 온프렘 전환의 핵심입니다.
🎯 스스로 해볼 미션
0 / 2 완료
채널 목소리 고르기 — Qwen 0.6B TTS 음색 바꿔보기

로컬 TTS의 음색을 바꿔 들어 보며, 우리 채널에 맞는 목소리를 직접 고릅니다.

출발점(강사와 함께 만든 것): 강사와 함께 Qwen 0.6B TTS로 대사를 .wav 음성 파일로 만들었다.
✅ 완료 기준: 채널에 맞는 음색을 근거를 들어 하나 고르면 성공.
실습 미션 체크리스트
1개념 직관

4대 생성기술의 두 번째, '오디오 생성'입니다. 6교시 클라우드 TTS를 완전 오프라인으로 대체합니다. 우리는 한국어 발음·억양이 자연스러운 Qwen 0.6B TTS(약 4GB)를 권장 기준 모델로 삼고, 더 가볍고 빠른 Kokoro-82M(약 2~3GB) 등과 비교하며 '가벼움·속도 vs 한국어 음질 vs 기능(음성복제)'의 트레이드오프를 판단합니다.

2실습 미션

우측 로컬 TTS 낭독기에서 대사를 적고 음성을 바꿔 가며 생성해 보세요. 같은 한국어 문장을 Qwen 0.6B TTS와 Kokoro로 들어 보고, 왜 우리 한국어 쇼츠엔 Qwen 0.6B TTS를 권장하는지(음질) 비교 판단합니다.

파이썬 오디오 디스크 저장 함수
import soundfile as sf

# 소리 가중치 파형 매트릭스를 디스크에 WAV 컨테이너로 쓰기
def save_audio(wav_data, sample_rate, output_name):
    sf.write(output_name, wav_data, sample_rate)
    return f"{output_name} 저장 완료"

💡 코딩 중 막히나요? 모범 솔루션 코드

🧩3단계: 개념 검증 퀴즈

검증 챌린지 미션

생성 완료 후 한국어 음성이 재생되는지, 그리고 Qwen 0.6B TTS와 Kokoro를 비교해 '왜 한국어 나레이션엔 Qwen 0.6B TTS를 권장하는지'를 근거로 설명할 수 있는지 확인합니다.

📝 객관식 개념 확인 (2문항)

Q1. 한국어 쇼츠 나레이션에 Qwen 0.6B TTS를 권장하는 근거로 옳은 것은?

Q2. '내 목소리로 더빙'처럼 음성 복제가 필요하다면 대안으로 가장 알맞은 모델은?

🔬 인터랙티브 체험 (선택)— 개념을 직접 조작하며 확인해 보세요

오프라인 한글 음성 모델(Qwen 0.6B TTS)의 WAV 파일 생성을 직접 작동해 보세요.

다음 교시로 이동하기 (12교시: 이미지 생성: 확산모델(FLUX.1-schnell)과 모델 비교) ➡️