AB Audiobooker
Open source

Books deserve a voice.

Convert EPUB, PDF, DOCX, and text into professionally narrated, multi-voice audiobooks — with dialogue detection, emotion, and ACX/Audible-ready mastering.

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.

Many inputs

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

ACX/Audible mastering

render --acx masters to spec; master-check reports PASS/FAIL on loudness, peak, and noise floor.

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; podcast RSS; persistent cache with resume.

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 cast --interactive
audiobooker compile
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 report
Compile quality: unknown rate + weak attributions
audiobooker review-export / -import
Human-editable review round-trip
audiobooker render --acx
Render + master to ACX/Audible 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)