It turns messy books into chaptered audio files
Ebook2Audiobook covers the whole conversion path rather than stopping at text-to-speech. It can read EPUB, MOBI, PDF, text, HTML, office documents, images, and several older ebook formats. OCR handles image-based pages. The output list includes M4B, MP3, FLAC, WAV, OGG, AAC, and video containers, with chapter and metadata handling aimed at audiobook players.
This breadth is useful because ebook extraction is usually the tedious part. It is also where errors enter. The README warns that EPUB has no standard way to mark chapters, paragraphs, prefaces, or other structure and tells users to remove unwanted text manually. Scanned PDFs add OCR mistakes. A converter can finish successfully while reading headers, footers, page numbers, or navigation text aloud. Preview the extracted blocks before committing hours of speech generation.
Eight speech engines trade simplicity for choice
The named engines include XTTSv2, Bark, Fairseq, VITS, Tacotron2, Tortoise, GlowTTS, and YourTTS. Model selection depends on language and device. The README advertises 1,158 languages through the wider model set, while its prominent language table lists a smaller group of common choices. That is catalog coverage, not proof that every language has equal pronunciation, segmentation, or voice quality.
Voice cloning accepts a reference recording, and custom models can be uploaded as ZIP files containing engine-specific artifacts. SML tags add fixed or ranged pauses and can switch voice files within text. Those controls are valuable for dialogue and chapter pacing. They also turn conversion into an editorial process: names, numbers, abbreviations, foreign passages, and sentence boundaries need listening checks, especially for languages the maintainers say they do not speak.
What happened when we ran it
Our fresh Python 3.12 Debian sandbox installed 289 packages in 169 seconds. Dependencies occupied 7,103 MB, before downloading extra voice models or writing audiobook output. commit 4b182a3 contained 644 files, about 87,248 lines of source, and a 48.3 MB checkout. The build completed successfully in 10 seconds.
The repository supplied no test script or target for the harness, so the test step was skipped. That means we have no pass count for parsing, chapter detection, OCR, model selection, resume behavior, or audio assembly. It is incorrect to turn a skipped step into a passing suite. We found 8 CI workflow files, a Dockerfile, and Compose configuration, but no tests directory.
Pip-audit reported 44 known vulnerabilities in the installed Python environment. The supplied measurement does not list package names, advisory identifiers, or severity, so this review does not claim which dependency is responsible or whether every issue is reachable. Forty-four is still a material result. Before processing private books or exposing the GUI, export the audit details, update what the project supports, and isolate the remaining dependency tree.
Device support creates several installation paths
The README covers CPU, CUDA, ROCm, Intel XPU, Jetson, and Apple Silicon. Minimum figures are 2 GB of RAM and 1 GB of VRAM, with 8 GB and 4 GB recommended. It also warns that modern speech engines are very slow on CPU and suggests lower-quality choices there. Hardware compatibility does not say how quickly a particular book and voice will finish, and our sandbox did not measure synthesis time.
Container instructions provide different device tags and pass through GPU or device nodes. Local scripts may install Homebrew on macOS or Scoop on Windows to obtain missing programs. FFmpeg and Calibre appear in the release troubleshooting notes, while model files add their own downloads. The 7,103 MB dependency result makes the Docker path attractive for isolation, although image and model storage will increase the disk budget further.
Resume and batch controls suit long conversions
Headless mode accepts one ebook, a directory of books, raw text, a default voice, per-book voice mapping, translation, output format, and device selection. A session option can resume after interruption or reuse custom models and cloned voices. Audiobookshelf integration can send completed work to an existing server using its URL, API token, and library identifier.
These controls make a dedicated conversion machine plausible. Mount separate directories for input books, voices, models, temporary chunks, and finished audio, as the Docker examples do. Back up finished files and the state needed to resume. Do not treat the Gradio --share switch as a deployment plan: it creates a public link to a file-processing interface, and the README does not document an authentication layer around that flag.
Legal and voice consent limits belong in the workflow
The project says it is intended only for non-DRM, legally acquired ebooks. It does not remove DRM and does not grant narration or distribution rights. Personal accessibility conversion, internal testing, and publishing an audiobook are different legal uses. Check the book's license and local rules before sharing generated audio.
Voice cloning needs a similar rule. The README describes using your own voice file, which is the safe default. A production team should require documented consent for every speaker reference and keep those recordings private. Demonstration names or readily available clips do not establish permission to imitate someone. Generated speech also needs disclosure where a listener could reasonably mistake the voice for a real performance.
Current releases do not offset the missing test gate
GitHub showed 20,053 stars, 5 open issues and pull requests, an Apache-2.0 license, and an August 25, 2026 last push. Release v26.8.20 was published August 22 and adds Audiobookshelf support. Its notes tell existing users to clear the tmp and run folders before installing, and give Windows recovery advice involving Miniforge, Scoop, FFmpeg, and Calibre.
The active release cadence and detailed README make this more usable than a collection of loose TTS scripts. The lab result sets hard limits on confidence: a 10-second build passed, no tests ran, 44 dependency vulnerabilities were reported, and the environment occupied 7,103 MB. That profile is acceptable for a quarantined personal workstation after review. It is not a sound default for an exposed multi-user conversion service.

