Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Audible

Local, voice-cloned generative audio for long-form text. Audible runs Chatterbox TTS on Apple Silicon through MLX, turning EPUB passages into natural WAV narration while keeping the model, voice references, and generated audio on your own machine.

Audible reader playing an EPUB Audible local audiobook library

Generative-audio pipeline

Long-form narration has a different set of constraints from a one-off text-to-speech request: inference should not block listening, repeated text should not be rendered twice, and unfinished work must survive a restart. Audible treats those as first-class parts of the generation system.

  • Voice-conditioned synthesis: Chatterbox generates speech from text plus a local reference recording.
  • MLX-native execution: A dedicated worker owns model loading and inference, matching the thread-local GPU model lifecycle on Apple Silicon.
  • Playback-first scheduling: A priority queue puts the passage the listener requested ahead of background book precaching.
  • Content-addressed audio: Each WAV cache key covers text, model, reference voice, language, and synthesis controls, making generation deterministic and deduplicated.
  • Durable generation jobs: SQLite records precache state and segment attempts so longer jobs resume after an app restart.

The reader is the proving ground for the pipeline: upload a book, configure a reference voice, and have the next passage ready when it is needed.

Listening experience

  • Upload EPUB files into a persistent local library.
  • Create a voice from a reference recording with Chatterbox TTS on Apple Silicon.
  • Read in a focused, adjustable reader while the active passage is highlighted.
  • Resume a book after a reload, move by chapter, and seek with familiar audiobook controls.
  • Start synthesis at the passage being played; optional background precaching fills in the rest without blocking the listener.

Application architecture

FastAPI exposes the library, reference-audio, TTS, cache, and job APIs. A lightweight Vite application, written in vanilla JavaScript and styled with Tailwind, handles the reader and player. EPUBs receive content-hash identifiers; generated audio and the job ledger are stored locally in SQLite-backed runtime data.

Run locally

Audible is intended for a machine on your local network. Python 3.11+ and Node.js are required; voice cloning currently uses MLX, so Apple Silicon is the intended runtime.

git clone https://github.com/d-r-e/audible.git
cd audible
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .

cd web
npm install
npm run build
cd ..

python -m audible

Open http://127.0.0.1:8765, upload an EPUB, then add a short voice reference from the voice settings sheet. The first narration request loads the model and will take longer than later requests.

For frontend iteration, run npm run dev from web/; Vite proxies API and reference-audio requests to the backend on port 8765.

Project layout

audible/       FastAPI app, EPUB processing, TTS providers, cache, and job ledger
web/           Vite frontend and reader/player UI
tests/         Parser, API, cache, library, and integration coverage
data/          Local SQLite library, voice references, covers, and audio cache (ignored)

Privacy

Books, voice references, generated audio, and reading progress remain in the local data directory. Use recordings and books only when you have the right to do so.

About

Local voice-cloned audiobook generation with Chatterbox TTS on MLX

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages