star — Speaking Terminal Access Reader: an accessible document reader with built-in text-to-speech
Project description
⭐ star — Speaking Terminal Access Reader
star is an accessible, GUI-first document reader with built-in text-to-speech. It opens PDFs, Word/EPUB/PowerPoint, web pages, spreadsheets, and more, reads them aloud, and highlights each word as it is spoken — with no cloud account and no internet required.
star is built for students with print disabilities — people who work with
dense, heavily formatted documents and need a reading tool that gets out of the
way. The Qt GUI is the primary interface (it launches by default and is where
development is focused), with a keyboard shortcut for every command; a
full-featured, keyboard-driven curses terminal UI remains available with
--tui for headless or text-only environments.
It draws design inspiration from Emacspeak, Kurzweil 1000, Natural Reader, and Central Access Reader.
🚀 Install
On any platform with Python 3.11+:
pipx install star-reader # isolated app install (recommended)
# or
pip install star-reader # into the current environment
Then run it:
star # launch the Qt GUI
star document.pdf # open a file
star --tui # force the terminal UI
star --deps # show which optional features are installed
Add optional features with extras — pip install "star-reader[all]" for the
full feature set (everything except the multi-GB Whisper/Torch dictation stack,
which is [transcribe]), or groups like star-reader[translate,vocab]. Full
instructions (wheel, single-file star.pyz, native engines, per-platform notes)
are in the Installation guide.
✨ Highlights
- Reads aloud with live word highlighting in both the Qt GUI and the terminal TUI — including in-process eSpeak-NG with true audio-position sync.
- Many TTS engines: pyttsx3 (SAPI5 / NSSpeechSynthesizer), macOS
say, eSpeak-NG, Festival, Piper (neural, offline, free), Coqui, and DECtalk. - Opens almost anything: PDF (incl. OCR), DOCX, PPTX, EPUB, HTML, Markdown, spreadsheets, DAISY/DTBook, and dozens more formats.
- Study tools: notes & annotations, a citation manager, summarization, Anki flashcard export, document translation (15 languages, no API key), RSS/Atom feed reading, and a difficult-word overlay.
- Export: Markdown, PDF (with highlights), BRF braille, TTS audio (WAV/MP3/OGG/MP4), and synchronized SRT/VTT subtitles.
- Accessibility-first: NVDA/JAWS/Orca/VoiceOver compatible, four colorblind-friendly themes + custom CSS themes, dyslexia-friendly font, bionic reading, adjustable spacing (WCAG 1.4.12), and high-DPI support.
- Graceful degradation: every third-party dependency is optional and guarded, so the core runs on the Python standard library alone.
See the full feature reference for everything.
📚 Documentation
| Guide | What's in it |
|---|---|
| Installation | PyPI / wheel / zipapp install, optional packages, native engines, platform notes |
| Usage Guide | Running star, the quick command reference, full keyboard map, M-x commands, CLI options |
| Features | The complete feature reference |
| Configuration | Every settings.json key |
| Architecture & Contributing | Package layout, distribution artifacts, contributing, tests |
| Changelog | Full record of changes |
| Build guide | Building the cross-platform wheel (and the deprecated Windows star.exe) |
➡️ Browse all docs in the docs/ directory.
📦 Distribution
The pure-Python wheel (pip install star-reader) is star's primary, stable
distribution and the only artifact produced by automated releases; it works on
macOS, Linux, and Windows alike. A single-file
star.pyz zipapp and the
self-contained Windows star.exe (deprecated) are build-it-yourself —
they are no longer shipped with releases. See
Installation and BUILD.md.
🤝 Contributing
Contributions are welcome — please open an issue before a PR for anything beyond
small fixes. Keep every third-party dependency optional and guarded, target
Python 3.11, and document new keybindings and M-x commands. See
Architecture & Contributing for the full
guidelines and how to run the test suite.
📜 License
star — Speaking Terminal Access Reader
Copyright 2026 Jon Pielaet
Free software under the GNU General Public License version 3 or later. This
program is distributed in the hope that it will be useful, but without any
warranty. See the LICENSE file, or run M-x license in the app, for
the full text.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file star_reader-0.1.9.tar.gz.
File metadata
- Download URL: star_reader-0.1.9.tar.gz
- Upload date:
- Size: 263.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e667ab27125e44cc3ecb274b62d3babbb921535cb195f2dc2acba5db5d61faa9
|
|
| MD5 |
4c2b2c703acf9d912c757b8d75b984f0
|
|
| BLAKE2b-256 |
13f5e9b2ea1c71021d4fdfde7fb2de99d248a5eab5a7f1650e3e938b28d1865c
|
Provenance
The following attestation bundles were made for star_reader-0.1.9.tar.gz:
Publisher:
release.yml on leavesofgrass/star
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
star_reader-0.1.9.tar.gz -
Subject digest:
e667ab27125e44cc3ecb274b62d3babbb921535cb195f2dc2acba5db5d61faa9 - Sigstore transparency entry: 1935078921
- Sigstore integration time:
-
Permalink:
leavesofgrass/star@85e381e7358691ec4980c8ba7a48596fe217b927 -
Branch / Tag:
refs/tags/v0.1.9 - Owner: https://github.com/leavesofgrass
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@85e381e7358691ec4980c8ba7a48596fe217b927 -
Trigger Event:
push
-
Statement type:
File details
Details for the file star_reader-0.1.9-py3-none-any.whl.
File metadata
- Download URL: star_reader-0.1.9-py3-none-any.whl
- Upload date:
- Size: 267.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cca5080f32fc3950ecd524a8a5e6a7518253bfd1da7fc49af3e3c468fa42b4a
|
|
| MD5 |
423acbc5304346102b7b98d97826f900
|
|
| BLAKE2b-256 |
ca32bd3300a0b42ef29e1e949ed4440f02d94ad58e19239b6e75bc3b198e5b14
|
Provenance
The following attestation bundles were made for star_reader-0.1.9-py3-none-any.whl:
Publisher:
release.yml on leavesofgrass/star
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
star_reader-0.1.9-py3-none-any.whl -
Subject digest:
4cca5080f32fc3950ecd524a8a5e6a7518253bfd1da7fc49af3e3c468fa42b4a - Sigstore transparency entry: 1935079005
- Sigstore integration time:
-
Permalink:
leavesofgrass/star@85e381e7358691ec4980c8ba7a48596fe217b927 -
Branch / Tag:
refs/tags/v0.1.9 - Owner: https://github.com/leavesofgrass
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@85e381e7358691ec4980c8ba7a48596fe217b927 -
Trigger Event:
push
-
Statement type: