Turn fiction into an editable, multi-voice performance.
Dramatis is an experimental audiobook workshop for short fiction. It uses an LLM to identify narration, dialogue, and speakers, then lets you cast each role, shape individual passages, and generate a synchronized narration with ElevenLabs.
Note
The hosted demo is intentionally limited. It is best used to explore the prepared stories, reading experience, and voice-over editor.
- Analyses prose into narration, dialogue, and attributed speakers.
- Builds a cast with a distinct ElevenLabs voice for every role.
- Lets you edit passages and tune pace, expressiveness, and timing.
- Generates or regenerates audio one passage at a time.
- Plays the finished performance in a focused, synchronized reading view.
- Stores stories, cast decisions, and generation state in SQLite.
- Paste a short story and optionally add its title and author.
- Dramatis detects its structure, dialogue, and cast.
- Review the cast, assign voices, and refine individual passages.
- Generate the narration and listen alongside the original text.
- Node.js 24 and npm
- An OpenAI API key, or an Anthropic API key with a matching model configured
in
app.config.js - An ElevenLabs API key
Install the dependencies and create your local environment file:
npm install
cp .env.example .envAdd the provider keys to .env, then start the API and Vite development server:
npm run devOpen http://localhost:5173. The API runs on http://localhost:3001, and local
SQLite data is written to data/dramatis.db by default.
Copy .env.example to .env and add the provider API keys, then build and run
the container:
docker build --file docker/Dockerfile --tag dramatis:local .
docker run --rm \
--name dramatis \
--env-file .env \
--env DATABASE_PATH=/app/data/dramatis.db \
--env NODE_OPTIONS=--max-old-space-size=384 \
--env SERVER_PORT=3001 \
--publish 127.0.0.1:3001:3001 \
--volume dramatis-data:/app/data \
dramatis:localOpen http://localhost:3001. The dramatis-data volume keeps the SQLite
database between container replacements.
The parsing model is configured in app.config.js. Runtime secrets and
deployment settings belong in .env; see .env.example for the available
variables.
Dramatis is built with React, TypeScript, Vite, Express, SQLite, the AI SDK, StyleX, and ElevenLabs.
Dramatis is a desktop-first experiment, not a production audiobook platform. It is designed for short extracts rather than complete books, and the editor is still evolving alongside the model and speech APIs it uses.

