Project
A personal Android app that reads PDFs and web articles aloud, entirely on the phone. I built it for myself, with AI coding assistants, to get through long reading lists on the move. It is not published or distributed: this page describes the project.
At a glance
- Platform: Android (Kotlin), built and tested on a Galaxy Z Fold
- Works offline: no account, no server, no cloud speech service
- Status: in daily personal use; version 1.3
What it does
- Opens a PDF or a web page and turns it into clean sentences: it strips running heads, page numbers and footnote markers, keeps headings, and follows the document's own page numbers and table of contents.
- Reads it aloud with neural voices that run on the phone, with normal playback controls and the screen off.
- Speaks citations and abbreviations the way a person would ("pp. 245–60" becomes "pages 245 to 60").
- Remembers where you stopped in every document, and can jump by search, page or chapter.
- Falls back to on-device text recognition for scanned pages that have no usable text layer.
How it is built
- Speech: open neural text-to-speech models (Matcha and Piper voices) running through the sherpa-onnx library on the phone's processor.
- Reading PDFs: PDFBox for Android, plus custom handling for older PDFs whose fonts have no usable character mapping.
- Scanned pages: Google ML Kit text recognition, on the device.
- Built with AI: most of the code was written by AI coding assistants under my direction, the same way this website is run; I set the requirements and judged the results by ear.
What I learned
- Getting clean text out of real PDFs is most of the work. Speech is the easy part.
- Automated tests catch text that goes missing; only listening catches a voice that sounds wrong.
- Small on-device models are now good enough for hours of listening without a network connection.
Screenshot
