AB Audiobooker
Open source

Books deserve a voice.

Convert EPUB and TXT books into professionally narrated audiobooks with multi-voice synthesis, dialogue detection, and emotion inference.

Create

audiobooker new mybook.epub

Cast

audiobooker cast narrator bm_george --emotion calm

Render

audiobooker render

Features

Everything you need to turn text into audiobooks.

Multi-voice synthesis

Assign unique voices to each character. Narration, dialogue, and inner monologue each get their own voice.

Dialogue detection

Automatically identifies quoted dialogue vs narration and attributes speech to the correct speaker.

Emotion inference

Rule-based and lexicon-powered emotion labeling gives each line the right tone and delivery.

Voice suggestions

Explainable, ranked voice recommendations for every speaker based on character traits and context.

Review before render

Human-editable review format lets you correct attributions and emotions before committing to audio.

Persistent cache

Resume failed renders without re-synthesizing completed chapters. Pick up right where you left off.

Usage

Install

# Clone and install
git clone https://github.com/mcp-tool-shop-org/audiobooker
cd audiobooker
pip install -e .

# Required: voice-soundboard for TTS
pip install -e ../voice-soundboard

# Required: FFmpeg for audio assembly
# Windows: winget install ffmpeg
# Mac: brew install ffmpeg

Quick workflow

# Create project from EPUB
audiobooker new mybook.epub

# Get voice suggestions & auto-apply
audiobooker cast-suggest
audiobooker cast-apply --auto

# Compile, review, render
audiobooker compile
audiobooker review-export
audiobooker render

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 new <file>
Create project from EPUB/TXT
audiobooker cast <char> <voice>
Assign voice to character
audiobooker cast-suggest
Suggest voices for uncast speakers
audiobooker cast-apply --auto
Auto-apply top voice suggestions
audiobooker compile
Compile chapters to utterances
audiobooker review-export
Export script for human review
audiobooker review-import <file>
Import edited review file
audiobooker render
Render audiobook to M4B
audiobooker info
Show project information
audiobooker voices
List available voices
audiobooker chapters
List chapters
audiobooker speakers
List detected speakers