Skip to main content

Generate audiobooks (mp3 files per chapter) from ebooks (currently only supports the epub format).

Project description

audiobook-generator - Generate audiobooks (epub) from ebooks (one mp3 per chapter)

Flow

graph TD;
    A[Input file] --> B["Convert to text and chapterize (Optionally extract out the cover image)"];
    B --> C[Transform to audio files];

Usage

Prerequisites

  • Python 3.10+ (This program was tested on 3.12)
  • (Optional) Install espeak-ng (On Debian/Ubuntu, run apt install -y espeak-ng)
  • (Development only) uv

For End Users

  • You don't need to clone this repository and you can install either way:
    • Using pip: python -m pip install audiobook-generator (virtual environment highly recommended)
    • Using pipx: pipx install audiobook-generator
    • NOTE For Windows users, there is one extra step needed to make cuda(Nvidia) GPU is used when available:
      • If using pip and virtual environment, run this after the above pip install command (with the virtual environment activated first)
        • pip install torch --index-url https://download.pytorch.org/whl/cu124 --force
      • If using pipx, run this command instead:
        • pipx runpip audiobook-generator install torch --index-url https://download.pytorch.org/whl/cu124 --force
      • Technical details on why this is needed is described at the "Why you need that extra pip install step for Windows?" section.
  • Convert your epub file to audiobooks via the command
    • abg <epub path> <audio output directory>
  • If you want to see all the command line switches, just run abg -h

For Development

  • This program uses uv for dependency management and execution in development, install it first if you haven't done so.
  • To run the program from its source:
    • Clone this repository and cd inside.
    • (Do it ONCE only at the first time) Run uv sync to create the virtual environment in the .env directory and download all the dependencies.
    • Then run the following command
      • uv run -m audiobook_generator.main ...

CPU or GPU?

The selection to run the model on CPU or GPU is automatic, meaning:

  • On Windows/WSL/Linux, If you have Nvidia graphic card with the driver properly installed, the model will be loaded to GPU (cuda) and executed, otherwise, the CPU is used (which is slower compared to GPU)
  • On Mac, you need to set the environment variable PYTORCH_ENABLE_MPS_FALLBACK=1 for it to run on GPU (because at the time of writing, the MPS support in PyTorch is not complete and it won't work without the CPU fallback), otherwise it will run on CPU.

Why you need that extra pip install step for Windows?

(Thanks to @notimp for spotting this issue.)

If you go to pytorch, you will see that to install pytorch (only) on Windows, you need to specify the --index-url parameter (e.g. pip3 install torch --index-url https://download.pytorch.org/whl/cu124). When using uv for development, this is handled by this section of the pyproject.toml file:

[tool.uv.sources]
torch = [
    { index = "pytorch-cu124", marker = "sys_platform == 'win32'" },
]

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true

So running under uv in development, the torch dependency are installed correctly. However when it's packaged and published to PyPI, it seems that this special specification of the torch index part is not respected by pip and when you run pip (or pipx) install, it just runs pip install torch on Windows without that --index-url parameter, which installs a version that doesn't support cuda/GPU. Currently I don't see how I can resolve this in packaging as I guess python package specification may not support different dependency installation parameters on different platforms, or maybe I haven't digged deep enough. So for now, this extra step is required to install the correct version of torch on Windows.

Misc

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audiobook_generator-1.0.5.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

audiobook_generator-1.0.5-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file audiobook_generator-1.0.5.tar.gz.

File metadata

  • Download URL: audiobook_generator-1.0.5.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for audiobook_generator-1.0.5.tar.gz
Algorithm Hash digest
SHA256 0dc0d257b18b0259da18f08dc2b3fb490e5c29200af4abcd08729dd4f6fa1202
MD5 0a7b4a148f31243713b6955b5f52db56
BLAKE2b-256 e6d01d1e42428aa882880d38a5e81b2e61a90595fc48b0c9483fdc941a0389d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for audiobook_generator-1.0.5.tar.gz:

Publisher: python-publish.yml on houtianze/audiobook-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file audiobook_generator-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for audiobook_generator-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 7b7071d5acd66bc976f3e9080075f318f1fd522141456e6b9891bb1d228048d3
MD5 b2140dba8f12c3c2b5833c69b45a0049
BLAKE2b-256 ec15d0745e65a1436dd4b57f25fff9ff33563662be234fbb759c18d0e4ea813c

See more details on using hashes here.

Provenance

The following attestation bundles were made for audiobook_generator-1.0.5-py3-none-any.whl:

Publisher: python-publish.yml on houtianze/audiobook-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page