podgenai: GPT-4와 TTS를 사용한 자동 팟캐스트 생성 도구

:pytorch:PyTorchKR:kr:

  • podgenai는 GPT-4를 사용하여 주어진 주제에 대해 약 한 시간 분량의 오디오북/팟캐스트 mp3 파일을 생성하는 Python 애플리케이션입니다. 이 프로젝트는 정보의 전달 방식을 혁신적으로 변화시키려는 시도 중 하나입니다. 이전에 소개했었던 NewsBytes도 함께 살펴보시면 좋습니다. :smiley:

소개

podgenai는 사용자가 지정한 주제에 대해 오디오북 또는 팟캐스트를 자동으로 생성할 수 있는 도구입니다. 이 소프트웨어는 OpenAI의 GPT-4를 활용하여 텍스트 콘텐츠를 생성하고, 이를 TTS(Text-to-Speech) 기술로 음성으로 변환한 다음, ffmpeg을 사용하여 여러 오디오 세그먼트를 하나의 mp3 파일로 병합합니다. 이 과정은 주어진 주제에 대한 포괄적이고 정보적인 내용을 제공하는 데 중점을 둡니다.

동작 방식

기존의 정적인 오디오북 제작 방식과 달리, 주어진 주제에 대한 맞춤형, 동적인 오디오 콘텐츠를 생성할 수 있는 유연성을 제공하기 위해 다음과 같은 접근 방식을 사용합니다. 사용자는 특정 주제에 대해 최신 정보를 제공받을 수 있으며, 다양한 하위 주제에 대한 깊이 있는 탐색을 통해 주제에 대한 포괄적인 이해를 얻을 수 있습니다:

  1. 음성 선택: LLM을 사용하여 세 가지 옵션 중에서 음성이 선택됩니다. 이는 사용자가 주제에 맞는 가장 적합한 음성 톤을 결정할 수 있게 합니다.

  2. 적용 가능한 하위 주제 리스트: LLM을 사용하여 주어진 주제에 적용 가능한 하위 주제들이 나열됩니다. 만약 LLM이 주제를 알지 못하는 경우, 프로세스는 중단됩니다. 이 단계는 주제를 다각도에서 탐색하고 관련 깊은 콘텐츠를 생성할 기반을 마련합니다.

  3. 하위 주제별 텍스트 및 음성 생성: 각 하위 주제에 대해 동시에 해당하는 텍스트와 음성이 각각 LLM과 TTS를 사용하여 생성됩니다. 이는 주제의 각 세부 사항에 대한 심층 분석을 가능하게 하며, 청취자에게 포괄적인 이해를 제공합니다.

  4. 음성 파일 병합: 생성된 모든 음성 파일은 ffmpeg을 사용하여 하나의 mp3 파일로 병합됩니다. 이 최종 단계는 여러 하위 주제에 대한 정보를 통합하여 청취자가 연속적으로 경험할 수 있는 완성된 오디오 콘텐츠를 생성합니다.

생성한 샘플 MP3

다음은 podgenai에서 생성된 샘플 mp3 파일들의 목록입니다. 이 표는 각 샘플의 사용된 음성과 그 목적을 요약하여 보여줍니다.

음성 제목 목적
기본 PyTorch 기술적 콘텐츠 생성
기본 Advanced PyTorch 고급 기술적 콘텐츠 생성
기본 New York City: present and future 비기술적 콘텐츠 생성
기본 Artificial General Intelligence (AGI): Approaches and Algorithms 계층적이지 않은, 단일 수준 하위 주제 목록 적용
여성 Human circulatory system (unabridged) 요약되지 않은 접미사에 대한 암시적 주제 지원, 더 많은 하위 주제 포함
여성 Buffy the Vampire Slayer 여성 음성 선택 예시
남성 Bitcoin for nerds 남성 음성 선택 예시

사용 방법

설정

podgenai를 설정하고 사용하기 전, 아래와 같은 단계들을 통해 rye 설치 및 ffmpeg 등을 설정해야 합니다:

  1. rye 설치 확인: 시스템에 rye가 설치되어 있고 사용 가능한지 확인합니다.
  2. 저장소 복제 또는 다운로드: GitHub에서 podgenai 저장소를 복제하거나 다운로드합니다.
  3. rye 동기화 실행: 저장소 디렉토리에서 rye sync 명령을 실행합니다. 리눅스 사용자의 경우 더 좁은 범위로 rye sync --no-lock을 사용할 수 있습니다.
  4. 환경 변수 설정:
  • 저장소 디렉토리 내에 .env 파일을 생성하고, 필요한 환경 변수 OPENAI_API_KEY=<your OpenAI API key>를 설정합니다. 이는 OpenAI API 사용을 위한 키입니다. 다른 방식으로 환경 변수를 설정할 수도 있습니다.
  • 선택적으로, 더 빠른 생성을 위해 환경 변수 PODGENAI_OPENAI_MAX_WORKERS=32를 설정할 수 있습니다. 기본값은 16입니다.
  1. ffmpeg 확인: 시스템에 ffmpeg이 설치되어 있고 사용 가능한지 확인합니다. podgenai는 오디오 파일을 병합하는 데 ffmpeg를 사용합니다.
  2. 저장소 업데이트 시 rye 동기화 재실행: 저장소를 업데이트하는 경우, rye sync 단계를 다시 실행해야 합니다.

사용방법

2가지 방식으로 podgenai를 사용할 수 있습니다: 1) CLI 애플리케이션 형태, 2) 파이썬 라이브러리 형태로 가능합니다. 기본적으로 생성된 mp3 파일은 저장소 디렉토리에 기록됩니다. 2024년 기준, 생성 비용은 2달러 미만이며, 소요 시간은 3분 미만입니다.

생성 시에는 다음과 같은 팁을 참고하여 생성해보세요:

  • 요청한 주제로 하위 주제를 생성하지 못하는 경우, 주제를 조금 더 넓게 또는 사실적으로 재구성해 보세요.

  • 더 많은 하위 주제를 포함하는 목록을 원한다면, 요청한 주제에 "(unabridged)" 접미사를 추가하세요. 예를 들어, "PyTorch (unabridged)".

CLI로 podgenai 실행하기

  • 도움말을 보려면, python -m podgenai -h를 실행하세요.
  • 지정된 주제로 실행하려면, -t "My favorite topic"을 사용하세요. 주제를 지정하지 않으면, 대화형으로 주제를 입력하라는 메시지가 표시됩니다.
  • 기존 출력 디렉토리 경로를 지정하려면, -p "/my/preexisting/dir"을 사용하세요.
  • 출력 파일 경로를 지정하려면, -p "~/something.mp3"을 사용하세요.
  • 하위 주제 목록이 출력된 후, 전체 텍스트 생성 전에 확인이 필요하다면, -c를 사용하세요.
  • 예시: python -m podgenai -t "My favorite topic" -p "~/Downloads/" -c.

Python Library에 포함하여 사용하기

podgenai 패키지는 PyPI에서 사용할 수 없지만, 라이브러리로 호출할 수 있습니다. 성공적인 경우, 출력 경로가 반환됩니다. 흔한 이유로 실패한 경우, None이 반환되며 관련 오류가 출력됩니다. 따라서 반환값을 확인해야 합니다. 이 섹션은 파이썬 최선의 관행에 따라 변경될 수 있습니다.

from pathlib import Path
from podgenai import generate_media

# mp3 파일 저장 위치는 기본 값을 사용 / 토픽만 제공하여 실행
optional_output_file_path = generate_media("My favorite topic")  # 반환되는 저장 경로를 확인하세요!

# 이미 존재하는 저장 위치(path)를 지정하며 실행
optional_output_file_path = generate_media("My favorite topic", output_path=Path('/tmp'))  # 반환되는 저장 경로를 확인하세요!

# 저장 파일 위치를 Path로 제공
status = bool(generate_media("My favorite topic", output_path=Path('~/foo.mp3')))  # 반환값 확인!

더 읽어보기

PodGenAI 저장소 :github:

유사한 Podcast 생성 도구 NewsBytes에 대한 글




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: