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")