Lectures and Narrations app icon

Lectures and Narrations

Audiobooks that read along with you.

An Android player for .m4b audiobooks — with chapter-relative scrubbing, sleep timers, and an EPUB companion reader that highlights the text in sync with the narration.

Android 13+ Kotlin · Jetpack Compose ExoPlayer / Media3 100% on-device

One ecosystem, two halves

LN began as an AI experiment in book understanding — using language models to analyze narrative structure, character traits, and scene dynamics — and grew into an end-to-end pipeline for immersive, multi-voice audiobooks.

ln-vox The Creator

An offline, self-hosted AI pipeline that ingests raw text or EPUBs. It orchestrates LLMs to cast characters and direct emotional delivery, then uses local TTS to generate a fully acted, multi-voice .m4b complete with text-to-audio sync markers.

ln-reader The Consumer

A custom Android app built specifically to play these enhanced audiobooks. Chapter-relative scrubbing, sleep timers, and an EPUB companion reader that automatically highlights the text in sync with the audio.

What ln-reader does

A focused, offline audiobook player — no accounts, no streaming, no tracking.

📚

Library

  • Import .m4b from any SAF source — device storage, Drive, OneDrive, Dropbox…
  • Grid view with embedded cover art, title, author, and total duration.
  • Per-book detail: chapter and image counts, plus Open / View images / Remove.
▶️

Player

  • Foreground media session — background playback from notification & lock screen.
  • Chapter-relative scrubber showing time-in-chapter and "Chapter N of M".
  • ±10 s / ±30 s skips, prev / next chapter, 0.5×–3× pitch-preserving speed.
  • Auto-saves your position every 5 s; resumes within ≈5 s on next open.
🖼️

Image viewer

  • Grid of every image embedded in the m4b.
  • Full-screen pager — pinch to zoom up to 5×, pan, swipe between images.
  • Reachable from the library, the player top bar, or the Images tab.
😴

Sleep timer

  • Time mode — 5 to 90 min presets; pauses with playback, resumes on play.
  • Chapters mode — end of current, or +2 / +3 / +5 chapters.
  • Optional 10 s volume fade-out, with Postpone / Dismiss and shake-to-postpone.
⬇️

Downloads

  • Cloud SAF imports are copied locally so playback streams from disk.
  • Local imports are referenced in place — no copy.
  • Phase-aware progress: Downloading → Parsing m4b → done; pick any SAF folder.
📖

EPUB companion + sync

  • Built-in WebView reader, reachable from the player or the book's "Read" button.
  • A sync manifest ties audio timestamps to EPUB beats & illustrations.
  • Auto-follow: highlights the active beat, scrolls, and turns pages as you listen.

EPUB + sync, in detail

Each book can carry two optional companions, attached from its detail sheet. What you get depends on what's attached:

EPUBSyncResult
Reader auto-follows the audio: highlights the active lnvox-beat span, scrolls to it, and turns pages as playback advances. Scrubber shows tappable image markers.
Plain reader, manual paging only.
Image markers on the scrubber only (no reader).
Plain audiobook.

In auto-follow mode, manually flipping a page pauses following; a Resume button re-engages it and jumps to the current beat. Scrubber image markers sit at each manifest image's position within the current chapter — tap one to open the matching embedded m4b image.

Requirements & honest limits

ln-reader is single-device, offline-first software. Here's exactly what that means.

📱

Requirements

  • Android 13 or newer (minSdk 33, targetSdk 36).
  • A file manager or cloud app exposing a DocumentsProvider for your .m4b files — Drive, OneDrive, the system Files app, and most third-party managers work.

Build it yourself

Not on the Play Store yet — build from source.

JDK 21 required. From the project root:

$ ./gradlew assembleDebug

The debug APK lands in app/build/outputs/apk/debug/. Install it with adb install.

Architecture, design decisions, and tooling quirks live in the project's DESIGN.md.

Browse the source →