How it works
Speech that runs on your own device
BookAloud never sends your text or books to a server. Everything — reading the file, speaking it and encoding the MP3 — happens in your browser tab.
The voice model
Voices come from Kokoro-82M, an open text-to-speech model released under the Apache-2.0 licence. It is small enough (82 million parameters) to run in a browser with WebGPU or WebAssembly, yet it ranks near much larger commercial models in blind listening tests. The first visit downloads it once (≈90 MB on CPU, ≈325 MB for the GPU version); after that it loads from your browser cache.
Measured speed
| Device path | Speed (audio seconds per second) | 20-min chapter |
|---|---|---|
| WebGPU (recent Chrome/Edge on laptop or desktop) | ≈ 3.8× | ≈ 5 min |
| CPU, one worker | ≈ 0.6–0.8× | ≈ 25–33 min |
| CPU, desktop with 6+ cores | 3 workers in parallel, faster than one | shorter |
Speech averages about 15 characters per second at normal speed, so 1,000 characters ≈ 1 minute 7 seconds of audio. Measured on an Apple M-series Mac, 2026-11-04.
From book to chapters
- EPUB: the file is unzipped in the browser; chapters follow the book's reading order (spine) and their names come from the table of contents.
- PDF: pdf.js extracts the text with positions; we rebuild lines and paragraphs, remove running headers and page numbers, and split on the PDF outline — or on “Chapter / Part” headings when there is no outline.
- Text: split into sentence-sized pieces (≤320 characters) so the voice keeps natural intonation; paragraphs get a longer pause.
MP3 output
Audio is encoded to MP3 in the browser (LAME, 64 kbps mono, 24 kHz ≈ 0.5 MB per minute). Pro's single-file audiobook adds ID3v2 chapter frames (CHAP/CTOC) so players show a chapter list.
Who makes it
BookAloud is an independent project. Questions or bugs: hello@bookaloud.app.