본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 06. 15. 10:34

eBook을 챕터 및 메타데이터가 포함된 오디오북으로 변환하는 CPU/GPU 컨버터

요약

eBook을 챕터와 메타데이터가 포함된 오디오북으로 변환해주는 CPU/GPU 지원 컨버터입니다. 다양한 TTS 엔진과 음성 복제 기능을 통해 1,158개 언어를 지원하며, 저사양 환경에서도 실행 가능하도록 설계되었습니다.

핵심 포인트

  • XTTSv2, Bark 등 다양한 고성능 TTS 엔진 지원
  • 음성 복제(Voice cloning) 및 1,158개 언어 지원
  • OCR 스캐닝을 통한 이미지 기반 텍스트 처리 가능
  • 최소 2GB RAM, 1GB VRAM의 저사양 환경 최적화
  • SSML 태그를 통한 세밀한 음성 제어 지원

고급 TTS 엔진 등을 사용하여 eBook을 오디오북으로 변환합니다.

음성 복제 (Voice cloning) 및 1158개 언어를 지원합니다!

중요

이 도구는 DRM이 없는, 합법적으로 취득한 eBook에만 사용하도록 의도되었습니다.

저자들은 이 소프트웨어의 오용이나 그로 인해 발생하는 어떠한 법적 결과에 대해서도 책임을 지지 않습니다.

이 도구를 책임감 있게 사용하고 모든 관련 법률을 준수하십시오.

새로운 기본 음성 데모

Sherlock.mp4

추가 데모

ASMR 음성

WhisperASMR-Demo.mp4

비 오는 날 음성 (Rainy Day Voice)

Rainy_Day_voice_Demo.mp4

Scarlett 음성

ScarlettJohansson-Demo.mp4

David Attenborough 음성

shortStory.mp4

예시

  • 🔧
    지원되는 TTS 엔진: XTTSv2, Bark, Fairseq, VITS, Tacotron2, Tortoise, GlowTTS, YourTTS

  • 📚
    다양한 파일 형식 변환 가능: .epub, .mobi, .azw3, .fb2, .lrf, .rb, .snb, .tcr, .pdf, .txt, .rtf, .doc, .docx, .html, .odt, .azw, .tiff, .tif, .png, .jpg, .jpeg, .bmp, .zip

  • 💻
    TextArea를 통해 짧은 텍스트를 오디오로 직접 변환 - 🔍
    OCR 스캐닝으로 텍스트 페이지가 이미지인 파일 처리 - 🔊
    실시간에 가까운 속도부터 실제 목소리에 가까운 품질까지 제공하는 고품질 텍스트 음성 변환 (Text-to-speech) - 🗣️
    본인의 음성 파일을 사용하는 선택적 음성 복제 (Voice cloning) - 🌐
    1158개 언어 지원 (지원 언어 목록) - 💻
    저사양 환경 친화적최소 2 GB RAM / 1 GB VRAM에서 실행 가능 - 🎵
    오디오북 출력 형식: 모노 또는 스테레오 aac, flac, mp3, m4b, m4a, mp4, mov, ogg, wav, webm - 🧠
    SSML 태그 지원 — 휴지(breaks), 일시 정지(pauses), 음성 전환 등을 세밀하게 제어 가능 (아래 참조) - 🧩
    선택적 커스텀 모델 사용 — 직접 학습시킨 모델 사용 가능 (XTTSv2, VITS, FAIRSEQ, PIPER, 요청 시 기타 모델) - 🎛️
    E2A 팀이 학습시킨 미세 조정된 (Fine-tuned) 프리셋 모델

(추가적인 미세 조정 모델이 필요하거나, 본인의 모델을 공식 프리셋 목록에 공유하고 싶다면 저희에게 연락해 주세요)

  • 최소 2GB RAM, 8GB 권장.
  • 최소 1GB VRAM, 4GB 권장.
  • Windows에서 실행하는 경우 가상화 (Virtualization) 활성화 (Docker 전용).
  • CPU, XPU (Intel, AMD, ARM)*.
  • CUDA, ROCm, JETSON
  • MPS (Apple Silicon CPU)

** 현대적인 TTS 엔진은 CPU에서 매우 느리므로, YourTTS, Tacotron2 등과 같은 낮은 품질의 TTS를 사용하세요.*

아랍어 (ar) |
중국어 (zh) |
영어 (en) |
스페인어 (es) |
|---|---|---|---|
프랑스어 (fr) |
독일어 (de) |
이탈리아어 (it) |
포르투갈어 (pt) |
폴란드어 (pl) |
터키어 (tr) |
러시아어 (ru) |
네덜란드어 (nl) |
체코어 (cs) |
일본어 (ja) |
힌디어 (hi) |
벵골어 (bn) |
헝가리어 (hu) |
한국어 (ko) |
베트남어 (vi) |
스웨덴어 (sv) |
페르시아어 (fa) |
요루바어 (yo) |
스와힐리어 (sw) |
인도네시아어 (id) |
슬로바키아어 (sk) |
크로아티아어 (hr) |
타밀어 (ta) |
덴마크어 (da) |

.epub

,.pdf`

,.mobi`

,.txt`

,.html`

,.rtf`

,.chm`

,.lit`

,.pdb`

,.fb2`

,.odt`

,.cbr`

,.cbz`

,.prc`

,.lrf`

,.pml`

,.snb`

,.cbc`

,.rb`

,.tcr`

최상의 결과: 자동 챕터 감지를 위해서는 .epub 또는 .mobi 권장

.m4b

,.m4a`

,.mp4`

,.webm`

,.mov`

,.mp3`

,.flac`

,.wav`

,.ogg`

,.aac`

  • 처리 형식은 lib/conf.py에서 변경할 수 있습니다.

[break]

— 무음 (무작위 범위 0.3–0.6초)[pause]

— 무음 (무작위 범위 1.0–1.6초)[pause:N]

— 고정 일시정지 (N초)[voice:/path/to/voice/file]...[/voice]

— 기본 음성 또는 GUI/CLI에서 선택한 음성에서 다른 음성으로 전환

eBook에 SML을 자동으로 추가하는 데 특화된 저희의 다른 리포지토리를 확인하세요 -> E2A-SML

중요

설치 또는 버그 이슈를 게시하기 전에, 이미 존재하는 이슈인지 확인하기 위해 열려 있거나 닫힌 이슈(Issues) 탭을 주의 깊게 검색해 보세요.

참고

EPUB 형식은 무엇이 챕터인지, 단락인지, 서문인지와 같은 표준 구조가 부족합니다.
따라서 오디오로 변환하고 싶지 않은 텍스트는 먼저 수동으로 제거해야 합니다.

리포지토리 클론 (Clone repo) git clone https://github.com/DrewThomasson/ebook2audiobook.git cd ebook2audiobook

ebook2audiobook 설치 / 실행:-
Linux/MacOS ./ebook2audiobook.command

MacOS 사용자를 위한 참고 사항: 누락된 프로그램을 설치하기 위해 homebrew가 설치됩니다. -
Mac Launcher

Mac Ebook2Audiobook Launcher.command를 더블 클릭하세요.

Windows ebook2audiobook.cmd

또는 ebook2audiobook.cmd를 더블 클릭하세요.

Windows 사용자를 위한 참고 사항: 관리자 권한 없이 누락된 프로그램을 설치하기 위해 scoop이 설치됩니다.

Web App 열기: 터미널에 제공된 URL을 클릭하여 웹 앱에 접속하고 eBook을 변환하세요. http://localhost:7860/

공용 링크 생성 (For Public Link): ./ebook2audiobook.command --share

(Linux/MacOS) ebook2audiobook.cmd --share

(Windows) python app.py --share

(모든 OS)

중요 (Important)

스크립트가 중단되었다가 다시 실행되는 경우, 웹 페이지가 새로운 연결 소켓 (connection socket)에 다시 연결될 수 있도록 Gradio GUI 인터페이스를 새로고침해야 합니다.

Linux/MacOS: ./ebook2audiobook.command --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code>

Windows: ebook2audiobook.cmd --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code>

[--ebook]: eBook 파일 경로 -
[--voice]: 음성 복제 (Voice cloning) 파일 경로 (선택 사항) -
[--language]: ISO-639-3 형식의 언어 코드 (예: 이탈리아어는 ita, 영어는 eng, 독일어는 deu...).

기본 언어는 eng이며, --language는 ./lib/lang.py에 설정된 기본 언어를 사용할 경우 선택 사항입니다.

ISO-639-1의 2자리 코드도 지원됩니다.

(필수 모델 파일이 포함된 .zip 파일이어야 합니다. XTTSv2의 예: config.json, model.pth, vocab.json 및 ref.wav)

Linux/MacOS ./ebook2audiobook.command --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>

Windows ebook2audiobook.cmd --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>

참고: 커스텀 모델의 ref.wav는 변환 시 항상 선택되는 음성입니다 -
<custom_model_path>: model_name.zip의 경로

파일은 (TTS 엔진에 따라) 모든 필수 파일을 포함해야 합니다.

(./lib/models.py 참조).

Linux/MacOS ./ebook2audiobook.command --help

Windows ebook2audiobook.cmd --help

또는 모든 OS에서 python app.py --help

usage: app.py [-h] [--session SESSION] [--share] [--headless] [--ebook EBOOK] [--ebooks_dir EBOOKS_DIR]
[--language LANGUAGE] [--voice VOICE] [--voice_map VOICE_MAP] [--device {CPU,CUDA,MPS,ROCM,XPU,JETSON}]
[--tts_engine {XTTS,BARK,VITS,FAIRSEQ,TACOTRON,YOURTTS,xtts,bark,vits,fairseq,tacotron,yourtts}]
...

참고: gradio/gui 모드에서 실행 중인 변환을 취소하려면 ebook 업로드 컴포넌트의 [X]를 클릭하기만 하면 됩니다. 팁: 잠시 멈춤이 필요하면 '[pause:3]'과 같이 추가하세요 (3초 등).

저장소 클론:

git clone https://github.com/DrewThomasson/ebook2audiobook.git
cd ebook2audiobook

컨테이너 빌드

Windows:
Docker:
ebook2audiobook.cmd --script_mode build_docker
...

컨테이너 실행:

Docker run image:
Gradio/GUI:
CPU:
...
  • 참고: MPS는 docker에서 노출되지 않으므로 CPU를 사용해야 합니다.
  • NVIDIA GPU가 감지되지 않나요?? -> GPU 문제(ISSUE) 위키 페이지

XTTSv2 사용자 정의 모델의 경우 음성 참조용 오디오 클립이 필수입니다:

원하는 설정을 추가하거나 제거하려면 libs/conf.py를 수정할 수 있습니다. 만약 그렇게 할 계획이라면, 원래 conf.py의 사본을 만들어야 합니다. 이렇게 해야 ebook2audiobook 업데이트 시마다 수정된 conf.py를 백업하고 원래 파일을 다시 넣을 수 있습니다. models.py에 대해서도 동일한 절차를 계획해야 합니다. 공식 ebook2audiobook 파인튜닝 모델로 자신만의 사용자 정의 모델을 만들고 싶다면, 저희에게 연락 주십시오. 프리셋 목록에 추가해 드리겠습니다.

릴리스는 -> 여기에서 확인할 수 있습니다.

git checkout tags/VERSION_NUM # 로컬/Compose -> 예시: git checkout tags/v25.7.7

  • 내 NVIDIA/ROCm/XPU/MPS GPU가 감지되지 않나요?? -> GPU 이슈 Wiki 페이지

  • CPU는 느립니다 (서버 SMP CPU에서 더 나음). 반면 GPU는 거의 실시간 변환이 가능합니다. 이에 대한 논의 (제로샷 음성 복제 (Zero-shot voice cloning) 기능은 없으며, Siri 수준의 음성이지만 CPU보다 훨씬 빠릅니다).

  • "의존성 (Dependency) 문제가 발생합니다" - 그냥 Docker를 사용하세요. 완전히 독립적으로 구성되어 있으며 헤드리스 (Headless) 모드를 지원합니다. 더 많은 정보는 docker run 명령 끝에 --help 파라미터를 추가하여 확인하세요. - "오디오가 잘리는 문제가 발생합니다!" - 제발 이 문제에 대해 이슈 (Issue)를 생성해 주세요. 저희는 모든 언어를 구사하지 못하므로, 문장 분할 로직을 미세 조정 (Fine-tune)하기 위해 사용자들의 조언이 필요합니다.😊

  • 모든 기능은 공개 기여 (Contributions)에 열려 있습니다 ⭐

  • 지원되는 언어를 사용하는 분들의 모델 개선 도움 요청 ⭐

  • 변환 시작 전 블록/챕터 미리보기

  • 정밀한 텍스트 수정을 위한 문장 단위 편집

  • 음성, 일시 정지, 휴지기 등을 위한 SSML 태그 통합

  • 다양한 언어로 제공되는 -h -help 파라미터 정보

  • PDF / JPG / BMP / PNG / TIFF를 위한 OCR 스캐닝

  • 여기서 언급된 Notebooks 폴더

  • 중국어 텍스트 분할 시 단어가 잘리지 않도록 하고 휴지기 타이밍을 개선 (여기서 언급됨)

  • Dockerfile

  • Docker compose

  • Podman compose

  • Kaggle Notebook

  • Google Colab Notebook

  • iOS 앱 제작

  • Android 앱 제작

  • Audiobookshelf 통합

  • eBook 번역 옵션

  • 출력 형식 선택

  • eBook 폴더 일괄 처리 (Batch)

  • 멀티프로세싱 (Multiprocessing) 변환

  • eBook 폴더 일괄 변환

  • GPU 장치 감지

  • 음성 복제 (Voice cloning) 업로드를 위한 참조 오디오 노이즈 제거 (Denoise)

  • 커스텀 모델 업로드 (현재 XTTSv2만 가능, 요청 시 추가 예정)

  • XTTSv2, fairseq, VITS, Piper를 위한 최소한의 유럽 포르투갈어 언어 모델 추가 (도움 환영)

  • XTTSv2, fairseq, VITS, Piper를 위한 최소한의 신디(Sindhi)어 언어 모델 추가 (도움 환영)

  • XTTSv2

  • Bark

  • Fairseq

  • VITS

  • Tacotron2

  • YourTTS

  • Tortoise

  • GlowTTS

  • Piper

  • GPT-SoVITS (https://github.com/RVC-Boss/GPT-SoVITS)

  • OpenVoice (https://github.com/myshell-ai/OpenVoice)

  • fish-speech (https://github.com/fishaudio/fish-speech)

  • ChatTTS (https://github.com/2noise/ChatTTS)

  • CosyVoice (https://github.com/FunAudioLLM/CosyVoice)

  • F5-TTS (https://github.com/swivid/f5-tts)

  • chatterbox (https://github.com/resemble-ai/chatterbox)

  • Supertonic (https://github.com/supertone-inc/supertonic)

  • Spark-TTS (https://github.com/sparkaudio/spark-tts)

  • index-tts (https://github.com/index-tts/index-tts)

  • MeloTTS (https://github.com/myshell-ai/MeloTTS)

  • Kokoro-TTS (https://github.com/hexgrad/kokoro)

  • OmniVoice (https://github.com/k2-fsa/OmniVoice)

  • Zonos (https://github.com/Zyphra/Zonos)

  • Style-TTS2 (https://github.com/yl4579/StyleTTS2)

  • Orpheus-TTS (https://github.com/canopyai/Orpheus-TTS)

  • NewTTS (https://github.com/neuphonic/neutts?tab=readme-ov-file)

  • VIbeVoice (https://github.com/vibevoice-community/VibeVoice)

  • Qwen3-TTS (https://huggingface.co/spaces/Qwen/Qwen3-TTS)

  • Arabic (ara)

  • Chinese (zho)

  • English (eng)

  • Spanish (spa)

  • French (fra)

  • German (deu)

  • Italian (ita)

  • Portuguese (por)

  • Polish (pol)

  • Turkish (tur)

  • Russian (rus)

  • Dutch (nld)

  • Czech (ces)

  • Japanese (jpn)

  • Hindi (hin)

  • Bengali (ben)

  • Hungarian (hun)

  • Korean (kor)

  • Vietnamese (vie)

  • Swedish (swe)

  • Persian (fas)

  • Yoruba (yor)

  • Swahili (swa)

  • Indonesian (ind)

  • Slovak (slk)

  • Croatian (hrv)

  • 🍎 Mac Intel x86

  • 🪟 Windows x86

  • 🐧 Linux x86

  • 🖥️🍏 Apple Silicon Mac

  • 🪟💪 ARM Windows

  • 🐧💪 ARM Linux

모델 학습용 추가 기능 (훈련 및 기타 용도) (모든 지원 Coqui-tts 모델 및 piper-tts를 하나의 쉬운 명령어로)

  • 이 @DrewThomasson에 대한 정보: 그는 현재 이것의 개발을 진행 중이며, 작업 중인 저장소는 여기입니다.

  • coqui tts에서 모든 coqui-tts 모델을 ljspeech 형식 학습 레시피로 사용할 수 있는 사용하기 쉬운 훈련 GUI를 만드세요. {

  • 함수와 클래스 사이를 제외하고는 코드 사이에 빈 줄을 두지 마세요.

  • dict() 및 json을 제외한 모든 키에는 작은따옴표(')를 사용하세요. dict['key']는 항상 작은따옴표로 호출합니다.

  • 탭 대신 4개의 공백(space)으로 들여쓰기를 하세요.

  • 모든 함수와 그 인자 선언 및 반환 값에 대해 엄격한 타이핑 (strict typing)을 적용하세요.

  • 인자와 그 타입 사이, 그리고 함수와 "->" 및 반환 값 사이에는 공백을 두지 마세요.

예시:

import json
from typing import Optional
def get_user(user_id:int, users:list[dict])->Optional[dict]:
...

우리는 개발 테스트를 위해 다음과 같은 모든 종류의 하드웨어를 허용합니다:

  • CUDA >= 11.8을 지원하는 Nvidia
  • Intel XPU 카드
  • ROCm >= 5.7을 지원하는 AMD ROCm 카드

@DrewThomasson, 혹시라도 도움을 주고 싶다면 언제든 환영합니다! 😃

Coqui TTS: Coqui TTS GitHub
Calibre: Calibre Website
FFmpeg: FFmpeg Website

  • @shakenbake15 님, 더 나은 챕터 저장 방식에 감사드립니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0