Practical voice guide
Use any text-to-speech engine in Lectern
Android lets anyone install a speech engine, and there are good ones: free open-source voices for languages the big engines skip, neural voices that run on your phone, and paid voices people have relied on for years. Since Lectern 1.29 they all show up in the voice list, without touching your system settings.
The short answer
Install the engine from Google Play, open it once and download the voice you want, then open a book in Lectern and go to Audio → Voice. The new engine appears as its own group, with its name above it. Tap the play button next to a voice to hear it before you choose.
What changed in 1.29
Before this release, Lectern showed only the voices of the engine Android has set as the system default. To use a second engine you had to change that default outside the app, and then everything on your phone spoke with it. That was never the intention; it was a gap in how the app asked Android for voices.
Now the list covers every engine on the device. On a test phone with five engines installed, Lectern found 39 English voices across all five, each grouped under the engine that offers it. Your system default stays whatever it was.
Step by step
- Install the engine. Search Google Play for the engine you want and install it like any app. Nothing else is needed; it registers itself with Android.
- Open that app once and download a voice. This is the step most people miss. Nearly every engine ships without voice data: RHVoice installs with Installed voices: none, and until you download one it has nothing to offer any app. Pick your language inside the engine's own app and let it download.
- Open the voice list in Lectern. In a book, open the reader settings, go to the Audio tab and open Voice. Lectern re-reads the installed engines each time you open it, so a freshly installed engine is there straight away.
- Listen before you choose. Android gives a voice only a key like
en-us-x-iob-local. No name, no gender, no description. Nine English voices are called “iob”, “iog”, “iol” and so on, and no naming scheme can tell you which one you want. The play button speaks a sample sentence in the voice's own language. - Pick it and read. The choice is remembered per book language, so a Dutch book and an English book can each keep their own voice.
Which engine should you install?
Lectern already carries its own offline voices, Piper and Kokoro, and for most books those are the better choice: they were picked for long-form reading. A system engine is worth installing when you need a language they do not cover, when you want a specific voice you already know, or when a paid voice you own is simply better than anything free.
Free engines
| Engine | What it is good for | Worth knowing |
|---|---|---|
| Speech Services by Google | The default on most phones. Many languages, several voices each | Download the offline voice data in Android settings, or it needs the network |
| RHVoice | Languages the big engines skip: Esperanto, Georgian, Kyrgyz, Macedonian, Luxembourgish, Belarusian, Albanian and more | Open source and small. Install a voice inside the app first, or it offers nothing |
| TTS Engine: Next-gen Kaldi | Neural voices running on your phone, from the sherpa-onnx project | Open source. The same family of models Lectern uses for Piper |
| Supertonic TTS | Ten expressive English voices, offline | English only. Clear and quick on modern phones |
| VoxSherpa TTS | Load your own Piper, Kokoro or Supertonic models | Ad-supported. It publishes one language at a time: whichever you select in its own voice picker is what other apps see |
| eSpeak NG | Very fast and intelligible at high speed, over a hundred languages | Openly robotic. Many people who listen at 2x prefer exactly this |
| Samsung TTS | Pre-installed on Samsung phones | Fewer languages than Google's, but already there |
Paid engines
These sell voices rather than the app: the engine is a free download and each voice is bought inside it. They are the engines long-time screen-reader users tend to name first, and the quality is why.
| Engine | What it is good for | Worth knowing |
|---|---|---|
| Vocalizer TTS Voice | Over fifty languages, natural and expressive, fully offline | Each voice bought separately, with a trial period. Long the standard among blind and low-vision readers |
| Acapela TTS Voices | A large voice catalogue, including children's and character voices | Free app, paid voices. Offline once bought |
| CereProc CerePlay | Distinctive voices, including regional accents | Usually the cheapest of the paid engines; a smaller language range |
A paid voice is a licence, not a subscription to us. You buy it from the engine's maker and it works in every app that uses system speech, Lectern included. We take no part in it and get nothing from it.
When an engine does not show up
Almost always one of three things, and the first is by far the most common.
The engine has no voice data yet
An engine with nothing downloaded reports no voices at all, and an app cannot show what it is not told about. Open the engine's own app and check that it lists an installed voice. RHVoice says Installed voices: none until you install one; the effect looks exactly like Lectern not seeing the engine.
It offers a different language than your book
The voice list follows the language of the book you have open. An English-only engine has nothing to show in a Dutch book. Some engines also publish one language at a time, VoxSherpa among them, so whatever is selected in its own picker is what every app sees. Check that first if a voice you know is installed does not appear.
The engine will not start
An engine that fails to bind is skipped, because Android silently falls back to the default engine and reports success. Showing those voices under the wrong engine's name would be worse than leaving them out. If an engine misbehaves on your phone, try it in Android's own speech settings: if the sample there stays silent, no app will get sound out of it.
Questions about custom voices
Do I have to change my system default engine?
No, not since 1.29. Lectern reads every installed engine directly. Your system default stays what it was, so the rest of your phone keeps the voice you chose for it.
Can I mix engines in one book?
A book reads with one voice at a time, but the choice is stored per language. Your Dutch books can use one engine and your English books another, and switching back and forth needs no setting up.
Does a system voice work offline?
That depends on the engine. RHVoice, eSpeak, Supertonic, Kaldi and the paid engines are offline by design. Google's voices need their offline data downloaded first; otherwise they use the network. Lectern prefers the offline variant of a voice whenever both exist.
Why are there fewer voices in the list than the engine advertises?
Two filters. Voices that are offered but not installed are left out, because choosing one means choosing something that is not on the device. And a voice that exists as both a local and a network variant appears once, as the local one. On a test phone that turned 473 offered voices into 28 real ones.
Is a system engine better than Piper or Kokoro?
Usually not for reading a book, which is what those were chosen for. It is better when you need a language they do not have, or when you own a paid voice you like more. Try both on the same page and trust your ears.
Does installing an engine send anything anywhere?
Not through Lectern. We ask Android which engines exist and which voices they offer; that is a local question with a local answer. What the engine itself does is its own business, so pick one you trust, the same as any app.
Read on
More about voices
Your books, your voice
Every engine on your phone, in one list, with a play button next to each one.
Get it onGoogle Play