GitHub - DrewThomasson/ebook2audiobook: Generate audiobooks from e-books, voice cloning & 1158+ languages!
핵심 포인트
- 1ebook2audiobook은 XTTSv2, Piper-TTS 등 다양한 Text-to-Speech 엔진을 활용하여 E-book을 챕터 및 메타데이터를 포함한 오디오북으로 변환하는 도구입니다.
- 2이 프로젝트는 음성 복제, 1158개 이상의 언어 지원, 광범위한 E-book 및 오디오 출력 형식 호환, 그리고 SML 태그를 통한 음성 전환 및 일시정지 제어 기능을 제공합니다.
- 3최소 2GB RAM과 1GB VRAM으로도 작동하며, Gradio 웹 인터페이스나 CLI를 통해 로컬 또는 Docker 환경에서 CPU, GPU 등 다양한 프로세서 유닛에서 유연하게 실행 가능합니다.
ebook2audiobook는 e-book을 챕터 및 메타데이터를 포함한 오디오북으로 변환해주는 강력한 도구입니다. 이 프로젝트는 XTTSv2, Piper-TTS, Vits, Fairseq, Tacotron2, YourTTS 등 다양한 Text-to-Speech(TTS) 엔진을 활용하며, 음성 클로닝(voice cloning)과 1158개 이상의 언어를 지원합니다.
주요 기능 및 특징:
- 다양한 파일 형식 지원: 입력으로는 .epub, .pdf, .mobi, .txt, .html, .rtf, .doc, .docx 등 매우 광범위한 e-book 및 문서 형식을 지원합니다. 이미지 기반 텍스트의 경우 OCR 스캔 기능을 통해 텍스트를 추출합니다. 출력 오디오북 형식으로는 .m4b, .m4a, .mp4, .webm, .mov, .mp3, .flac, .wav, .ogg, .aac 등 다양한 포맷을 제공합니다.
- 고품질 TTS 및 음성 클로닝: 거의 실시간에 가까운 속도와 높은 품질의 음성 합성을 제공합니다. 사용자의 음성 파일을 사용하여 선택적으로 음성을 클로닝(voice cloning)할 수 있으며, 이를 통해 생성된 오디오북에 개인화된 음성을 적용할 수 있습니다.
- 다국어 지원: 아랍어, 중국어, 영어, 스페인어, 프랑스어, 독일어, 이탈리아어, 포르투갈어, 폴란드어, 터키어, 러시아어, 네덜란드어, 체코어, 일본어, 힌디어, 벵골어, 헝가리어, 한국어, 베트남어, 스웨덴어, 페르시아어, 요루바어, 스와힐리어, 인도네시아어, 슬로바키아어, 크로아티아어, 타밀어, 덴마크어 등 1158개 이상의 언어 및 방언을 지원합니다.
- 저사양 환경 지원: 최소 2GB RAM / 1GB VRAM으로도 실행 가능하여 낮은 사양의 시스템에서도 활용할 수 있습니다. 권장 사양은 8GB RAM / 4GB VRAM입니다.
- SML 태그: 텍스트 내에
[break],[pause],[pause:N],[voice:/path/to/voice/file]...[/voice]와 같은 SML(Speech Markup Language) 태그를 삽입하여 오디오 생성 시 끊김, 일시 정지, 음성 전환 등을 세밀하게 제어할 수 있습니다. 이는 사용자가 오디오북의 흐름과 음성을 정교하게 조절할 수 있도록 돕는 핵심적인 기능입니다. - 커스텀 모델 지원: 사용자가 직접 학습시킨 TTS 모델(XTTSv2 전용)을 사용하거나,
ebook2audiobook팀에서 제공하는 Fine-tuned 모델을 활용할 수 있습니다. XTTSv2 커스텀 모델의 경우config.json,model.pth,vocab.json,ref.wav파일이 포함된.zip형식을 요구합니다.
코어 방법론 (Core Methodology):
ebook2audiobook의 핵심은 다양한 Text-to-Speech(TTS) 엔진의 통합 및 최적화된 워크플로우를 통해 e-book 텍스트를 고품질 오디오로 변환하는 것입니다.
- 입력 처리:
- E-book 파싱:
ebook2audiobook은 Calibre의 파싱(parsing) 라이브러리를 활용하여 다양한 e-book 형식에서 텍스트 콘텐츠를 추출합니다..epub또는.mobi와 같은 구조화된 형식의 경우 자동 챕터 감지 및 메타데이터 추출을 시도하여 오디오북에 챕터 정보를 포함시킬 수 있습니다. - OCR (Optical Character Recognition): 텍스트가 이미지 형태로 포함된 PDF나 스캔된 문서의 경우,
tesseract와 같은 OCR 엔진을 사용하여 이미지에서 텍스트를 추출하고, 이를 TTS 엔진의 입력으로 사용합니다. - 텍스트 전처리: 추출된 텍스트는 TTS 엔진에 전달되기 전에 정규화(normalization), 문장 분리(sentence splitting) 등의 전처리를 거칩니다. 특히 SML 태그(예:
[break],[pause],[voice:...])가 포함된 경우, 이 태그들을 파싱하여 TTS 엔진이 특정 오디오 특성을 적용하거나 음성을 전환하도록 지시합니다.
- E-book 파싱:
- TTS 엔진 선택 및 실행:
- 다중 TTS 엔진 지원: 이 도구는 XTTSv2, BARK, VITS, FAIRSEQ, TACOTRON2, YOURTTS 등 여러 오픈소스 TTS 엔진을 통합합니다. 사용자는
--tts_engine플래그를 통해 특정 엔진을 명시적으로 선택할 수 있으며, 선택하지 않으면 기본적으로 언어에 따라 최적의 엔진이 결정됩니다.- XTTSv2: 음성 클로닝(zero-shot voice cloning) 기능이 뛰어나며, 고품질의 자연스러운 음성을 생성합니다.
--temperature,--length_penalty,--num_beams,--repetition_penalty,--top_k,--top_p,--speed등 세부적인 음성 합성 파라미터를 조절할 수 있습니다. 특히, 레퍼런스 음성(reference audio clip)을 기반으로 음색을 복제하여 오디오북 전체에 일관된 음성을 유지하거나,[voice:/path/to/voice/file]...[/voice]태그를 통해 챕터나 문단별로 음성을 변경할 수 있습니다. - BARK: 감정적인 스펙트럼이 넓은 음성 생성이 가능하며,
text_temp와waveform_temp를 통해 텍스트 및 파형 생성의 무작위성을 조절할 수 있습니다. - Piper-TTS, VITS, Fairseq, Tacotron2, YourTTS: 이 엔진들은 각각 다른 아키텍처와 성능 특성을 가지며, 특정 언어나 속도, 품질 요구사항에 따라 선택될 수 있습니다. 예를 들어, Piper-TTS는 CPU에서도 빠른 속도로 음성을 생성하는 데 강점이 있습니다.
- XTTSv2: 음성 클로닝(zero-shot voice cloning) 기능이 뛰어나며, 고품질의 자연스러운 음성을 생성합니다.
- 음성 클로닝(Voice Cloning):
--voice옵션으로 사용자의 음성 파일을 제공하면, XTTSv2와 같은 클로닝 지원 엔진이 해당 음성 특성을 학습하여 e-book의 텍스트를 클로닝된 음성으로 읽어줍니다. SML 태그를 통해 오디오북 내에서 여러 클로닝된 음성을 전환하는 것도 가능합니다.
- 다중 TTS 엔진 지원: 이 도구는 XTTSv2, BARK, VITS, FAIRSEQ, TACOTRON2, YOURTTS 등 여러 오픈소스 TTS 엔진을 통합합니다. 사용자는
- 오디오 출력 및 후처리:
- 오디오 포맷 변환: TTS 엔진에서 생성된 오디오는
--output_format으로 지정된.m4b,.mp3,.wav등 다양한 오디오 포맷으로 변환됩니다.m4b포맷은 챕터 정보, 메타데이터 등을 포함할 수 있어 오디오북에 적합합니다. - 챕터링 및 메타데이터: 추출된 챕터 정보와 e-book의 메타데이터(제목, 저자 등)는 최종 오디오 파일에 임베딩되어 오디오북으로서의 완결성을 높입니다.
- FFmpeg 활용: 오디오 포맷 변환 및 오디오 조작에는 FFmpeg 라이브러리가 활용됩니다.
- 오디오 포맷 변환: TTS 엔진에서 생성된 오디오는
사용법:
이 도구는 크게 Gradio 기반의 웹 GUI 인터페이스와 CLI(명령줄 인터페이스)를 통한 헤드리스(headless) 모드로 실행될 수 있습니다. 로컬 환경에서 직접 실행하거나, Docker/Podman 컨테이너를 통해 환경 의존성 없이 실행하는 것이 권장됩니다. 특히 Docker는 GPU 가속(CUDA, ROCm, XPU, JETSON 등)을 쉽게 구성할 수 있도록 다양한 이미지를 제공합니다.
- 로컬 실행:
ebook2audiobook.cmd(Windows) 또는./ebook2audiobook.command(Linux/MacOS) 스크립트를 사용하여 GUI 또는 헤드리스 모드로 실행합니다. - Docker 실행:
docker build명령으로 이미지를 빌드한 후,docker run명령을 사용하여 컨테이너를 실행합니다.--headless모드에서는 입력 e-book과 출력 오디오북 폴더를 컨테이너 내부에 마운트하여 사용할 수 있습니다.docker-compose또는podman-compose를 통해 복잡한 실행 환경을 쉽게 관리할 수도 있습니다.
하드웨어 요구사항:
- RAM: 최소 2GB, 권장 8GB
- VRAM: 최소 1GB, 권장 4GB
- CPU/GPU: CPU, XPU (Intel, AMD, ARM), CUDA, ROCm, JETSON, MPS (Apple Silicon CPU)를 지원합니다. 최신 TTS 엔진은 CPU에서 매우 느리므로 GPU 사용이 권장됩니다.
제한사항 및 주의사항:
- 이 도구는 DRM(Digital Rights Management)이 없는 합법적으로 취득한 e-book에만 사용해야 합니다.
- EPUB 형식은 챕터, 문단 등 표준 구조가 부족하여, 오디오로 변환하고 싶지 않은 텍스트는 수동으로 제거해야 최상의 결과를 얻을 수 있습니다.
- 오디오 잘림(truncated audio) 현상과 같은 버그는 GitHub 이슈 트래커를 통해 보고하여 개선에 기여할 수 있습니다.
- 종속성 문제 발생 시 Docker 사용이 강력히 권장됩니다.