🎮 Subway Surfers Text-to-Video Generator
Behold: a Flask-powered monstrosity that slaps together gameplay footage, TikTok voices, and on-point captions—giving your boring text the glow-up it never knew it needed.
⚡ What the Heck Is This?
Turn your articles—or your random stream-of-consciousness into short-form crack. With Subway Surfers gameplay. Because apparently, our brains now need dopamine and parkour to learn a damn thing. This app makes it fast, fun, and freakishly effective. Get that sweet virality hit.
📸 Screenshots
🆕 Version 1.1.22 — We’re Not in Beta Anymore, Baby
🏁 It’s production-ready, polished, and packs some serious features:
- ✅ WhisperASR joins the party for laser-accurate captions
 - ✅ Will chew through long text like a pro—no irritating cutoffs
 - ✅ Fine-tuned caption timing for when milliseconds matter
 - ✅ Docker build now squeaky clean and snappy
 - ✅ Wiped all temps and test outputs—Marie Kondo would be proud
 
🚀 Previously on "Holy Hell, This App Got Stuff"
- ✅ Watch your video generate in real time like it's 1999
 - ✅ Choose your favorite TikTok voice—Brian or bust
 - ✅ Browse your masterpieces in-app like a proper social media producer
 - ✅ Survives crashes like a cockroach in an apocalypse
 
📜 Wanna see the full changelog? It’s hanging out in version.py.
✨ Magical Powers (aka Features)
🎬 Video Generation Wizardry
- Scrape the useful text from pages or input it directly
 - Narration via TikTok’s vocal besties
 - Subtitles locked in like clockwork—with tweakable timing
 - Auto-looping gameplay on repeat while your message goes viral
 - See every glorious progress bar along the way
 
🎙️ Text-To-Speech Goodness
- TikTok voices so real, it’s uncanny
 - Plays nice with long texts, even War and Peace levels
 - Strip-clean text for pronunciation perfection
 - Adjustable speed so you can go Morgan Freeman slow or auctioneer fast
 
📱 Sleek, Sexy UI
- Modern, mobile-ready, and not hideous to look at
 - Watch your progress actually progress
 - Full-on video manager and preview
 - Flash messages for feedback, because silence is for losers
 
🔧 Under-the-Hood Insanity
- WhisperASR makes sure your captions don’t miss a beat
 - Dockerified for painless deployment
 - Configuration heaven (caption offsets, model paths, the works)
 - Doesn’t crash when life gives you lemons
 
🚀 Quickstart: Make It Go Brrr
🧙 You Will Need
- Python 3.12+ and pip (no dinosaurs allowed)
 - FFmpeg (the secret sauce)
 - OR Docker (the easy button)
 
Installation Path #1: Docker All the Damn Way (Recommended)
docker run -p 5000:5000 \ -e WHISPER_ASR_URL=http://your-whisper-server:9000 \ -v /path/to/videos:/app/static \ tebwritescode/subwaysurfers-text20:latest
Or slap it up with Docker Compose:
docker-compose up -d
Installation Path #2: Do It Yourself, You Brave Nerd
git clone https://github.com/tebwritescode/subwaysurfers-text-multi.git cd subwaysurfers-text-multi python3.12 -m venv .venv source ./.venv/bin/activate pip install -r requirements-pip.txt
Now for the secret ingredients:
- 👂 Get the Vosk model:
https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip
Unzip that sucker into./static/vosk-model-en-us-0.22/ - 🎮 Add background gameplay to 
./static/(grab a sample:
https://drive.google.com/file/d/1ZyFZKIB1HiZM_XDQPRRiiAIvU4sgl10k/view) 
Fire. It. Up:
python app.py # Or the Flask way flask run
Then slide into http://localhost:5000 and get generating.
🛠️ Tweaky Settings (Because You’re Fancy)
| Name | Default | What It Does | 
|---|---|---|
FLASK_PORT | 
5000 | Port for your web wizardry | 
WHISPER_ASR_URL | 
http://localhost:9000 | Caption whisperer’s URL | 
CAPTION_TIMING_OFFSET | 
0.25 | Controls how early/late your captions appear | 
SOURCE_VIDEO_DIR | 
./static | Folder where your gaming chaos lives | 
MODEL_PATH | 
./static/vosk-model-en-us-0.22 | Location of Vosk’s big brain | 
DOCKER_ENV | 
false | Flip to true when running in a container | 
Quick Docker deploy reminder:
docker run -p 5000:5000 \ -e WHISPER_ASR_URL=http://your-whisper-server:9000 \ -e CAPTION_TIMING_OFFSET=-0.1 \ -v /path/to/videos:/app/static \ tebwritescode/subwaysurfers-text20:latest
📖 How to Wield the Power
Generate a Video, Baby
- Stroll over to the homepage
 - Drop in your favorite copy-pasta, or slap in a URL
 - Pick a voice (Jessie? Brian? Stitch? Go wild.)
 - Adjust speech speed if you’re feeling fancy
 - Click “Generate” and watch the sausage being made
 - Download or stream the glorious final product
 
Voices You’ll Love or Hate
- Jessie — sassy, spunky, sounds like TikTok
 - Brian — Very British. Probably drinks earl grey.
 - Stitch — You already know he’s up to something.
 - Echo — Narrates your life like it’s a gritty documentary.
 - Oh, and more. Because OF COURSE there are more.
 
Hand-Picked Gameplay Backgrounds (aka: dopamine fuel)
- Subway Surfers
 - Minecraft parkour (aka sweaty palms)
 - Pokémon
 - Factorio (factory go brrr)
 - StarCraft battles
 - Oddly satisfying slice clips
 
🏗️ How It All Stacks
subwaysurfers-text-multi/ ├── app.py # Flask brainstem ├── sub.py # Turns text into magic ├── tiktokvoice.py # Talks like TikTok ├── whisper_timestamper.py # Whisper those timestamps ├── videomaker.py # Mashes video + captions ├── cleantext.py # Makes your input less gross ├── version.py # Keeps track of app’s many glow-ups ├── requirements-pip.txt # Stuff Python needs ├── requirements-docker.txt # Stuff Docker needs ├── Dockerfile # Bottle it up ├── docker-compose.yml # Auto-magic orchestration ├── templates/ # HTML for humans ├── static/ # Game videos and models └── final_videos/ # Birthplace of brilliance
💻 Tech Stack:
- Backend: Python 3.12, Flask
 - TTS: Our buddy TikTok
 - Speech: Vosk + Whisperlore
 - Video: MoviePy, FFmpeg, OpenCV madness
 - Frontend: HTML/CSS/JS that doesn’t suck
 - Container: Yeah, Docker is here too
 
🔐 Don’t Worry, It’s Not Sketchy
- Input gets sanitized so trolls don’t win
 - Malicious URLs? Denied at the gate
 - Files renamed so they don’t nuke your machine
 - Docker gives it adult supervision
 - No login required—public chaos only
 
🛠️ For the Code-Wranglers
Test Everything Before You Wreck Everything
python app.py --test ./clean.sh # Delete past masterpieces ./concat.sh # Process like a content farm
Build the Docker Unicorn
docker buildx build --platform linux/amd64,linux/arm64 \ -t tebwritescode/subwaysurfers-text20:latest \ -t tebwritescode/subwaysurfers-text20:v1.1.22 \ --push .
🐞 Known Bugs (We Keep It Real)
- Big videos = big wait times. Queue a snack.
 - Weird characters might bamboozle the TTS
 - Long articles can piss off your browser—keep it snack-sized
 - WhisperASR server required if you actually want captions to line up
 
📊 Performance Stats
- 2-5 minutes per minute of final vid
 - Eats up to 10,000 words like a champ
 - Optimized for videos under 10 mins
 - Section-splits large rants for smoother sailing
 
🛣️ Roadmap (aka what’s cookin’)
- Delegate video crunching to its own nerdy container
 - Let users pick their gameplay drug of choice
 - Upload your own gameplay, you control freak
 - More voice options (maybe Darth Vader?)
 - Sneak peeks as the sausage gets stuffed
 - Mass-processing for the content addicted
 
🤝 Wanna Contribute? We Like You Already
- Fork it like it’s hot
 - Branch out: 
git checkout -b feature/amazing-feature - Test until it breaks
 - Push your magic: 
git push origin feature/amazing-feature - Make that Pull Request and show us what you got
 
📝 License Stuff
MIT License. You’re free to do most things, just don’t sue us.
👑 Made with caffeine, chaos, and code by tebbydog0605
📦 Docker Hub: tebwritescode
🌐 Website: teb.codes