Home
Getting started
- Overview
- Docker (recommended)
- Linux
- Windows
- Demucs Microservice (optional)
- Client configuration
- Backup/Restore and Upgrade
Features
- Queue page
- Media page
- Stage display
- Media Editing
Configuration
- Environment Configuration
- Settings Page
- include most recommended user configuration
- Karaoke Processing
- WhisperX Lyrics
- Application Paths
- Downloads
- Stage
- Tools
- Custom Lyrics Providers
Tasks
- For Users
- use a curated list of links
- Karaoke Tasks
- queue a premade karaoke video
- queue a song as another user
- control queue remotely
- Create AI Karaoke
- create karaoke from lyrics video
- create karaoke from music video
- modify existing video to create karaoke
- separate vocals from premade karaoke video
- fastest/best-case karaoke
- add vocals to premade karaoke
- Stage & Branding
- display QR code for scanning
- add lobby loop
- add customized branding to your karaoke event
- iPhone/iPad as stage dispaly
- Server Administration
- using Cloudflare tunnel or Tailscale to expose remote Demucs service
- restrict usage to only users connected to guest Wi-Fi
- use proxy server for downloading
- server monitoring
- manage server and media externally
- resynchronize inaccurate WhisperX lyrics
- adjust video duration and metadata
- modernize CDG formats
Troubleshooting > troubleshooting/index.md
- application bind port
- vocal separation very slow
- yt-dlp fails to download
- iOS playback issues
- WhisperX bad synchronization
- Cannot find lyrics
- Connectivity to Demucs failed
- Inconsistent lines in karaoke
Deployment
- Recommended Deployment
User facing readme
DMKaraoke
image
DMKaraoke is a lightweight web application for home karaoke. It uses machine learning to separate the vocals and create word-by-word synced lyrics. The application is completely free, with no advertisements, zero cloud subscription fees and it creates karaoke on your own device.
Table of Content
- quick start
- features
- comparison
- contribution
- license
Quick Start
This section is meant to be a very quick guide to get it running fast for most people with mostly default settings, for detailed configuration and usage, please review the detailed installation guidein the documentation.
Karaoke App Only
For a typical Linux home server setup, Docker installation is recommended and it’s listed here.
- download docker compose and .env.example
wget https://raw.githubusercontent.com/vttc08/demucs-karaoke-app/refs/heads/main/compose.yml
wget https://github.com/vttc08/demucs-karaoke-app/blob/main/.env.example- prepare the environment and folders
mkdir -p data
mv .env.example .env- application runs as non-root user by default, therefore data folder must be made beforehand
- you can change the
user: uid:gidto match your host permission
- configure environments using a text editor
vim,nano
- please review the both
environmentincompose.ymland.env, the default configuration should be sufficient for most use cases
Note: Musixmatch and LastFM token is a requirement to use this application, otherwise lyrics functionality will be degraded.
- LastFM Token
- Musixmatch Token (desktop app required): follow this guide
- Start the application
docker compose up # -d to start in the background and use docker compose logs -f- configure admin user and default presets
docker compose exec -it karaoke python scripts/admin_user.py create --username admin # enter your password
docker compose exec -it karaoke python scripts/default_presets.pyOptional: [configure stage loop](link to be added later)
You should be able to search, download or queue existing karaoke songs.
Demucs/WhisperX Service
For advanced features such as vocal separation and karaoke lyrics timing, Demucs service is required. This service can be installed on different computer, however, Nvidia GPU is preferred for CUDA acceleration, CPU only mode will work but it’s slower.
Note: I do not have a Linux machine with Nvidia graphics, therefore the steps are only tested on Windows, if you have experience running GPU accelerated machine learning in Linux or Docker, feel free to test and contribute.
Collapsed section: installing Demucs service
- Install Python 3.10
- only Python 3.10 has been tested and it works with all ML dependencies, newer Python versions may not work
- you can also try using
uvorconda, as long as you have a working virtual environment which can runwhisperxanddemucs, the application should run
- Download the code
git clone https://github.com/vttc08/demucs-karaoke-app- if Git is not available, you can download and extract as zip, and open the resulting folder in PowerShell
- Install dependencies
py -3.10 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pipDownload PyTorch
pip install torch==2.8.0+cu126 torchaudio==2.8.0+cu126 torchvision==0.23.0+cu126 --index-url https://download.pytorch.org/whl/cu126- choose CPU is your GPU doesn’t support CUDA
Project dependencies
cd demucs-karaoke-app # the location where you downloaded the code
cd demucs_svc
pip install -r requirements.txt- Run the application
uvicorn.exe app:app --host 0.0.0.0 --port 800- Verify application health
PyTorch
python -c "import torch, torchaudio; print(torch.__version__); print(torchaudio.__version__); print(torch.cuda.is_available())"Webapp
(curl.exe -fsSL http://localhost:8002/health | ConvertFrom-Json).status #ok
(curl.exe -fsSL http://localhost:8002/health | ConvertFrom-Json).supported_backends # demucs sherpa_spleeterUsing conda
Collapsed section: configuration web interface
Navigate to http://application:8000/login or the IP address (and baseUrl if configured) of the server running the main app, login and then navigate to /settings
Under Karaoke Processing, enter the IP address of the server you just installed Demucs service on.
- the main app server must be able to reach Demucs, check [troubleshooting](link updated later) if it cannot
- if the Demucs service is running on another network, you can use [Tailscale or Cloudflare Tunnels](to be linked later) for reachability
Scroll down to the bottom and click Check Demucs.
For more Demucs related configuration, please refer to [configuration/Karaoke Processing](to be linked later)
Clients
You’ll need preferably a Desktop computer that is capable of displaying HDMI out to a video display and output sound, the quickstart will not cover complex karaoke AV setup. Modern web browser such as Chrome, Edge, Firefox will work.
Android is also supported, and can display the stage. For iOS devices, multi-track audio is not supported, therefore iDevices cannot playback instrumental and vocals simultaneously. For more [iOS device limitations and workarounds](to be linked later).
Feature
User Queues: mobile friendly page for searching and adding songs with real-time updates
Download Videos and Lyrics: powered by YouTube library, Musixmatch and more, choose any karaoke style
Flexible Architecture: decouple heavy ML dependencies, keeping the main application lightweight and functional suitable for most deployments
AI/ML Karaoke Processing: remove vocals from songs (Demucs) and generate word by word karaoke timing (WhisperX)
Customizable Karaoke Display: change lyrics font, style and display on stage
Bring Your Own Media: upload your own songs/videos for AI/ML karaoke processing
Media Editor: basic video trimmer and subtitle editor for fixing minor karaoke inconsistencies
Highly Configurable: preconfigured with sensible default with fine tuning and scripting options
Multilingual: support English, Chinese and more for user interface and lyrics display
Table: standard YouTube karaoke, lyrics video + vocal removal, immersive (MV + lyrics)
Comparison
Why not YouTube karaoke (Sing King, Musisi, Zoom)?
There are many applications which also uses YouTube to display Karaoke, the limitations of simple YouTube video
not all songs have premade karaoke version, especially non-English songs
lyric styles and branding not customizable
turning on/off vocal backing tracks for practice
As long as there’s an audio and lyrics, this app can make karaoke tracks out of it
Translation
Currently, the application is translated in English, simplified/traditional Chinese and French, while the documentation is translated to simplified Chinese only. You can help translating.
The translation files are located in locales/ as <language_code>.json, containing JSON key value pairs of UI string and translated strings.
"lyrics.help_default": "Search or upload lyrics to continue.",Create a new file and add your translated strings. Please ensure all keys are translating before creating a pull request.
When completed, run the following commands to validate all keys are translated.
uv run pytest tests/routes/pages.py::test_locale_catalogs_have_matching_keys
uv run python scripts/audit_i18n.py --checkModifying translation strings are welcomed too.
Development
To add new features or fix bugs, please create a new branch.
git checkout -b feat/my-featureThe project uses uv for dependency management. Refer to Setup for configuring the environment with dependencies.
- the above link links to the official README.md link you’ll probably have to change it to README.dev.md
Run pytest before commit or pull request
uv run pytestWhen making a pull request, select the base branch dev instead of main.
For AI agents.
Please refer to the following files, the README.md is intended to be user-facing instructions.
- README.dev.md
- AGENTS.md
- ARCHITECTURE.md
- SCHEMA.md
- DEMUCS.md
- all relevant markdown files in docs/
License MIT