feat(books): add read-aloud generation

Generate a synced read-aloud EPUB from a book's EPUB and audiobook through an
optional STAlign worker (Docker on CPU, or native with MLX on Apple Silicon),
with review, re-sync, replace in place, restart recovery and live progress on
the Files tab. Book details also stack the ebook and audiobook covers when
both exist. See docs/READ_ALOUD.md.
This commit is contained in:
neon
2026-10-21 23:44:37 +00:00
parent 99aa7dce70
commit 992224f2e8
154 changed files with 69074 additions and 271 deletions
+9
View File
@@ -71,6 +71,15 @@ COVER_SLOTS_BACKFILL_MODE=background
# AUDIOLESS_EPUB_MAX_METADATA_BYTES=16777216
# AUDIOLESS_EPUB_MAX_OUTPUT_BYTES=2147483648
# Read-aloud generation (optional)
# Run the STAlign worker separately (docs/READ_ALOUD.md), then configure its private URL and a
# shared random token. A native worker listens on 127.0.0.1:8787 unless READ_ALOUD_WORKER_HOST is
# set. Generate the token with: openssl rand -hex 32
# READ_ALOUD_WORKER_URL=http://read-aloud-worker:8787
# READ_ALOUD_WORKER_TOKEN=
# READ_ALOUD_MAX_OUTPUT_BYTES=21474836480
# READ_ALOUD_WORKER_REQUEST_TIMEOUT_MS=30000
# KOReader plugin source folder served by the preconfigured plugin download (optional).
# Defaults to <project-root>/koreader-plugin/bookorbit.koplugin in dev; the Docker image sets it.
# KOREADER_PLUGIN_PATH=../koreader-plugin/bookorbit.koplugin