Lectures and Narrations
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.
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.
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.
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.
A focused, offline audiobook player — no accounts, no streaming, no tracking.
Each book can carry two optional companions, attached from its detail sheet. What you get depends on what's attached:
| EPUB | Sync | Result |
|---|---|---|
| ✓ | ✓ | 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.
ln-reader is single-device, offline-first software. Here's exactly what that means.
DocumentsProvider for your .m4b files — Drive, OneDrive, the system Files app, and most third-party managers work.chpl only. QuickTime text-track chapters load but show an empty list.covr) is the cover; other images appear in the viewer but aren't tied to chapters.span.lnvox-beat[data-beat-id]); unmatched beats just don't highlight.Not on the Play Store yet — build from source.
JDK 21 required. From the project root:
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 →