r/LocalLLaMA · · 1 min read

Building a Fully Local PDF Read-Aloud & PDF-to-Audiobook Desktop App with Kokoro 82M, Qwen, and llama.cpp

Mirrored from r/LocalLLaMA for archival readability. Support the source by reading on the original site.

Building a Fully Local PDF Read-Aloud & PDF-to-Audiobook Desktop App with Kokoro 82M, Qwen, and llama.cpp

Hey everyone,

I’ve been building Speechfony - a desktop app for reading PDFs (and EPUBs) with offline text-to-speech. Open a document, listen sentence-by-sentence with highlighting, or export selected pages to an MP3. Everything runs locally: Kokoro for speech, and an on-device embedding model for semantic search.

I wanted something that didn’t ship my documents to a cloud TTS service, worked offline after the first model download, and felt closer to “listen while you read” than “dump the whole PDF into a generic TTS box.”

What works today

  • PDF + EPUB reading
  • Sentence-level playback with live highlighting
  • Adjustable header/footer margins (so repeating page chrome doesn’t get read aloud)
  • Resume where you left off
  • Semantic search (meaning + keywords), local embeddings
  • Audiobook export to MP3 (desktop only)
  • Hardware acceleration where available (CoreML / DirectML / CUDA)

Expect rough edges. Known gaps I’m already tracking:

  • Multi-column layouts, tables, code, equations
  • Footnotes / citations, TOC / index pages, captions / sidebars
  • Scanned PDFs (no OCR yet)
  • Non-English / RTL
  • Voice & rate controls are limited
  • Pronunciation of company names / niche technical terms can be wrong (that’s mostly the Kokoro lexicon - as I build a rust binding myself)

Platforms: macOS Apple Silicon, Windows x64, Linux x64 (glibc ≥ 2.38). No Intel Mac builds for now.

On first launch it downloads the voice model (~130 MB from Hugging Face). After that it’s offline.

Links

If you try it on a real document you’d actually listen to (papers, manuals, books, reports), please tell me:

  1. What broke or sounded wrong?
  2. What PDF/EPUB layout confused extraction or playback?
  3. What’s missing that would make you use this regularly?

Issues and PRs welcome. Fully open source (MIT License).

submitted by /u/purellmagents
[link] [comments]

Discussion (0)

Sign in to join the discussion. Free account, 30 seconds — email code or GitHub.

Sign in →

No comments yet. Sign in and be the first to say something.

More from r/LocalLLaMA