A YouTube live stream song request queue system with drum removal processing and OBS overlay support.
- Monitors YouTube live chat for song requests
- Downloads and processes songs (removes drums using Demucs)
- Queue management GUI with playback controls
- Real-time queue overlay for OBS (works across different computers)
- Firebase sync for remote queue display
- Python 3.8+
- PyTorch (with MPS support for Apple Silicon, or CPU)
- Internet connection for YouTube and Firebase
pip install -r requirements.txtFor production use, follow the detailed guide: FIREBASE_SETUP.md
Quick setup with config file (easiest):
- Go to Firebase Console
- Create a new project (or use existing)
- In the project, go to Realtime Database (not Firestore)
- Click Create Database → choose your region → Start in locked mode (for production)
- Download service account (see FIREBASE_SETUP.md Step 4)
- Copy
firebase_config.json.exampletofirebase_config.json:cp firebase_config.json.example firebase_config.json
- Edit
firebase_config.jsonwith your values:{ "firebase_url": "https://your-project-default-rtdb.firebaseio.com", "service_account_path": "firebase-service-account.json" }
Alternative: Use environment variables (see FIREBASE_SETUP.md)
Edit chatops.py and change the channel URL on line 21:
channel_url = "https://www.youtube.com/@yourchannel"Or configure it in the GUI after launching.
- Make sure
FIREBASE_URLenvironment variable is set - Run the GUI:
python gui.pyThe application will:
- Connect to the YouTube live chat
- Listen for
/request <song name>commands - Download and process songs (remove drums)
- Sync queue state to Firebase in real-time
See the obs_computer/README.md file for detailed setup instructions.
Quick setup:
- Copy the
obs_computerfolder to your OBS computer - Edit
overlay.htmland set yourFIREBASE_URL - In OBS, add a Browser source pointing to
overlay.html - Position and style as needed
Users in the YouTube live chat can request songs by typing:
/request song name or artist
For example:
/request Never Gonna Give You Up
/request Rick Astley
- Processing Queue: Shows songs being downloaded/processed
- Ready Queue: Songs ready to play
- Reorder with "Move Up"/"Move Down" buttons
- Delete unwanted songs
- Now Playing: Current song with playback controls
- Add Manual Request: Add songs without chat command
- Keep file after playing: Check to preserve processed audio files
temp_music/ # Downloaded audio (temporary)
output_music/ # Processed audio (drums removed)
obs_computer/ # OBS overlay files
Edit obs_computer/overlay.html - all styles are in the <style> section at the top. You can customize:
- Colors and transparency
- Fonts and sizes
- Layout and spacing
- Animations (add your own CSS animations!)
Edit songprocessor.py to adjust:
- Demucs model (line 13)
- Audio quality settings
- Output format
Problem: Overlay shows "No songs" even when queue has items
Solutions:
- Verify
FIREBASE_URLis set correctly on both computers - Check Firebase Console → Realtime Database to see if data is being written
- Look for error messages in the terminal/console
- Make sure Firebase database rules allow read/write (test mode)
Problem: "No live stream found" error
Solutions:
- Make sure the channel has an active live stream
- Verify the channel URL is correct
- Check your internet connection
- YouTube may be rate-limiting - wait a few minutes and retry
Problem: Songs don't play or skip immediately
Solutions:
- Check that files exist in
output_music/folder - Try different audio formats (edit
songprocessor.py) - Verify PyQt5 multimedia components are installed correctly
Problem: "Failed to update Firebase" messages
Solutions:
- Check internet connection on queue computer
- Verify Firebase URL is correct (should end with
.firebaseio.com) - Check Firebase Console for any outages
- Ensure
requestslibrary is installed:pip install requests
This system works across networks because:
- Both computers connect to Firebase (cloud service)
- No direct connection between computers needed
- Works on restricted networks (like schools) that allow HTTPS
- Firebase handles all the real-time synchronization
Latency: Typically 50-200ms for updates to appear on OBS overlay.
For production use, you MUST set up proper authentication!
See FIREBASE_SETUP.md for complete production setup instructions including:
- Service account authentication
- Secure Firebase rules
- Best practices for protecting credentials
The quick test mode setup is only for testing - anyone can read/write your database in test mode!
- Demucs: Audio source separation by Facebook Research
- pytchat: YouTube live chat library
- yt-dlp: YouTube download library
MIT License - feel free to modify and use for your streams!