A modern web application that converts web novels from Novelhi.com into high-quality audiobooks using advanced text-to-speech technology. (Current Time only works with LOTM will add a tag setter soon)
- 🎤 High-Quality TTS: Uses Kokoro TTS for natural-sounding audio generation
- 🌐 Web Scraping: Automatically extracts novel content from Novelhi.com URLs
- 🎨 Modern UI: Clean, responsive design with glassmorphism effects
- ⚡ Real-time Processing: Live audio status updates and streaming
- 📱 Mobile Responsive: Works seamlessly on all devices
- 🎯 Easy to Use: Simple URL input with one-click conversion
- Node.js (v16 or higher)
- Python (3.8 or higher)
- FFmpeg (for audio processing)
- Git
-
Clone the repository
git clone <repository-url> cd WNReader
-
Install FFmpeg
macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt update sudo apt install ffmpeg
Windows: Download from FFmpeg official website
-
Setup Frontend
cd WNR-frontend npm install npm install react-router-dom -
Setup Backend
cd ../backend python -m venv venv # Activate virtual environment # On macOS/Linux: source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
cd backend
# Activate virtual environment if not already activated
source venv/bin/activate # macOS/Linux
# or
venv\Scripts\activate # Windows
python app.pyThe backend server will start on http://127.0.0.1:5000
cd WNR-frontend
npm run devThe frontend will be available at http://localhost:5173
- Navigate to the application in your browser
- Enter a Novelhi.com URL in the input field
- Click "Convert to Audio" to start the conversion process
- Wait for processing - the system will scrape the novel content and generate audio
- Play the generated audio using the built-in audio player
WNReader/
├── backend/ # Flask API server
│ ├── app.py # Main Flask application
│ ├── requirements.txt # Python dependencies
│ ├── webScrape.py # Web scraping utilities
│ └── venv/ # Python virtual environment
├── WNR-frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── Pages/ # Page components
│ │ ├── CSS/ # Stylesheets
│ │ └── App.jsx # Main app component
│ ├── package.json # Node.js dependencies
│ └── index.html # HTML template
└── README.md # This file
POST /api/url- Submit a URL for processingGET /api/audio- Download the generated audio fileGET /api/audio/status- Check audio file status
/- Home page with welcome message/URL- URL input and audio conversion page
- React 19.1.0 - Modern UI framework
- React Router DOM - Client-side routing
- Axios - HTTP client for API calls
- Vite - Fast build tool and dev server
- CSS3 - Modern styling with glassmorphism effects
- Flask 3.1.1 - Python web framework
- Flask-CORS - Cross-origin resource sharing
- Kokoro TTS - Advanced text-to-speech engine
- BeautifulSoup4 - Web scraping library
- FFmpeg - Audio processing and concatenation
- PyTorch - Machine learning framework for TTS
- Glassmorphism UI - Modern translucent design elements
- Neutral Color Palette - Professional gray and white theme
- Responsive Design - Works on desktop, tablet, and mobile
- Smooth Animations - Hover effects and transitions
- Loading States - Visual feedback during processing
- Error Handling - User-friendly error messages
- URL Submission: User enters a Novelhi.com URL
- Web Scraping: Backend extracts novel content using BeautifulSoup
- Text Processing: Content is cleaned and formatted for TTS
- Audio Generation: Kokoro TTS converts text to high-quality audio
- File Management: Audio chunks are combined using FFmpeg
- Streaming: Frontend polls for audio status and streams the result
FFmpeg not found:
# Ensure FFmpeg is installed and in your PATH
ffmpeg -versionPython dependencies issues:
# Reinstall requirements in a fresh virtual environment
python -m venv new_venv
source new_venv/bin/activate
pip install -r requirements.txtAudio generation fails:
- Check that the URL is from Novelhi.com
- Ensure sufficient disk space for audio files
- Verify FFmpeg installation
Frontend build issues:
# Clear node modules and reinstall
rm -rf node_modules package-lock.json
npm install- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Kokoro TTS for providing high-quality text-to-speech capabilities
- Novelhi.com for hosting web novels
- React and Flask communities for excellent documentation
If you encounter any issues or have questions:
- Check the troubleshooting section
- Search existing issues
- Create a new issue with detailed information
Made with ❤️ for web novel enthusiasts