Hawking
Link to open source: https://github.com/barryspacezero/Hawking
Link to Live Project: https://stream.nexsof.tech
Hawking is a text-to-speech reading app. It allows users to upload PDF, DOCX, EPUB, and other document formats, reads them aloud with word/sentence highlighting synced to the audio, and offers voice cloning and library organization features.
The application follows a decoupled client-server architecture:
- Frontend: Single Page Application (SPA) built with React and Vite. It handles document upload, displays the document library, renders parsed chunk text, and manages per-block audio generation, polling, and playback.
- Block text rendering:
ReaderBlockTextis the single shared component for parsed block text everywhere Document Detail shows readable text — Text View, Original view (TXT blocks), and the PDF read-along panel. It layers playback word highlights (outer span +bg-brandbackground) and optional bionic bold segments (renderBionicInlineinside each word). Word/timestamp pairing lives intextHighlight.ts(assignWordTimestampswith search-ahead + number-word equivalence). - Backend: REST API built with FastAPI. It handles multi-format document parsing and delegates TTS synthesis to a sequential in-process job queue (
backend/tts/job_queue.py). - TTS Layer: Kokoro TTS model is loaded into memory exactly once as a Singleton. Audio generation runs through
TTSJobQueue, which processes one job at a time on a background worker thread (document Kokoro jobs and Voice Clone Studio Chatterbox jobs share the same queue). Additional requests are queued (not dropped, not run in parallel). - Database: SQLite via SQLAlchemy. Contains
documentsanddocument_blocks.- Data Modeling: The text is parsed into a
document_blockstable storing ordered chunks.
- Data Modeling: The text is parsed into a
- File Storage: Generated audio files are stored in a persistent local directory (
backend/data/audio) and served via API endpoints.
This build was uploaded as a hackathon project