If you can read it, Voca can say it

Voca 1.0 for Android: a private reader that turns articles, PDFs, Markdown and Nostr into speech in your phone own voice.

Voca

27. August 2026August 27, 2026 · 8 Min. Lesezeit8 min read

1

The pile#

Everyone has the stack. The articles shared into a chat and never opened, the PDF somebody sent in March, the long piece you saved on the assumption there would be an evening for it. It does not move, because reading it needs a chair and a free hour and both are spoken for.

Voca reads it to you instead, in your phone's own voice, while you are doing something else.

The promise#

If you can read it, Voca can say it. That is the whole claim, and each route into it has its own damage to undo.

Shared and pasted text has its hard line wraps repaired, so a copied chat log or a pasted column reads as prose instead of stopping at the end of every line. A web page becomes the article: prose, headings and lists, with the navigation, the cookie notice and the newsletter box left behind. A PDF keeps its pagination and your place in it, never speaks the running header or the page number, rejoins a sentence broken across a page break, and puts hyphenated words back together. A Markdown file becomes a document instead of a screen of symbols, with headings, quotes, three kinds of list, code, tables, links and images rendered in real typography.

Paste a Nostr link and hear the note itself. Voca decodes the identifier, fetches the signed event from relays, recomputes its id, verifies the signature and reads the author's text. Article addresses, note ids, events, public keys and profiles all resolve, and so does an ordinary web link with a Nostr entity inside it, so a link out of any of the usual front ends works. It does not read you the web page built around the note.

And you can subscribe instead of hunt. Add an RSS or Atom address over HTTPS, or a Nostr author, and their long-form writing lands in one inbox, with Nostr mentions resolved from signed profile metadata and the text kept on the device.

It reads to you and reports to nobody#

There is no Voca server and no account to make. Your queue, your reading positions, your bookmarks and your saved subscription entries live in the app's own private storage, and the documents themselves are encrypted with a key held in the phone's hardware-backed keystore, so a copy of the files taken off the device is not a copy of what you were reading.

Voca goes to the network when you ask it for something, a web page, a subscription refresh, a Nostr link, and at no other time. The exception worth knowing is that a Markdown document carrying images fetches them from their hosts as they come on screen; Nostr notes have their image embeds removed before they are stored.

A relay lookup asks Voca's own set, the write relays the author publishes in their relay list, and any hints carried in the link you opened, which is how a note that never reached the big relays is found at all. Every address must be encrypted and must resolve to the public internet, and a single lookup is capped at eight relays. Events are checked before they are stored, by recomputed id and verified signature, so a relay cannot hand Voca something the author did not write.

The app carries no ads, no analytics and no telemetry. Speech from an on-device engine never leaves the phone; a cloud-backed engine, if you deliberately choose one, receives your text under its own policy. The privacy policy in the repository itemises all of it.

Working this way is also what makes it quick. Tap a sentence and it starts talking. Share an article out of your browser and it is queued before the tab closes. A chapter in airplane mode reads exactly like a chapter on wifi.

Built for hours, not minutes#

A synthetic voice is bearable for five minutes by default, and for an hour only if somebody did the work.

The page is part of that. Text runs edge to edge and justified, with the sentence and word highlights painted behind the glyphs so the page holds still while the voice moves through it. Night reading uses a zero-blue amber-on-black theme built for OLED panels; daylight gets a true light theme. Long documents are laid out in paragraph-aligned pieces, so a whole book scrolls as smoothly as a short note, and a floating position pill appears while the page is moving that you can hold and sweep through the document by feel. The page follows the voice the way a patient reader follows a narrator, moving only when the spoken line would leave the screen, and it stops following the moment you scroll by hand until you come back or press play.

The voice is the other part. Voca ships no engine, no voice and no model, and uses the speech service your phone is already configured with. On GrapheneOS that engine is already on the phone, so Voca reads as soon as you install it, with nothing else to install and nothing from Google in the path. Around it: a voice per queue item, adjustable speed, and pronunciation rules that fix the words your engine mangles, case sensitively or not, previewable against any installed voice. Dates, clock times and dotted abbreviations are turned into what a voice should say before the schedule is built, so a date is read as a date instead of as a run of digits, and two voices no longer make two different sets of words out of one page. A footnote marker can be read where it stands, held back until the end of its sentence, or skipped, and the page shows exactly what will be read. A table is announced as a table and then read a row at a time. All of it changes what is spoken and none of it changes the text on screen.

The session holds together across a day: a queue you can reorder, prune and jump around, bookmarks you can name, annotate and search, a sleep timer, reading that carries on with the screen off, and play, pause and sentence skips from the media notification with one press each. A phone call takes priority and Voca comes back afterwards. Swipe the app out of recents and your document and position are still there. The home-screen widget is a small reader instead of a row of buttons: the whole document, rendered as the page is, the spoken sentence kept in view, and any line tappable to read from there.

Why the highlight can be trusted#

Voca synthesizes each sentence to audio before playing it and then measures the result: the true duration, and every pause the engine takes inside it. During playback the highlight reads the audio player's own clock against that measured timeline, so the lit word stays on the spoken word from the first sentence of a document to the last line of a chapter. The word marker paints only when its timing has been measured rather than estimated, so on a freshly opened document it waits a sentence or two and then arrives exact, instead of arriving immediately and running ahead of the voice.

The reader in the screenshots is the reader that ships; they are rendered from the real interface by a test in the repository. A separate harness holds the follow-along to a bounded error against known ground truth. Both are files you can run. There is a companion article for anyone who wants the mechanism: the reading pipeline, the two speech lanes, the timing unit, the highlight geometry and the widget.

Free software, and where to get it#

Voca is MIT licensed and the whole repository is published over Nostr. Read it, build it, fork it. It is free to use, and if you want to support the work the profile has a lightning address.

Zapstore is the recommended route: it verifies the package signature against my key before installing anything. The same package is attached to the release in the repository if you would rather fetch it and verify it yourself.

Voca is built for GrapheneOS, which is what every release candidate is reviewed on, and runs on Android 10 and up. Other Android systems are not release targets, though the app works on them.

Tell me what is wrong with it#

There were earlier public builds in 2025. They did not work well enough on any front, so this is a rebuild rather than a continuation, and the first version I would ask anyone to rely on.

If you install it, tell me what breaks, what feels rough, and what workflow you still cannot do. Reply on Nostr, or open an issue in the repository. The most useful reports name one specific failure or one missing step.

#android#reader#tts

Written by

Comments1

Contents

7 sections

  1. The pile
  2. The promise
  3. It reads to you and reports to nobody
  4. Built for hours, not minutes
  5. Why the highlight can be trusted
  6. Free software, and where to get it
  7. Tell me what is wrong with it