Skip to content

notnaone/ElevenLabsDigiRead

Repository files navigation

DigiRead — Audiobook Production Studio

A full-stack studio for producing audiobooks with ElevenLabs TTS. Upload a manuscript, split it into chapters and chunks, normalize the text for speech, generate audio takes, review and re-record, then export stitched chapter audio.

Built as a personal project to explore the end-to-end pipeline of professional audiobook production.


What it does

  • Ingest — Upload EPUB, PDF, DOCX, or plain text; auto-detect chapter structure
  • Text normalization — Estonian-language NLP pipeline (estnltk) handles dates, abbreviations, ordinals, and morphological forms before TTS
  • Pronunciation dictionary — Per-project rules for proper nouns, foreign words, and edge cases
  • TTS generation — Sends normalized chunks to ElevenLabs API; stores multiple takes per chunk
  • Studio editor — Tiptap-based editor with inline waveform; mark takes, re-generate individual chunks
  • Audio export — Stitch approved takes into chapter-level audio files
  • Transcript viewer — Sync transcript display with playback position

Architecture

/apps
  /web          — Next.js 16 frontend + API routes (React 19, Tailwind, Supabase Auth)
  /nlp-service  — FastAPI microservice for Estonian text normalization (estnltk, whisperx)
  /desktop      — Electron shell (optional local mode)

/packages
  /elevenlabs-client   — Typed ElevenLabs API wrapper + voice cache
  /text-pipeline       — Chapter chunking logic (paragraph-aware, 2500 char target)
  /editor-sync         — Tiptap extension: chunk nodes, QA flags, studio context
  /renderer            — Shared UI components (audio player, scrub bar, transcript viewer)
  /db                  — Supabase migrations + typed client
  /api-client          — Internal service client

Data store: Supabase (PostgreSQL + Storage + Auth + RLS) Deployment: Railway (web + NLP service as separate services) Monorepo: Turborepo + pnpm workspaces


Tech stack

Layer Tech
Frontend Next.js 16, React 19, TypeScript, Tailwind CSS 4
Editor Tiptap 3 with custom chunk node extension
Audio UI wavesurfer.js
Backend Next.js API routes, FastAPI (Python)
NLP estnltk, morphological synthesis via vabamorf
TTS ElevenLabs API (@elevenlabs/elevenlabs-js)
Database Supabase (PostgreSQL, RLS, Storage)
Auth Supabase Auth (SSR)
Monorepo Turborepo, pnpm workspaces
Deployment Railway, Nixpacks

Local setup

Prerequisites: Node 20+, pnpm, Python 3.11+, ffmpeg

# Install dependencies
pnpm install

# Copy and fill env vars
cp .env.example .env.local
# Required: ELEVENLABS_API_KEY, NEXT_PUBLIC_SUPABASE_URL,
#           NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY,
#           NLP_SERVICE_URL, NLP_SERVICE_SECRET

# Run NLP service (separate terminal)
cd apps/nlp-service
pip install -r requirements.txt
uvicorn main:app --port 8000

# Run web app
pnpm turbo dev --filter=@digiread/web

Apply DB migrations via the Supabase dashboard or CLI using files in packages/db/migrations/.


Status

Personal project / prototype. Not production-hardened. Built to explore the audiobook production pipeline and ElevenLabs API surface.

About

Audiobook production studio built on ElevenLabs TTS — text normalization, studio editor, audio export

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors