Notes-to-audio web app built on React and AWS. PDF or plain text in, MP3 out in ~20–30 seconds.
Live App: https://audi-tory.vercel.app
Visit https://audi-tory.vercel.app and:
- Upload a PDF or paste your notes as plain text
- Choose a style, length, and voice
- Hit Generate Audio — takes ~20–30 seconds
- Play or save the MP3
| Style | What it does |
|---|---|
Core Concepts |
Identifies the key concepts in your notes and explains each one in depth |
Podcast |
Rewrites your notes as a natural, conversational audio script |
Readback |
Reads your notes back clearly and faithfully, no expansion |
| Length | Target | Best for |
|---|---|---|
Short |
~200 words | Quick review, sparse notes |
Medium |
~800 words | Standard study session |
Long |
~1800 words | Deep dive, dense notes |
| Voice | |
|---|---|
| Matthew | Masculine |
| Stephen | Masculine |
| Joanna | Feminine |
| Ruth | Feminine |
To run this locally:
git clone https://github.com/EshanPrakash/audi-tory.git
cd audi-tory/backend
pip install -r requirements.txtCreate a .env file in the project root:
AWS_REGION=us-east-1
S3_BUCKET=your-s3-bucket
BEDROCK_MODEL_ID=us.anthropic.claude-haiku-4-5-20251001-v1:0
LOCAL_OUTPUT_PATH=/path/to/output.mp3
Run the pipeline locally with sample notes:
python test_pipeline.py
python test_pipeline.py --notes black_holes --style podcast --length medium
python test_pipeline.py --pdf /path/to/notes.pdf --style concepts --length short
python test_pipeline.py --voice Joannacd frontend
npm install
npm run devCreate frontend/.env:
VITE_API_URL=https://your-api-gateway-url/prod/process
Visit http://localhost:5173.
To deploy the backend (Lambda + API Gateway):
cd backend
./deploy.shaudi-tory takes your notes and turns them into a generated audio file:
- PDF or plain text: upload a PDF or paste notes directly — both go through the same pipeline
- Three output styles: Core Concepts breaks your notes into explained topics, Podcast rewrites them conversationally, Readback reads them faithfully as-is
- Three lengths: Short (~200 words) for quick review, Medium (~800 words) for standard study, Long (~1800 words) for deep coverage
- Four neural voices: Matthew and Stephen (masculine), Joanna and Ruth (feminine)
- Processing time: ~20–30 seconds end to end (Bedrock + Polly async)
- Audio expiry: presigned S3 URL valid for 1 hour after generation
- Input limits: 5MB max for PDFs, 50,000 characters max for plain text
- Concurrency: serverless — scales automatically with demand
- Fully serverless — no backend server to maintain
- Rate limiting: 2 req/sec, burst of 5
- Auto-deletes generated audio from S3 after 24 hours
The core pipeline lives in backend/pipeline.py and runs as four steps:
extract_text_from_pdf— extracts raw text from an uploaded PDF using pypdfgenerate_script— sends the text to Claude Haiku via Bedrock with a style/length prompt, returns a clean spoken-word scriptsynthesize_audio— submits the script to Polly as an async neural TTS task, polls until complete, stores MP3 in S3get_download_url— generates a presigned S3 URL valid for 1 hour
Plain text input skips step 1 and goes directly to step 2.
MIT License - see LICENSE file.