Skip to main content

⭐ star — Speaking Terminal Access Reader

CI PyPI Python License: GPL-3.0-or-later

star is an accessible, GUI-first document reader and Markdown authoring tool 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. You can also write in it: create documents from scratch, format Markdown, and dictate straight into the text.

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.


🚀 Quick start

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

star grows on demand — it fetches optional features the first time you use them, so you don't need to pick extras up front. Want everything available offline right away? pipx install "star-reader[all]".

Run it:

star                 # launch the Qt GUI (the primary interface)
star document.pdf    # open a document
star --tui           # force the terminal UI (headless / text-only)

Your first 60 seconds (in the GUI):

  • Press Ctrl+O to open a document — or just read the welcome page it opens on.
  • Press Space to hear it read aloud, with each word highlighted as it's spoken.
  • Put the caret on a word and press Ctrl+D for an offline definition.
  • Press Ctrl+N to start writing your own document; Ctrl+E toggles edit mode.

Where next:

Optional features

star runs out of the box on nothing but the Python standard library, and grows on demand — no pip install step anywhere. Whenever you reach for a feature that needs an add-on (OCR, offline dictionary, summarize, translate, knowledge-graph extras, dictation, …), star offers to download it in the background and the feature then works in the same session — no restart. On first launch the GUI also shows a short optional-features chooser: pick the Thin or All preset, or tick exactly the capabilities you want. Re-open it any time from Tools → Install Optional Features…. "All" now means literally everything (including the large speech-to-text and named-entity packs); the download size is shown upfront.

Prefer the command line? star --deps shows what's installed, star --install-optional fetches features, star --plugins list lists the pluggable backends/formats/exporters, and star --check-update checks PyPI.

Prefer the command line or a scripted setup? star --install-optional installs the all preset; star --install-optional thin or star --install-optional ocr,dictionary install a preset or a comma-separated list of features; run it with an unrecognized value (e.g. star --install-optional help) to list every feature with its size. star --plugins list and star --check-update round out the CLI. Advanced users can still install extras the classic way — pip install "star-reader[all]", or groups like star-reader[translate,vocab] — but the normal path is one click, in-app.

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 + Voice Manager: pyttsx3 (SAPI5 / NSSpeechSynthesizer), macOS say, eSpeak-NG, Festival, Piper (neural, offline, free), Coqui, DECtalk, and opt-in ElevenLabs cloud neural voices (text leaves your machine only after you set a key and choose the cloud voice; any failure falls back to a local engine) — browse, filter, preview, and favorite voices in the Voice Manager (F4), with one-click download of offline Piper neural voices.
  • Opens almost anything: PDF (incl. OCR), DOCX, PPTX, EPUB, HTML, Markdown, spreadsheets, DAISY/DTBook, and dozens more formats.
  • Write, don't just read: create a document from scratch (File ▸ New, Ctrl+N), format Markdown from an edit-mode toolbar and a Format menu (Bold Ctrl+B, Italic Ctrl+I, Underline Ctrl+U, headings, lists, quotes, links Ctrl+K, inline code, rules) with full Undo/Redo, and dictate straight into the text with Voice Typing (Tools ▸ Voice Typing, Ctrl+Alt+K).
  • Find, bookmark, and search: incremental find in document (Ctrl+F), named bookmarks (Ctrl+M) with back/forward history (Alt+←/→), and full-text search inside every document in your library.
  • Study & spaced repetition: turn highlights and notes into a review deck (FSRS scheduler), review due cards in-app (Study ▸ Review Due Cards…, Ctrl+Shift+F5), auto-generate cloze cards, and optionally two-way sync with Anki.
  • 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.
  • Richer documents: inline LaTeX math rendered as readable Unicode, accessible tables that keep their header structure, clickable footnotes (with a ↩ backlink), and image captions / alt text.
  • Knowledge graph: link annotations across documents with typed relations (CONFLICTS_WITH, SUPPORTS, CITES, …), extract concepts, view the graph interactively, and export to SVG/PlantUML/DOT/JSON.
  • Export: Markdown, HTML, EPUB, DOCX, PDF (with highlights), BRF braille, TTS audio (WAV/MP3/OGG/MP4), chaptered M4B audiobooks (chapters from headings; needs ffmpeg), karaoke video (MP4), Anki decks, and synchronized SRT/VTT subtitles.
  • Publish (F9): styled, metadata-complete EPUB / Word / single-file HTML with bundled Large Print, Dyslexia-friendly, and High Contrast templates — or your own CSS / institution's .docx template.
  • Extensible: TTS engines, document formats, and export targets are discovered through importlib.metadata entry-points — installing a third-party plugin package adds backends, loaders, or exporters with no changes to star itself.
  • Accessibility-first: NVDA/JAWS/Orca/VoiceOver compatible, screen-reader announcements for playback / load / theme / find results, a high-contrast (AAA) theme with automatic light / dark / high-contrast following your OS, a Reading Font chooser (OpenDyslexic, Atkinson Hyperlegible, Lexend — auto-fetched and applied across the whole UI), syllable splitting (display-only decoding aid), a caret-tracking reading ruler, four colorblind-friendly themes + custom CSS themes, bionic reading, adjustable spacing (WCAG 1.4.12), and high-DPI support.
  • Guided tour & translations: a skippable first-run walkthrough (replay any time from Help ▸ Guided Tour, Shift+F1), Help ▸ Check for Updates, and a translated interface — terminal UI included — in Spanish, French, German, and Portuguese, with a first-run language picker in the Qt GUI (the TUI honors the ui_language setting). Right-to-left interface languages mirror the whole app — Arabic is included as a first catalog.
  • Fast on huge documents: opt-in pagination renders only a window of a very large document at a time, dropping first paint on a ~500-page file from seconds to well under one (off by default).
  • Sync without losing work: reading progress and annotations from two machines now merge instead of last-write-wins — position resolves by a policy you pick (newest / furthest / manual) and notes union by id.
  • Graceful degradation: every third-party dependency is optional and guarded, so the core runs on the Python standard library alone.
  • One-click optional features: when a capability needs an add-on, star downloads it in the background — no pip install step anywhere — and it works right away, including the large speech-to-text pack. Driven by a first-run chooser or star --install-optional.
  • One tabbed Preferences dialog: every reader setting — Reading, Reading Aids, Voice, Display, Fonts, General — in Edit ▸ Preferences… (Ctrl+,), with Apply and Restore Defaults.
  • Clear, consistent UI: an all-icon toolbar with descriptive tooltips (vector glyphs drawn programmatically and tinted to your theme — no image files); a readable welcome page that reads aloud like any document; and F1 opens the bundled README as a document on every install.

See the full feature reference for everything.


📚 Documentation

Guide What's in it
Examples Runnable, task-focused examples (CLI text extraction, the Python library, read-aloud & authoring walkthroughs) with a catalog mapping every area
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
Knowledge Graph Typed relations between annotations, concept extraction, graph view, and export
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 self-contained Windows star.exe / macOS .app

➡️ Browse all docs in the docs/ directory.


📦 Distribution

The pure-Python wheel (pip install star-reader) is star's primary, stable distribution; it works on macOS, Linux, and Windows alike. For anyone who can't install Python, every GitHub Release also attaches double-click binaries for all three desktops — a self-contained Windows star-<version>-windows-x64.exe (Python, the GUI, and all loaders baked in; DECtalk excluded from the public exe), a macOS star-<version>-macos-arm64.dmg (Apple-Silicon; uses the built-in Apple voices), and a Linux AppImage. A single-file star.pyz zipapp is build-it-yourself. 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.

Release files for star-reader 0.1.31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for star-reader 0.1.31
File Size Uploaded
star_reader-0.1.31.tar.gz 914.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for star-reader 0.1.31
File Interpreter ABI Platform
star_reader-0.1.31-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / star_reader-0.1.31.tar.gz

Download URL star_reader-0.1.31.tar.gz
Size 914.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e0e56cc85a614bdb576993e75e165f36521cfa197390bf22cebf42c1220c3e16
BLAKE2b-256 checksum
How to use checksums
98acac4208372986994604b2066218baaeee0f61b250b9c55be0c7d657316e8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / star_reader-0.1.31-py3-none-any.whl

Download URL star_reader-0.1.31-py3-none-any.whl
Size 790.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
14df855c542287748e006eb0a7e0e0f7e0cd955da77c85e35869c37e5179169a
BLAKE2b-256 checksum
How to use checksums
59539e75c0a97b5ab10284bf9f1e15a46b10d704dceadd9c2f079ff6b574c76f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.32

2 release files

This release

0.1.31 This release

2 release files

0.1.30

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page