ABAudiobooker
Open source

Books deserve a voice.

Convert EPUB, PDF, DOCX, and text into professionally narrated, multi-voice audiobooks — with dialogue detection, emotion, and mastering to the ACX audio spec.

One-shot

audiobooker make mybook.epub --acx

Audition

audiobooker audition Sarah --render

Master-check

audiobooker master-check book.m4b

Features

Everything you need to turn text into audiobooks.

Multi-voice synthesis

A distinct voice per character, with ranked suggestions and an audition command to A/B candidates before you commit.

Dialogue & emotion

Detects quoted dialogue, attributes speakers (optional BookNLP co-reference), and infers emotion with adjustable intensity.

Attribution you can audit

Every line records how its speaker was decided — a speech tag, your correction, or a bare alternating-turn guess — and report counts the guesses separately. A guess cannot improve the score, so the number only moves the useful way.

Many inputs

EPUB, PDF, DOCX, Markdown, or a folder of per-chapter files — with TOC-driven chapter splitting and 7 language profiles.

ACX-spec mastering

render --acx masters to the ACX audio target; master-check reports PASS/FAIL on RMS loudness, peak and noise floor. Meeting the spec is not the same as being accepted — ACX’s standard flow is for human narration.

Review before render

A human-editable review format lets you correct attributions and emotions before a second of audio is rendered.

Pro output

M4B (chapters + cover + series tags), MP3, Opus, FLAC, WAV; podcast RSS; persistent cache with resume. Also on GHCR with ffmpeg inside.

Usage

Install

# Zero-install (Node)
npx @mcptoolshop/audiobooker --help

# Python
pipx install audiobooker-ai
pip install "audiobooker-ai[render]"   # with the TTS voice engine

# FFmpeg for audio assembly
# Windows: winget install ffmpeg
# macOS: brew install ffmpeg | Linux: apt install ffmpeg

Quick workflow

# One command: parse -> cast -> compile -> render -> master
audiobooker make mybook.epub --acx

# ...or staged, with control at each step:
audiobooker new mybook.epub
audiobooker compile
audiobooker speakers merge "Dr. Merrin" Merrin
audiobooker cast --interactive
audiobooker render --acx
audiobooker master-check mybook.m4b

Python API

From EPUB

from audiobooker import AudiobookProject

project = AudiobookProject.from_epub("mybook.epub")
project.cast("narrator", "bm_george", emotion="calm")
project.cast("Alice", "af_bella", emotion="warm")
project.compile()
project.render("mybook.m4b")

From text

from audiobooker import AudiobookProject

project = AudiobookProject.from_string(
    "Chapter 1\n\nHello world.",
    title="My Book"
)
project.compile()
project.render("mybook.m4b")

CLI Commands

Command
Description
audiobooker make <file>
One-shot: new -> compile -> cast -> render
audiobooker new <file|folder>
Create from EPUB/PDF/DOCX/TXT/MD or a folder
audiobooker cast --interactive
Guided per-character casting
audiobooker audition <char>
A/B candidate voices for one character
audiobooker cast-fill / cast-preset
Bulk-assign / reusable cast presets
audiobooker compile
Detect dialogue, attribute speakers, infer emotion
audiobooker speakers merge <from> <to>
Fold duplicate names into one cast slot
audiobooker report
Compile quality: unattributed rate, guessed speakers, the worst lines
audiobooker review-export / -import
Human-editable review round-trip
audiobooker render --acx
Render + master to the ACX audio spec
audiobooker master-check <file>
PASS/FAIL vs ACX loudness/peak/noise
audiobooker podcast / export-chapters
Podcast RSS / chapter cue sheet
audiobooker diagnose
Check environment (deps, engine, FFmpeg)