Show HN: Lue – Terminal eBook Reader with Text-to-Speech (github.com)

99 points by superstarryeyes ↗ HN
Shown HN: Lue - Terminal eBook Reader with Text-to-Speech

Hello,

Just went live on GitHub with this project.

I really enjoy listening to my eBooks as audiobooks but was frustrated by the available options. Converting books into audiobooks with scripts is tedious, and most tools stumble over footnotes, headers, or formatting. I wanted something simple: just throw a book at it, and it starts reading immediately without any clicking or loading.

I also wanted it to be customizable and modular because new, better TTS engines are released all the time. For this initial release, I settled on Edge and Kokoro because they’re both fast (real-time) and good quality. I’ve already made modules for Kitten TTS, Gemini and a few others, and they work too. So I hope this setup is future-proof.

Here’s what Lue supports:

Multi-format: EPUB, PDF, TXT, DOCX, HTML, RTF, and Markdown.

Modular TTS system: Default Edge TTS (online) and Kokoro TTS (offline/local), with an architecture to add more models.

Rich terminal UI: Full keyboard and mouse support, customizable color themes, smooth scrolling.

Smart persistence: Automatically saves reading progress across sessions.

Cross-platform & multilingual: macOS, Linux, Windows, supporting 100+ languages.

I’d love feedback on both usability and the TTS experience. Are there any features you wish it had?

9 comments

[ 3.1 ms ] story [ 27.8 ms ] thread
I plan to test this, but I'm still holding off. This is coming from a user who seems to have a new account on GitHub and HN. Must take caution first and read about the implementation.

P.S. "lue" means "read" in Finnish.

Can it be made to work on Android from Termux or Userland?
For some reason I'm more interested on the "read epubs in terminal" than the TTS part. Don't know for certain for how long would one be interested on reading monospace text, also without certainty of the app remembering where I left, pagination and that stuff.

For me, running it on my home server so it can save my progress would be good.

This is neat. Most eBook → audio tools I’ve tried either butcher formatting or feel clunky, so a “just throw it in and listen” approach is refreshing. Curious how well it handles footnotes/sidebars in practice — do you skip them entirely or try to inline them?
Awesome, I've been playing in the ebook space myself, will check it out. Particularly interested in digging into the code too see how you skip headers, footnotes, etc.

Just one quick note as I ran into this when setting it up:

   ╰─▶ Because the requested Python version (>=3.8) does not satisfy Python>=3.10,<3.13 and kokoro==0.9.4 depends on Python>=3.10,<3.13, we can conclude that kokoro==0.9.4 cannot be used.
Note I definitely disregarded your instructions and used `uv` to setup the project. Still, it seems like changing the `pyproject.toml` to `requires-python = ">=3.10"` would be good considering kokoro's Python version support.
(comment deleted)
I can't say I have ever desired to read something for multiple hours in the terminal, but it seems great for quickly checking a book.

> I’ve already made modules for Kitten TTS, Gemini and a few others, and they work too.

Did you publish these? or provide a guide to build your own? I have my own quick epub/txt to MiniMax tool but adapters or a framework to build your own would be nice. I see "modular" and "extensible" but not what to do.

I just tried it in a Python UV Environment and it works more or less alright. I am using Ubuntu 24.04 LTS.

Only drawback, in my view, is the requirement of "espeak, antiword" packages outside the uv environment. I would prefer that all tools be installable inside the uv environment to reduce possible corruption or errors.

I do seem to have one issue. When I tried to use the "t" keyboard shortcut, the application refused to continue reading the book, epub in this case, when I pressed "a" to start auto playback. Pressing and depressing "pause" has no effect. Deactivating and reactivating the environment has no effect but it does drop me back to where it left off.

Though the terminal interface is acceptable, may I suggest that a more interactive interface might make it more attractive to people that are also used to a GUI interface. Perhaps creating a terminal GUI option using the Textual Python Terminal package.

It would also be good if when typing "lue", the app will automatically find the book I was last reading without me having to specify it in as an argument every time. A keyboard shortcut to display the reading history would also be useful.

Just a thought :)

Thanks a lot!

I have a section on my reading list for books that are available as e-books, but not as audiobooks, and that section just keeps growing ad infinitum. I seldom find the time to read, but I often have time for audiobooks, as I listen to them while driving, or doing household chores, etc.

So, when I saw your post, I immediately tried it out, and it works really well for my purposes.

One feature request: It would be awesome if there was a control for the speech rate.