Help is now navigable using the arrow keys instead of being one spoken continuous text. Keybinding moved from h to ? or f1. Braille is now handled through Cthulhu or Orca depending on the detected screen reader. This hands off Braille to an already implemented robust system and is less work for me.
This commit is contained in:
15
README.md
15
README.md
@@ -5,7 +5,7 @@ BookStorm is a fully accessible book reader for electronic books and audiobooks,
|
||||
## Features
|
||||
|
||||
- **Multiple Book Formats**: DAISY 2.02, DAISY 3, EPUB, PDF, TXT, and audio formats (M4B, M4A, MP3)
|
||||
- **Text-to-Speech**: High-quality narration using piper-tts or system voices via speech-dispatcher
|
||||
- **Text-to-Speech**: High-quality narration using piper-tts, system voices via speech-dispatcher, or active screen reader output
|
||||
- **Audio Book Playback**: Native playback with chapter navigation and bookmarks
|
||||
- **Audiobookshelf Integration**: Browse, stream, and download audiobooks from your Audiobookshelf server
|
||||
- **Full Keyboard Control**: No mouse required - navigate with simple keyboard shortcuts
|
||||
@@ -15,7 +15,7 @@ BookStorm is a fully accessible book reader for electronic books and audiobooks,
|
||||
- **Library Browser**: Browse your book collection with configurable library directory
|
||||
- **Recent Books**: Quick access to your 10 most recently read books
|
||||
- **WAV Export**: Convert text books to audio files split by chapter
|
||||
- **Screen Reader Friendly**: All feedback provided via speech-dispatcher for full accessibility
|
||||
- **Screen Reader Friendly**: Full keyboard control with spoken feedback and optional screen-reader reading mode
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -47,6 +47,8 @@ sudo apt install --no-install-recommends ffmpeg mpv python3 python3-pip python3-
|
||||
└── en_US-hfc_female-medium.onnx.json
|
||||
```
|
||||
|
||||
If you want screen-reader reading mode, install `dasbus` (`python-dasbus` system package on Arch, or `pip install dasbus`).
|
||||
|
||||
## Usage
|
||||
|
||||
### Interactive Reading
|
||||
@@ -94,7 +96,7 @@ python bookstorm.py mybook.epub --wav --output-dir ./audiobooks
|
||||
|
||||
- **o** - Options menu (TTS engine, voice selection, display settings)
|
||||
- **t** - Time remaining (if sleep timer active)
|
||||
- **h** - Help (displays keyboard shortcuts)
|
||||
- **F1** or **?** - Help (displays keyboard shortcuts)
|
||||
- **q or ESC** - Quit / Sleep timer menu
|
||||
|
||||
### Book Browser Controls
|
||||
@@ -145,7 +147,7 @@ Settings are stored in `~/.config/stormux/bookstorm/settings.ini` and can be mod
|
||||
[TTS]
|
||||
voice_model = /usr/share/piper-voices/en/en_US/hfc_male/medium/en_US-hfc_male-medium.onnx
|
||||
voice_dir = /usr/share/piper-voices/en/en_US
|
||||
reader_engine = piper # or 'speechd'
|
||||
reader_engine = piper # 'piper', 'speechd', or 'screenreader'
|
||||
speechd_voice = # speech-dispatcher voice name
|
||||
speechd_output_module = # e.g., espeak-ng
|
||||
speech_rate = 0 # -100 to 100
|
||||
@@ -254,16 +256,17 @@ Install piper-tts and download voice models to `/usr/share/piper-voices/en/en_US
|
||||
|
||||
```bash
|
||||
# Install missing Python packages
|
||||
pip install pygame beautifulsoup4 lxml python-speechd mutagen
|
||||
pip install pygame beautifulsoup4 lxml python-speechd mutagen dasbus
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
BookStorm uses a dual TTS system for text books:
|
||||
BookStorm uses multiple reading engines for text books:
|
||||
|
||||
- **UI Feedback**: speech-dispatcher (instant feedback for all actions)
|
||||
- **Book Reading (Piper-TTS mode)**: piper-tts → WAV → pygame.mixer (high quality)
|
||||
- **Book Reading (Speech-Dispatcher mode)**: Separate speech-dispatcher session (faster, system voices)
|
||||
- **Book Reading (Screen Reader mode)**: Orca/Cthulhu `PresentMessage` via D-Bus (speech + braille from your active screen reader)
|
||||
|
||||
|
||||
For issues and feature requests, please visit https://git.stormux.org/storm/bookstorm
|
||||
|
||||
Reference in New Issue
Block a user