Update README.md
This commit is contained in:
parent
d839d3cfa4
commit
2a5d17b9f3
2 changed files with 47 additions and 56 deletions
101
README.md
101
README.md
|
|
@ -1,44 +1,40 @@
|
||||||
[](#license)
|
[](#license)
|
||||||
[](../../pulls)
|
[](../../pulls)
|
||||||
|
|
||||||
# OpenReader WebUI
|
# OpenReader WebUI 📄🔊
|
||||||
|
|
||||||
OpenReader WebUI is web-based reader Text-to-Speech capabilities, offering a TTS read along experience with narration for both PDF and EPUB documents. It can use any OpenAI compatible TTS endpoint, including [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI/tree/v0.0.5post1-stable).
|
OpenReader WebUI is web-based reader Text-to-Speech capabilities, offering a TTS read along experience with narration for both PDF and EPUB documents. It can use any OpenAI compatible TTS endpoint, including [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI/tree/v0.0.5post1-stable).
|
||||||
|
|
||||||
- 🎯 **TTS API Integration**: Compatible with OpenAI API TTS and Kokoro FastAPI TTS, enabling high-quality voice narration
|
- 🎯 **TTS API Integration**: Compatible with OpenAI text to speech API, Kokoro FastAPI TTS, or any other compatible service; enabling high-quality voice narration
|
||||||
- 💾 **Local-First Architecture**: Secure document handling with IndexedDB browser storage - no server uploads required
|
- 💾 **Local-First Architecture**: Uses IndexedDB browser storage - no server uploads required
|
||||||
- 🔍 **Smart Text Processing**: Real-time sentence detection and synchronized text highlighting during playback
|
- 🛜 **Optional Server-side documents**: Manually upload documents to the next backend for all users to download
|
||||||
|
- 🔍 **Smart Text Processing**: Splits content into sentence blocks (ePub tries to split at paragraphs)
|
||||||
- 📚 **EPUB Support**: Read EPUB files with table of contents and synchronized text
|
- 📚 **EPUB Support**: Read EPUB files with table of contents and synchronized text
|
||||||
- 📄 **PDF Support**: Read PDF files with text extraction and page navigation
|
- 📄 **PDF Support**: Read PDF files with text extraction and page navigation
|
||||||
- ⚡ **Modern Tech Stack**: Built with Next.js, React, and Tailwind CSS
|
- ⚡ **Modern Tech Stack**: Built with Next.js, React, Tailwind CSS, and some Headless UI React
|
||||||
- 🎨 **Customizable Experience**:
|
- 🎨 **Customizable Experience**:
|
||||||
|
- Set TTS API base URL (with optional API key)
|
||||||
- Adjustable playback speed
|
- Adjustable playback speed
|
||||||
- Multiple voice options
|
- Multiple voice options (checks `/v1/audio/voices` endpoint)
|
||||||
- Dark/light/system theme support
|
- Multiple app layout theme options
|
||||||
- Persistent user settings
|
- Persistent user settings
|
||||||
- 📱 **Cross-Platform**: Responsive design works seamlessly across desktop and mobile devices
|
|
||||||
|
|
||||||
## **Demo**
|
|
||||||
|
|
||||||
|
## [**Demo**](https://openreader.richardr.dev/)
|
||||||
|
|
||||||
|
|
||||||
https://github.com/user-attachments/assets/1bfc5fc4-8d66-4c71-a3c1-f3ec5b4f4b56
|
https://github.com/user-attachments/assets/1bfc5fc4-8d66-4c71-a3c1-f3ec5b4f4b56
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 🐳 Docker Quick Start
|
## 🐳 Docker Quick Start
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run --name openreader-webui -p 3003:3003 richardr1126/openreader-webui:latest
|
|
||||||
```
|
|
||||||
or with server-side doc storage:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --name openreader-webui \
|
docker run --name openreader-webui \
|
||||||
-p 3003:3003 \
|
-p 3003:3003 \
|
||||||
-v openreader_docstore:/app/docstore \
|
-v openreader_docstore:/app/docstore \
|
||||||
richardr1126/openreader-webui:latest
|
richardr1126/openreader-webui:latest
|
||||||
```
|
```
|
||||||
|
> Note: The `openreader_docstore` volume is used to store server-side documents. You can mount a local directory instead. Or remove it if you don't need server-side documents.
|
||||||
|
|
||||||
Visit [http://localhost:3003](http://localhost:3003) to run the app.
|
Visit [http://localhost:3003](http://localhost:3003) to run the app.
|
||||||
|
|
||||||
### Using Docker Compose
|
### Using Docker Compose
|
||||||
|
|
@ -58,6 +54,12 @@ services:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ⬆️ Update Docker Image
|
||||||
|
```bash
|
||||||
|
docker stop openreader-webui && docker rm openreader-webui
|
||||||
|
docker pull richardr1126/openreader-webui:latest
|
||||||
|
```
|
||||||
|
|
||||||
## Dev Installation
|
## Dev Installation
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
@ -97,61 +99,50 @@ services:
|
||||||
|
|
||||||
> Dev server runs on port 3000 by default, while the production server runs on port 3003.
|
> Dev server runs on port 3000 by default, while the production server runs on port 3003.
|
||||||
|
|
||||||
#### Docker Supported Architectures
|
|
||||||
|
## 💡 Feature requests
|
||||||
|
|
||||||
|
For feature requests or ideas you have for the project, please use the [Discussions](https://github.com/richardr1126/OpenReader-WebUI/discussions) tab.
|
||||||
|
|
||||||
|
## 🙋♂️ Support and issues
|
||||||
|
|
||||||
|
For general questions, you can reach out to me on [Bluesky](https://bsky.app/profile/richardr.dev). If you encounter issues, please open an issue on GitHub following the template (which is very simple).
|
||||||
|
|
||||||
|
## 👥 Contributing
|
||||||
|
|
||||||
|
Contributions are welcome! Fork the repository and submit a pull request with your changes.
|
||||||
|
|
||||||
|
## ❤️ Acknowledgements
|
||||||
|
|
||||||
|
- [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) for the API wrapper
|
||||||
|
- [react-pdf](https://github.com/wojtekmaj/react-pdf)
|
||||||
|
- [react-reader](https://github.com/happyr/react-reader)
|
||||||
|
- [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) for text-to-speech
|
||||||
|
|
||||||
|
## Docker Supported Architectures
|
||||||
- linux/amd64 (x86_64)
|
- linux/amd64 (x86_64)
|
||||||
- linux/arm64 (Apple Silicon)
|
- linux/arm64 (Apple Silicon)
|
||||||
- linux/arm/v7 (Raspberry Pi)
|
- linux/arm/v7 (Raspberry Pi)
|
||||||
|
|
||||||
## **Features**
|
|
||||||
- Real-time sentence by sentence text-to-speech via OpenAI API TTS, [Kokoro FastAPI TTS](https://github.com/remsky/Kokoro-FastAPI), or others compatible with the `/v1/audio/speech` endpoint
|
|
||||||
- IndexedDB-powered local storage
|
|
||||||
- Synchronized text highlighting during playback (using string similarity for best match on the page)
|
|
||||||
- Configurable playback speed and voice options, which checks `/v1/audio/voices` for available voices
|
|
||||||
- Click-to-skip on the same page for navigation
|
|
||||||
- Responsive design with light, dark, and system themes
|
|
||||||
- All configuration settings saved in IndexedDB
|
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
- **Framework:** Next.js (React)
|
- **Framework:** Next.js (React)
|
||||||
|
- **Containerization:** Docker
|
||||||
- **Storage:** IndexedDB (in browser db store)
|
- **Storage:** IndexedDB (in browser db store)
|
||||||
- **PDF Processing:**
|
- **PDF Processing:**
|
||||||
- [react-pdf](https://github.com/wojtekmaj/react-pdf)
|
- [react-pdf](https://github.com/wojtekmaj/react-pdf)
|
||||||
- [pdf.js](https://mozilla.github.io/pdf.js/)
|
- [pdf.js](https://mozilla.github.io/pdf.js/)
|
||||||
- Compromise for text analysis
|
- [compromise](https://github.com/spencermountain/compromise): NLP library for sentence splitting
|
||||||
- **EPUB Processing:**
|
- **EPUB Processing:**
|
||||||
- [react-reader](https://github.com/happyr/react-reader)
|
- [react-reader](https://github.com/happyr/react-reader)
|
||||||
- [epubjs](https://github.com/futurepress/epub.js/)
|
- [epubjs](https://github.com/futurepress/epub.js/)
|
||||||
- **UI Components:**
|
- **UI Components:**
|
||||||
- Headless UI
|
- [Headless UI](https://headlessui.com)
|
||||||
- Tailwind CSS
|
- [Tailwind CSS](https://tailwindcss.com)
|
||||||
- **TTS Integration:** anything you want
|
- **TTS Integration:** (tested on)
|
||||||
|
- [OpenAI API](https://platform.openai.com/docs/api-reference/text-to-speech)
|
||||||
## Project Structure
|
- [Kokoro FastAPI TTS](https://github.com/remsky/Kokoro-FastAPI/tree/v0.0.5post1-stable)
|
||||||
|
|
||||||
```
|
|
||||||
src/
|
|
||||||
├── app/ // Next.js app router
|
|
||||||
├── components/ // Reusable UI components
|
|
||||||
├── contexts/ // State management contexts
|
|
||||||
└── services/ // Utility functions & integrations
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Contributions are welcome! Fork the repository and submit a pull request with your changes. For significant alterations, please open an issue first.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is licensed under the MIT License.
|
This project is licensed under the MIT License.
|
||||||
|
|
||||||
## Acknowledgements
|
|
||||||
|
|
||||||
- [react-pdf](https://github.com/wojtekmaj/react-pdf)
|
|
||||||
- [react-reader](https://github.com/happyr/react-reader)
|
|
||||||
- [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) for text-to-speech
|
|
||||||
- [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) for the API wrapper
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
If you encounter issues or have suggestions, please open an issue on GitHub.
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "openreader-webui",
|
"name": "openreader-webui",
|
||||||
"version": "0.1.0",
|
"version": "0.1.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev --turbopack",
|
"dev": "next dev --turbopack",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue