An open-source ebook reader for Android
Liseur can translate with a language model running on your own computer and read aloud with a voice server on your own network, so the text can stay at home. Any server that speaks the OpenAI API works. This page covers the ones that have been tried with Liseur.
| Server | Translation | Read aloud | Address |
|---|---|---|---|
| LM Studio | Yes | No | http://<computer>:1234 |
| Ollama | Yes | No | http://<computer>:11434 |
| llama.cpp server | Yes | No | http://<computer>:8080 |
| Kokoro-FastAPI | No | Yes | http://<computer>:8880 |
<computer> is the address of the machine running the server on your
local network, such as 192.168.1.10. localhost will not work, because
on the phone it means the phone itself. Liseur adds /v1 to the address
itself, so typing it or leaving it out both work.
No API key is needed for any of these unless you set one up yourself. Android asks for permission to reach devices on your local network the first time.
Once a server listens on the network, any device that can reach it can
use it, and over plain http:// the passages travel unencrypted. Run it
on a network you trust, keep it off the internet (no port forwarding),
and restrict it with your firewall if other people share the network.
LM Studio can require an API key, and a reverse proxy can add HTTPS and
a key in front of Ollama or llama.cpp; Liseur sends the key you enter
for the server.
Download a model, then open the Developer tab and start the server. Turn on Serve on Local Network, otherwise it only answers on the computer itself. With just-in-time model loading on, which is LM Studio’s default, the model list in Liseur shows every model you have downloaded and LM Studio loads the one Liseur asks for. With it off, the list shows only the models that are loaded.
Pull a model, for example ollama pull translategemma:4b. Ollama
listens only on the computer itself until you start it with
OLLAMA_HOST=0.0.0.0 (for the systemd service, set it with
systemctl edit ollama). Ollama unloads a model after five idle
minutes, so the first sentence after a pause can take a while as the
model loads again; the keep_alive option (see Advanced options below)
keeps it loaded longer. Liseur waits up to two minutes for an answer.
Start llama-server with --host 0.0.0.0 so the phone can reach it. It
serves the single model it was started with.
Page translation sends one sentence at a time, so speed matters more
than size. A small instruction model in the 3B to 8B range is usually
enough for common language pairs. Liseur asks a model whose name
contains translategemma in the prompt format it was trained on,
without the previous sentence as context. Reasoning models think before
every sentence, which makes page translation slow; Liseur drops a
thinking block the reply starts with, but a model without reasoning, or
with reasoning turned off on the server, gives faster results. Pages
saved before Liseur learned to hide that thinking keep it until you
clear them under Translation settings, Advanced, Saved translations.
Translation settings has an Advanced section for the chosen server:
temperature (0 unless you change it), whether page translation sends the
previous sentence as context, extra instructions added to the prompt,
the most tokens a reply may use, and Ollama’s keep_alive. keep_alive
replaces Ollama’s five idle minutes with a time of your own, as seconds
or a duration such as 30m. With Ollama 0.40.3, through the
OpenAI-compatible endpoint Liseur uses, 30m kept the model loaded for
30 minutes and 0 unloaded it as soon as it answered.
LM Studio, Ollama and llama.cpp only produce text. If you point read aloud at one of them, Liseur tells you that the server has no speech endpoint.
For voices from your own network, run a speech server such as Kokoro-FastAPI:
docker run -d -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
Add it in External services and API keys the same way (Kokoro is in the list), then in Read aloud settings choose Speech server (OpenAI-compatible), pick the server, and choose a voice.
Liseur sends the text to translate or read aloud only to the server you chose. Whether it stays on your network after that depends on the server: LM Studio, Ollama, llama.cpp and Kokoro-FastAPI run the model on that computer, but a proxy or a server set up to forward requests could send it elsewhere. See PRIVACY.md.