Skip to content

Repository files navigation

Jack Black opening book

ECHO

Echo is a mobile app that creates fully produced, character-voiced audiobooks from any book file, ready to listen to anywhere. Upload a PDF or EPUB and Echo processes every line of text, identifies every character, builds a voice for them, and narrates the story with the weight and emotion it deserves. Don't like a voice Echo picked? Customize it to your liking, or clone a voice sample you're particularly fond of. Make your stories come to life with Echo.

MVP

  • Text extraction from PDF/EPUB/TXT/MD files
  • LLM-generated narration script (JSON output with speaker, text, language, emotional tone)
  • AI TTS audio output via Qwen3-TTS
  • AWS S3 for audio storage, Supabase for database/auth
  • Mobile app with Library, Upload, Media Player, Character Customization, and Profile screens
  • Character voice customization (describe a voice or upload a clip to clone one)
  • Offline playback position sync (remembers where you left off, synced across devices)
  • Sleep timer

Stretch Goals

  • Voice activation with wake word + command
  • Text tracking/highlighting in the book as each line is narrated
  • Spoiler-free book/chapter/character summaries
  • Generated pixel art character portraits (or user-uploaded pictures)
  • Character Chat — talk to the characters and have them respond to you
  • Audiobook sharing hub and community features (browse shared audiobooks, comments/reviews, favorites)
  • Audiobook MP3 export with chapter markers
  • A way to acknowledge pictures/illustrations, footnotes

Timeline

Week Frontend Backend
1 Assign roles
Install Node, Expo CLI, Python
Learn Git
Come up with a basic layout and plan for the mobile app
Come up with a design theme and create pages in Figma
Download the Qwen3-TTS model and have everyone play with it for a bit
Download a local LLM model and test it out with text processing
Set up Supabase and S3 storage containers
Decide on a schema for how we will store all our data
2 Set up Expo and start building the frontend
Create barebones pages with just navigation
Create a basic version of the FastAPI laptop server: text → LLM processing → TTS → audio
3 Create media player screen with playback capabilities: play/pause, seek bar, rewind/skip, previous/next chapter, playback speed Connect the laptop server to S3 and Supabase
Create a way to identify all characters in a story and create a profile for each
4 Create Characters screen with components for creating/editing a voice and creating/editing a character sprite Get the laptop server working at the scale of an entire book — lots of testing
5 Create home library screen, profile screen, and upload book screen Create playback position syncing feature (so you don't lose your place when listening offline)
6 Integration! Frontend features call actual data from S3 and Supabase instead of mock data Create voice editing pipeline: changing a character's voice re-synthesizes all of that character's lines and re-stitches the audiobook
7 Voice activation on the media player using wake word + command Integrate laptop server with mobile app so processing is called from the app; gate these features so they're only available while connected to the laptop server
8 Final polishing + stretch goals Final polishing + stretch goals
Run the full pipeline on a few books and test the results
9 Presentation prep! ✨ Presentation prep! ✨

Tech Stack


Software to Install

  • Node.js + npm + Expo CLI
  • React Native + NativeWind (Tailwind for React Native)
  • Python and pip
  • Git + GitHub
  • Ollama
  • VS Code (or your preferred IDE)
  • Supabase account + CLI
  • AWS

GitHub Cheat Sheet

Command Description
cd Change directories over to our repository
git status See what's changed, staged, or untracked in your working directory
git branch Lists branches for you
git branch "branch name" Makes new branch
git checkout "branch name" Switch to branch
git checkout -b "branch name" Same as 2 previous commands together
git branch -d "branch name" Delete a local branch (safe — only works if merged)
git branch -D "branch name" Force-delete a local branch (even if unmerged)
git add . Finds all changed files and adds them to git tracking
git commit -m "Testing123" Commit with message
git push origin "branch" Push to branch
git pull origin "branch" Pull updates from a specific branch
git fetch origin Download changes from remote without merging them into your local branch
git merge "branch name" Merge specified branch into your current branch
git merge --abort Cancel a merge if you hit conflicts and want to back out
git commit hash (find on GitHub or run git log --oneline in the terminal), then run git revert <commit-hash> --no-edit Undo a commit that has been pushed
git reset --soft HEAD~ Undo commit (not pushed) but keep the changes
git rm --cached "filename" Remove a file from git tracking but keep it locally
git rm -r --cached "foldername" Remove a folder from git tracking but keep it locally

The Team

  • Project Manager: Allen Zheng
  • Industry Mentor: Srinivas Bojja
  • Team member: Nitish Raj
  • Team Member: Nicole
  • Team Member: Juwairiya
  • Team Member: Zed Bradley

About

Bring your stories to life with Echo!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages