A little more life in every chapter

Your books.
A whole cast of voices.

Turn stories into audiobooks with a voice for every character. Create on your own hardware or use a speech API, then pick up where you left off on the web or Android.

Hear the difference

Breeze · Qwen · Inworld · ElevenLabs

01 / Press play

Same scene.
Three ways to tell it.

Breeze edition

1:16

Original synthetic voices designed with Breeze.

Read along Choose a passage to seek

The scene is loading. You can still play the recording above.

02 / Settle into the story

Listen. Read along.
Come back to your place.

Passage highlighting, saved progress, playback speed, and separate editions, in a reader that gives the book room to breathe.

Storyteller web reader showing The Maltese Falcon, with the spoken passage highlighted and playback controls below.
The web reader. Choose a passage to jump to that part of the recording.

One book, your choice of voice.

Switch between recordings from the book's edition picker. Each keeps its own passage timings.

The Storyteller chapter screen with Breeze, Qwen local, and Inworld edition buttons.
The included sample has all three editions ready to play.
The same read-along scene in a mobile browser, with large text and the current passage highlighted.
Read along in a mobile browser, or use the Android app for offline downloads.

03 / Make it yours

Your next
chapter starts here.

Run Storyteller on your computer or server. The bundled sample gets you listening before you set up a voice engine.

Have Git, Node.js 22.13+, and Docker Compose ready. On Windows, use WSL2 for these commands.

Full setup guide
Start with the sample
git clone https://github.com/benbernard/storyteller.git
cd storyteller
node scripts/setup.mjs
docker compose build listener
docker compose run --rm sample
docker compose up -d --wait listener

Open localhost:8080/listen/. Sign in as listener with the password in data/credentials/listener-password.

When you're ready to create

Pick your voice engine.