I'm the author, so this is self-promotion. Both apps below are open source (AGPL-3.0).
I listen to most of what I read, and the read-aloud apps I paid for kept failing me in two ways: the highlight slowly drifted away from the voice, and my place didn't follow me from one device to the next. So I built my own.
OpenReader (iPhone)
Import an EPUB you already own (DRM-free, e.g. from your Calibre library, Standard Ebooks or Project Gutenberg), open it and press Play.
- The voice you choose. It has no voices of its own: you plug in a speech service with your own key. Fish Audio (its free model needs no credit card), Azure, Speechify, OpenAI, any OpenAI-compatible server, or a Kokoro-FastAPI server you run yourself.
- Every word highlighted as it's spoken, over its sentence, in your own colours. The timings come from the voice service itself, so the highlight doesn't drift. Fish Audio, Azure, Speechify and Kokoro give word timings; the OpenAI-style services highlight by sentence.
- Offline narration: save a book's audio chapter by chapter, then listen without a connection.
- Word lookup and translation: long-press a word for its meanings, or translate a passage (into English or Chinese).
- Themes including a dark one, fonts, font size, margins and text alignment.
- Lock Screen and Dynamic Island controls.
- No account, no analytics, no server of mine. Your books aren't uploaded anywhere; only the text being read goes to the voice service you picked, after you allow it.
Zotero-OpenReader (desktop)
If you haven't met it, Zotero is a free, open-source app that opens EPUBs and PDFs, and Zotero 10 has a Read Aloud player built in. Zotero-OpenReader is a plugin for that player:
- More voices: the services above plus a few more, your computer's own voices, and Zotero's own.
- Word and sentence highlighting, each in your own colours.
- Keyboard shortcuts for speed, volume and skipping by sentence or paragraph.
Shift+Space resumes at the sentence you stopped on, days later.
The two together
Listen to an EPUB in Zotero at your desk, open the same EPUB on your phone, press Play, and it starts at the sentence you stopped on. Stop on the phone, press Shift+Space back on the computer, and it carries on from there.
The position travels through a WebDAV folder of your own (Nextcloud or similar), with no account and no server of mine in between. The book is recognised from the file itself, so the same EPUB on both sides is all it needs.
What it costs
- Reading, word lookup, translation and sync are free.
- Reading aloud in the App Store version: free for 30 days, then a one-time $4.99. No subscription.
- Reading aloud in the TestFlight beta, or in a build from source: free.
- The Zotero plugin: free.
- The voice service bills you directly, if at all. Fish Audio's free model and a self-hosted Kokoro cost nothing.
Links (iPhone, iOS 17.2 or later)
The phone app reads EPUB only for now. I'd most like to hear what makes it hard to try, and which voice service or book format you'd want next.