Usage
Two ways to work
Section titled “Two ways to work”One-shot — parse, auto-cast, compile, render, and master in a single command:
audiobooker make mybook.epub --acx --format m4bStaged — full control at each step (recommended when you care about casting):
audiobooker new mybook.epub # parse (EPUB/PDF/DOCX/TXT/MD or a folder)audiobooker cast --interactive # guided per-character castingaudiobooker compile # dialogue, speakers, emotionaudiobooker report # unknown-attribution rate + weak linesaudiobooker review-export # human-editable scriptaudiobooker review-import mybook_review.txtaudiobooker render --acxaudiobooker master-check mybook.m4bCasting
Section titled “Casting”Casting is the one creative decision in the pipeline. Audiobooker gives you several routes:
audiobooker cast Alice af_bella --emotion warm # assign one voice directlyaudiobooker cast-suggest # ranked, explainable suggestionsaudiobooker audition Alice --render # A/B the top candidates as audioaudiobooker cast --interactive # walk each uncast speakeraudiobooker cast-fill --gender female --voices af_bella,af_sky,af_novaaudiobooker cast-apply --auto # apply the top suggestion to allReuse a cast across a series with presets, and hand a CSV to a collaborator:
audiobooker cast-preset save mystery-seriesaudiobooker cast-preset apply mystery-series # on book 2audiobooker cast-export --format csv cast.csv # edit in a spreadsheetaudiobooker cast-import --format csv cast.csvPublishing to ACX / Audible
Section titled “Publishing to ACX / Audible”audiobooker render --acx # loudnorm -20 LUFS, -3 dBTP peak, 44.1k, 192kaudiobooker master-check book.m4b # PASS/FAIL: RMS [-23,-18], peak <= -3 dB, floor <= -60 dBaudiobooker sample --duration 180 # a mastered retail sample clipaudiobooker podcast --base-url https://cdn.example.com/ # per-chapter audio + RSSmaster-check verifies the measurable ACX specs (loudness, peak, noise floor) — ACX also has subjective/QC criteria a tool can’t certify.
Output formats
Section titled “Output formats”--format m4b (chapter markers + cover + series tags) · mp3 · opus · flac. Add --split for one file per chapter, --bitrate 192k to override quality, and export-chapters for a cue/ffmetadata/json chapter sheet.
Review workflow
Section titled “Review workflow”Dialogue attribution is hard; human correction is fast. Export a script, fix it, re-import — nothing is silently changed (you’re warned if an edited block matches no chapter).
audiobooker review-export# === Chapter 1 === [id:ab12cd] <- don't edit the [id:...] tag## @narrator# The door creaked open.## @Unknown <-- change to @Marcus# "Hello?" he whispered.## @Sarah (worried:0.7) <-- emotion + optional intensity# "Is anyone there?"audiobooker review-import mybook_review.txtConfiguration
Section titled “Configuration”Set defaults once in .audiobookerrc (TOML) next to your book, or [tool.audiobooker] in pyproject.toml. Precedence: CLI flag > project config > ~/.audiobookerrc > defaults.
output_format = "m4b"output_profile = "acx"lang = "en"jobs = 4booknlp_mode = "auto"Pluggable TTS engines
Section titled “Pluggable TTS engines”audiobooker render --engine piper # or set AUDIOBOOKER_ENGINE=piperA plugin package registers itself via the audiobooker.tts_engines entry-point group — no fork required.
Python API
Section titled “Python API”from audiobooker import AudiobookProject
project = AudiobookProject.from_epub("mybook.epub") # or from_docx / from_pdf / from_folder / from_stringproject.cast("narrator", "bm_george", emotion="calm")project.cast("Alice", "af_bella", emotion="warm")project.compile() # dialogue, speakers, emotionproject.render("mybook.m4b") # resumes from cache on re-runproject.save("mybook.audiobooker")render(...) and compile(...) accept an injected engine= (any object implementing the TTSEngine protocol) and a progress_callback= — so you can embed Audiobooker in a GUI or service.