|
1 | 1 | <div align="center"> |
2 | 2 |
|
3 | 3 | # 🎧 PDF Text-to-Speech Reader |
| 4 | +### The Privacy-First, Zero-Cost PDF Reader |
4 | 5 |
|
5 | | -### Listen to Any PDF — Free, Private, and Accessible |
| 6 | +**Transform any document into natural, human-like speech. Runs 100% locally in your browser.** |
| 7 | +**No uploads. No sign-ups. No data collection. Just code.** |
6 | 8 |
|
7 | | -**The only PDF reader that reads your documents aloud with real-time word-by-word highlighting.** |
8 | | -**Runs 100% in your browser. No uploads. No accounts. No data collection.** |
| 9 | +[](LICENSE) |
| 10 | +[](https://react.dev) |
| 11 | +[](https://www.typescriptlang.org) |
| 12 | +[](https://vite.dev) |
| 13 | +[](https://tailwindcss.com) |
9 | 14 |
|
10 | | -[](LICENSE) |
11 | | -[](https://reactjs.org) |
12 | | -[](https://typescriptlang.org) |
13 | | -[](https://vitejs.dev) |
14 | | -[](CONTRIBUTING.md) |
15 | | - |
16 | | -[Features](#-features) · [Quick Start](#-quick-start) · [Screenshots](#-screenshots) · [FAQ](#-faq) · [Contributing](#-contributing) |
| 15 | +[Live Demo](#) · [Report Bug](https://github.com/analystsandeep/pdf-text-to-speech-reader/issues) · [Request Feature](https://github.com/analystsandeep/pdf-text-to-speech-reader/issues) |
17 | 16 |
|
18 | 17 | </div> |
19 | 18 |
|
20 | 19 | --- |
21 | 20 |
|
22 | | -## 💡 Why PDF TTS Reader? |
| 21 | +## 💡 Why This Exists |
| 22 | + |
| 23 | +Most "free" PDF readers are data traps. They require account creation, upload your private documents to cloud servers, or lock essential accessibility features behind paywalls. |
23 | 24 |
|
24 | | -Most PDF readers don't have text-to-speech. The ones that do require cloud uploads, subscriptions, or accounts. This tool does **none of that.** |
| 25 | +**PDF TTS Reader** is different. It is an **offline-first, privacy-guaranteed application** built for students, researchers, and developers who need to digest complex documents efficiently without compromising their data. |
25 | 26 |
|
26 | | -| Feature | PDF TTS Reader | Adobe Acrobat | Online TTS Tools | |
27 | | -|---------|:-------------:|:-------------:|:----------------:| |
28 | | -| Free forever | ✅ | ❌ (paid) | ⚠️ (limited) | |
29 | | -| No file uploads | ✅ | ✅ | ❌ | |
30 | | -| No account needed | ✅ | ❌ | ❌ | |
31 | | -| Word-by-word highlight | ✅ | ❌ | ❌ | |
32 | | -| 50+ voice options | ✅ | ❌ | ⚠️ | |
33 | | -| Works offline | ✅ | ✅ | ❌ | |
34 | | -| Open source | ✅ | ❌ | ❌ | |
| 27 | +### Core Value Proposition |
35 | 28 |
|
36 | | -**Your PDF never leaves your computer.** Period. |
| 29 | +| Feature | PDF TTS Reader | Standard PDF Readers | |
| 30 | +| :--- | :---: | :---: | |
| 31 | +| **Privacy** | 🔒 **100% Local Processing** | ☁️ Cloud Uploads (Risk) | |
| 32 | +| **Cost** | 💸 **Free Forever (Open Source)** | 💰 Subscriptions / Paid | |
| 33 | +| **Accessibility** | 🧠 **Dyslexia-Friendly / Focus Mode** | ❌ Basic Zoom Only | |
| 34 | +| **Voices** | 🗣️ **50+ System Voices (Uncapped)** | ⚠️ Limited / Premium Only | |
| 35 | +| **Tracking** | 🛡️ **Zero Analytics / Cookies** | 📈 User Tracking | |
37 | 36 |
|
38 | 37 | --- |
39 | 38 |
|
40 | | -## 🎯 Who Is This For? |
| 39 | +## ✨ Key Features |
| 40 | + |
| 41 | +### 🎧 Immersive Audio Experience |
| 42 | +* **Smart Text-to-Speech (TTS)**: Utilizes the Web Speech API to access all native OS voices (Google, Microsoft, Apple) without API keys. |
| 43 | +* **Real-Time Synchronization**: Highlights words exactly as they are spoken, aiding comprehension and retention. |
| 44 | +* **Variable Speed Playback**: Adjustable granular speed control from **0.5x (Study Mode)** to **3.0x (Skim Mode)**. |
| 45 | +* **Sentence Mode**: Toggle between word-level highlighting for precision or sentence-level for flow. |
| 46 | + |
| 47 | +### 👁️ Visual Intelligence & Focus |
| 48 | +* **Spotlight Cursor**: A premium, "Onlook-style" glow effect that tracks your mouse, reducing eye strain and improving reading focus. |
| 49 | +* **Focus Mode**: Instantly blurs the surrounding UI, dimming distractions so you can focus solely on the text. |
| 50 | +* **Smart Theming**: seamless toggle between **Light**, **Dark** (OLED optimized), and **Sepia** (Paper-like) modes to suit any lighting condition. |
41 | 51 |
|
42 | | -- 📚 **Students** — Listen to textbooks and papers while studying or multitasking |
43 | | -- 🔬 **Researchers** — Process long academic papers by ear |
44 | | -- ♿ **People with reading difficulties** — Dyslexia, visual impairments, or reading fatigue |
45 | | -- 💼 **Professionals** — Listen to reports and documents hands-free |
46 | | -- 🌍 **Language learners** — Hear correct pronunciation while reading |
47 | | -- 👨💻 **Developers** — Read documentation without eye strain |
| 52 | +### ⚡ Performance & Engineering |
| 53 | +* **Custom Virtualization**: Why load 500 pages when you only read one? A custom virtualization engine renders only visible pages, ensuring 60FPS scrolling even on large textbooks. |
| 54 | +* **Responsive Design**: A unified UI that adapts from desktop monitors to mobile screens, featuring a touch-friendly drawer and controls. |
| 55 | +* **Anchor Scrolling**: Intelligent scroll position maintenance during zoom operations—no more losing your place when resizing. |
48 | 56 |
|
49 | 57 | --- |
50 | 58 |
|
51 | | -## ✨ Features |
52 | | - |
53 | | -### 🔊 Text-to-Speech Engine |
54 | | -- **Word-by-word reading** with precise highlighting |
55 | | -- **Human-sounding pauses** — natural breaks at commas, periods, paragraphs, and headings |
56 | | -- **Sentence highlighting mode** — highlights the full sentence being read |
57 | | -- **50+ voices** — choose from all voices available on your system |
58 | | -- **Speed control** — 0.5× (slow) to 3× (fast) with instant switching |
59 | | -- **Voice preview** — listen to any voice before selecting it |
60 | | - |
61 | | -### 📄 PDF Viewer |
62 | | -- **Drag-and-drop upload** — or click to browse |
63 | | -- **Click any word to start** — reading begins from exactly where you click |
64 | | -- **Zoom controls** — keyboard, buttons, scroll wheel, and fit-to-width |
65 | | -- **Page navigation** — jump to any page instantly |
66 | | -- **Virtualized rendering** — handles 300+ page PDFs without lag |
67 | | -- **Auto-scroll** — follows the current word as you read |
68 | | - |
69 | | -### 🔍 Smart Features |
70 | | -- **Dictionary lookup** — right-click any word for instant definitions |
71 | | -- **Heading detection** — automatically emphasizes titles and headings |
72 | | -- **Punctuation-aware pauses** — commas get short pauses, periods get longer ones |
73 | | -- **Speed-scaled pauses** — pauses adjust automatically at different speeds |
74 | | - |
75 | | -### 🎨 User Experience |
76 | | -- **Three themes** — Light, Dark, and Sepia |
77 | | -- **Keyboard shortcuts** — Space (pause/resume), Escape (stop), ? (help) |
78 | | -- **Toast notifications** — instant feedback for all actions |
79 | | -- **Welcome guide** — interactive tutorial for first-time users |
80 | | -- **"Go to Current Word"** — jump back to your reading position after scrolling |
81 | | - |
82 | | -### 🔒 Privacy & Security |
83 | | -- **100% local** — your PDF never leaves your computer |
84 | | -- **No uploads** — zero network requests (except optional dictionary) |
85 | | -- **No accounts** — no login, signup, or registration |
86 | | -- **No tracking** — no analytics, cookies, or fingerprinting |
87 | | -- **No data storage** — only localStorage for your theme preference |
88 | | -- **Open source** — inspect every line of code yourself |
| 59 | +## 🛠️ Technical Stack |
| 60 | + |
| 61 | +Built with the bleeding edge of modern web development: |
| 62 | + |
| 63 | +* **Runtime**: [React 19](https://react.dev) (Leveraging new hooks and concurrent features) |
| 64 | +* **Build Tool**: [Vite 6](https://vitejs.dev) (Instant HMR and optimized production builds) |
| 65 | +* **Language**: [TypeScript 5](https://www.typescriptlang.org) (Strict type safety for reliability) |
| 66 | +* **Styling**: [Tailwind CSS v4](https://tailwindcss.com) (Utility-first, zero-runtime CSS) |
| 67 | +* **PDF Core**: [PDF.js](https://mozilla.github.io/pdf.js/) (Standard-compliant PDF parsing) |
| 68 | +* **Icons**: [Lucide React](https://lucide.dev) (Clean, consistent iconography) |
89 | 69 |
|
90 | 70 | --- |
91 | 71 |
|
92 | 72 | ## 🚀 Quick Start |
93 | 73 |
|
| 74 | +Get up and running in less than 2 minutes. |
| 75 | + |
94 | 76 | ### Prerequisites |
95 | | -- [Node.js](https://nodejs.org/) (version 18 or higher) |
96 | | -- A modern browser (Chrome or Edge recommended for best voice selection) |
| 77 | + |
| 78 | +* **Node.js**: v18 or higher recommended. |
| 79 | +* **Browser**: Chrome, Edge, Safari, or Firefox (Chromium browsers recommended for best voice variety). |
97 | 80 |
|
98 | 81 | ### Installation |
99 | 82 |
|
100 | | -```bash |
101 | | -# Clone the repository |
102 | | -git clone https://github.com/analystsandeep/pdf-text-to-speech-reader.git |
| 83 | +1. **Clone the repository** |
| 84 | + ```bash |
| 85 | + git clone https://github.com/analystsandeep/pdf-text-to-speech-reader.git |
| 86 | + cd pdf-text-to-speech-reader |
| 87 | + ``` |
| 88 | + |
| 89 | +2. **Install dependencies** |
| 90 | + ```bash |
| 91 | + npm install |
| 92 | + # or |
| 93 | + pnpm install |
| 94 | + # or |
| 95 | + yarn install |
| 96 | + ``` |
| 97 | + |
| 98 | +3. **Start the development server** |
| 99 | + ```bash |
| 100 | + npm run dev |
| 101 | + ``` |
| 102 | + |
| 103 | +4. Open `http://localhost:5173` to view the app. |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +## 🎮 Usage Guide |
| 108 | + |
| 109 | +### Keyboard Shortcuts |
| 110 | +Power users can navigate without touching the mouse: |
103 | 111 |
|
104 | | -# Navigate to project folder |
105 | | -cd pdf-text-to-speech-reader |
| 112 | +| Key | Action | |
| 113 | +| :--- | :--- | |
| 114 | +| <kbd>Space</kbd> | Play / Pause reading | |
| 115 | +| <kbd>Esc</kbd> | Stop reading / Close active modal | |
| 116 | +| <kbd>/</kbd> | Search / Open help | |
| 117 | +| <kbd>?</kbd> | Toggle Keyboard Shortcuts list | |
| 118 | +| <kbd>Ctrl</kbd> + <kbd>+</kbd> | Zoom In | |
| 119 | +| <kbd>Ctrl</kbd> + <kbd>-</kbd> | Zoom Out | |
| 120 | +| <kbd>Ctrl</kbd> + <kbd>0</kbd> | Reset Zoom to Fit Width | |
106 | 121 |
|
107 | | -# Install dependencies |
108 | | -npm install |
| 122 | +### Gestures & Mouse |
| 123 | +* **Click Word**: Start reading from that specific word. |
| 124 | +* **Double Click**: Pause playback. |
| 125 | +* **Right Click Word**: Define word (Dictionary lookup). |
| 126 | +* **Scroll Wheel**: Navigate document. |
| 127 | +* **Ctrl + Scroll**: Zoom in/out. |
109 | 128 |
|
110 | | -# Start the app |
111 | | -<<<<<<< HEAD |
112 | | -npm run dev |
113 | | -======= |
114 | | -npm run dev |
115 | | ->>>>>>> ecc14c2591baff4b9aa0ad5fcbd1bb5fd626daaa |
| 129 | +--- |
| 130 | + |
| 131 | +## 🤝 Contributing |
| 132 | + |
| 133 | +Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. |
| 134 | + |
| 135 | +1. Fork the Project |
| 136 | +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) |
| 137 | +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) |
| 138 | +4. Push to the Branch (`git push origin feature/AmazingFeature`) |
| 139 | +5. Open a Pull Request |
| 140 | + |
| 141 | +--- |
| 142 | + |
| 143 | +## 📄 License |
| 144 | + |
| 145 | +Distributed under the MIT License. See `LICENSE` for more information. |
| 146 | + |
| 147 | +--- |
| 148 | + |
| 149 | +<div align="center"> |
| 150 | + |
| 151 | +**Developed for the Open Source Community** |
| 152 | +[Analyst Sandeep](https://github.com/analystsandeep) |
| 153 | + |
| 154 | +</div> |
0 commit comments