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 ffmpegQuick 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.m4bPython 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")