Vocalis

Your books.
Read aloud.

Vocalis turns an EPUB into a chaptered M4B audiobook, narrated on your own machine — the web app runs in Docker, and the narration runs on your Mac's GPU. Nothing is sent to a cloud service.

Get it on GitHub Explore features
Self-hosted Open source Installable PWA Apple Silicon GPU
Why Vocalis

An audiobook studio in your house

Cloud text-to-speech means uploading your books and paying per word. Vocalis narrates on hardware you already own — and hands you a real audiobook, not a folder of MP3s.

Nothing leaves home

Your books and the finished audio never touch a cloud TTS service. The server and the narrator talk to each other over your own network — that's the whole loop.

A real audiobook out

The output is a chaptered M4B — your book's actual chapters, ready for any audiobook player, not a pile of loose audio files.

Built for your hardware

The web app, API, and job queue run in Docker — a NAS is a good home. Narration runs natively on Apple Silicon's GPU through Metal, so a full-length book takes hours, not days.

One-command narrator

The Setup page hands you a single line to paste into your Mac's terminal. It installs everything, registers a launch agent, and the narrator starts with the machine.

Everything inside

From EPUB to audiobook, unattended

Upload a book, pick a voice, and come back to a finished audiobook.

Ten narrator voices

A range of built-in voices ships with the server, ready on first start — and you can add your own.

Chapters preserved

Your book's chapter structure carries straight into the M4B, so scrubbing and bookmarks work like a store-bought audiobook.

Queue & live status

Jobs run through a Postgres queue with progress, cancel, and a heartbeat that shows your narrator's hardware — even mid-book.

Crash-safe by design

The narrator runs as a service and orphaned work is re-queued — a crash costs only the chapters in flight, never the book.

Locked with one password

The first visit asks you to choose a password, and the server is locked to it from then on.

Installable PWA

Add the web app to your phone or dock and manage the queue from anywhere in the house.

Two halves, nothing shared

The server (web UI, API, Postgres) lives in Docker — on a NAS, if you like. The narrator is a native process on your Mac that fetches each book over HTTP, synthesizes on the GPU, and posts the finished audiobook back. It never touches the server's filesystem, so the two halves can be different machines with nothing shared between them.

The name says the rest: vocalis is Latin for "of the voice."

Run it yourself

Self-host in three steps

Docker for the server, and a Mac with Apple Silicon for the narrator.

1

Start the server

Two commands — or paste the compose file straight into Portainer. Choose a password on first visit.

2

Enrol your Mac

Open Setup and run the one-line command it shows you. That's the whole narrator install.

3

Upload a book

Pick an EPUB and a voice, and come back to a chaptered M4B.

# 1 · the server (Docker)
cp .env.example .env
docker compose up -d

# 2 · the narrator (your Mac — from the Setup page)
curl -fsSL "http://<server>:8091/api/worker/install?key=…" | sh

Open http://<host>:8091, set your password, and the Setup page shows whether your narrator is connected and on what hardware.

DockerPostgreSQLFastAPIMetal / MPSPWAM4B
FAQ

Questions, answered

Do I need a Mac?
In practice, yes — for the narrator. Synthesis runs on Apple Silicon's GPU through Metal, which is what makes a full book take hours rather than days. The server half runs anywhere Docker does. (There's an untested CUDA path for Linux/NVIDIA; CPU-only works but is far too slow to finish a book.)
Is anything sent to the cloud?
Your books and audio never leave your machines — there's no cloud TTS API in the loop. The only outside download is the narrator fetching its model weights once on first run.
What do I get at the end?
A single chaptered M4B audiobook — your book's real chapter structure intact — ready for any audiobook player.
What voices are available?
Ten narrator voices ship built in and are ready the first time the stack starts. You can add your own later, and additions survive restarts and updates.
What if the narrator crashes mid-book?
The narrator runs as a service that restarts automatically, and orphaned chapters are re-queued — a crash costs only the chapters in flight, not the hours already narrated.