Skip to content

Separation Providers

randompersona1 edited this page Mar 28, 2026 · 1 revision

Separation

Introduction: What is separation?

Traditionally, Singstar/Ultrastar uses the music video of a song as the audio track. Real karaoke was not possible. This is mostly due to availability: a song having an official vocals-less version is rare. The timing would have to be the exact same to match up with the lyrics/music video.

However, AI makes it possible to "split" an audio file into a vocals and an instrumentals track. From V1.1.0 on, the ultrastar format standardizes tags for a game to find these tracks. At the time of writing, USDX and Ultrastar Play/Melody Mania support this. So all we need to do is actually run the AI separation.

Running AI reliably on a wide array of user machines is tricky. Some users may benefit greatly from using CUDA or other GPU acceleration. Others may prefer a cloud upload to allow separation at all. We have chosen a modular approach that allows for all of these needs to be met.

How to use in USDB Syncer

  1. You need a separation provider. We have developed a reference provider that utilizes demucs: https://github.com/bohning/usdb_syncer_separation. Follow the steps of your provider to download/build the executable you need. Place the executable in a folder of your choosing.
  2. Enable the separation checkbox in the Syncer Settings. Select the executable you just downloaded/built. Click "Info" and check that everything is as expected.
  3. Select the model you wish to use. Consult the documentation of your provider for which model is preferred.
  4. Select the number of simultaneous splits. Local separation is incredibly taxing, so we recommend starting with a low value.

Developing a provider

Clone this wiki locally