본문 바로가기
IT

Python으로 NotebookLM 스타일 팟캐스트를 프로그래밍 방식으로 생성하는 방법

by 카메라의눈 2024. 11. 23.
반응형

NotebookLM 스타일의 팟캐스트는 Google의 혁신적인 AI 도구에서 영감을 받아 PDF와 같은 텍스트 기반 콘텐츠를 대화형 오디오 형식으로 변환합니다. 이러한 팟캐스트는 두 명의 가상 호스트 간의 생동감 있는 대화를 시뮬레이션하여 복잡하거나 방대한 자료를 더 쉽게 접근하고 즐길 수 있도록 만듭니다.

NotebookLM

 

현재 Google의 NotebookLM은 프로그래밍 방식으로 팟캐스트를 생성할 수 있는 API를 제공하지 않지만, Play.ht와 같은 대체 도구를 사용하면 효율적으로 이러한 팟캐스트를 생성할 수 있습니다.

 

이 가이드는 Python을 사용하여 50줄 미만의 코드로 NotebookLM 스타일의 팟캐스트를 생성하는 방법을 요약하며, Play.ht와 같은 API를 활용합니다.

 

팟캐스트 생성 주요 단계

API 키 설정:

  • Play.ht 또는 유사한 서비스에서 API 키를 발급받습니다.
  • 이 키를 환경 변수에 안전하게 저장합니다(예: os.environ을 사용한 로컬 설정 또는 Google Colab 비밀 관리 기능 사용).
 

AI Voice Generator: Realistic Text to Speech and AI Voiceover

PlayHT is #1 AI Voice Generator with 600+ AI voices that creates ultra realistic Text to Speech voiceovers. Convert text to audio and download as MP3 & WAV files.

play.ht

 

PDF 또는 텍스트 소스 준비:

  • 팟캐스트로 변환할 콘텐츠를 선택합니다. 예를 들어, 비즈니스 전략 문서나 책의 발췌본을 사용할 수 있습니다.

 

필요한 라이브러리 설치:

  • requests(API 호출용)와 os(환경 변수 관리용) 같은 Python 라이브러리를 설치합니다.

 

팟캐스트 매개변수 정의:

  • 소스 파일 URL(예: PDF의 공개 링크)을 지정합니다.
  • 합성 스타일(예: 두 명의 호스트가 참여하는 팟캐스트 형식)을 선택합니다.
  • 가상 호스트 이름 지정(예: "Angelo"와 "Dei").

 

API 요청 전송:

  • HTTP POST 요청을 통해 소스 파일과 매개변수를 Play.ht API에 전송합니다.
  • 응답 상태를 모니터링하여 처리 성공 여부를 확인합니다.

 

오디오 다운로드 및 재생:

  • 팟캐스트가 생성되면 MP3 파일을 다운로드합니다.
  • Jupyter Notebook 위젯이나 로컬 오디오 플레이어 등을 사용해 결과물을 재생합니다.
반응형

예제 코드

아래는 간단한 Python 스크립트로 팟캐스트를 생성하는 예제입니다:

import os
import requests

# Step 1: API 키 설정
API_KEY = os.getenv("PLAYHT_API_KEY")  # 실제 API 키로 대체하세요
USER_ID = os.getenv("PLAYHT_USER_ID")  # 사용자 ID로 대체하세요

# Step 2: 입력 매개변수 정의
pdf_url = "https://example.com/sample.pdf"  # PDF URL로 대체하세요
headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}
payload = {
    "source_file_url": pdf_url,
    "synthesis_style": "podcast",
    "voices": [{"name": "Angelo"}, {"name": "Dei"}]
}

# Step 3: API 요청 전송
response = requests.post("https://api.play.ht/v1/play-notes", json=payload, headers=headers)

if response.status_code == 201:
    play_note_id = response.json().get("id")
    print(f"팟캐스트 생성 시작. ID: {play_note_id}")
else:
    print(f"오류 발생: {response.json()}")

# Step 4: 상태 확인 및 오디오 다운로드
status_url = f"https://api.play.ht/v1/play-notes/{play_note_id}"
status_response = requests.get(status_url, headers=headers)

if status_response.json().get("status") == "completed":
    audio_url = status_response.json().get("audio_url")
    audio_response = requests.get(audio_url)
    with open("podcast.mp3", "wb") as file:
        file.write(audio_response.content)
    print("팟캐스트 다운로드 완료!")
else:
    print("팟캐스트 생성이 진행 중입니다. 나중에 다시 시도하세요.")

 

NotebookLM 스타일 팟캐스트의 특징

  • 동적 대화: 두 명의 AI 생성 호스트가 주제에 대해 생동감 있는 대화를 나눕니다.
  • 맞춤형 콘텐츠: 다양한 소스 자료, 합성 스타일, 호스트 성격 등을 조합하여 스크립트를 사용자 정의할 수 있습니다.
  • 배치 처리: PDF 또는 텍스트 파일을 큐에 추가하여 여러 개의 팟캐스트를 자동으로 생성할 수 있습니다.

활용 사례

  1. 교육: 교과서나 강의 노트를 오디오 형식으로 변환하여 학생들에게 제공.
  2. 기업 교육: 경영 요약본이나 교육 자료를 팟캐스트로 제작.
  3. 엔터테인먼트: 가상 캐릭터 간 대화나 “만약에” 시나리오 시뮬레이션.
  4. 접근성 향상: 방대한 텍스트 콘텐츠를 청각 학습자에게 더 쉽게 제공.

 

제한 사항

  • 정확성 문제: AI가 생성한 콘텐츠는 때때로 오류나 잘못된 정보를 포함할 수 있습니다.
  • API 의존성: Play.ht와 같은 신뢰할 수 있는 서드파티 서비스가 필요합니다.
  • 커스터마이징 제약: 사전 정의된 합성 스타일과 음성 옵션에 제한이 있을 수 있습니다.
반응형