Karaoke tooling
Scripts that turn an MP3 into an UltraStar Deluxe karaoke song, with timed lyrics and pitch notes.
- Year
- 2026
- Role
- Author
- Stack
- Python, UltraSinger, Demucs, Whisper, pYIN, pytest
UltraStar Deluxe is a karaoke game. It needs a song file with lyrics, timing, and pitch notes. Making that file by hand takes a long time.
This tooling makes the file from an audio file. One script wraps UltraSinger, which separates the vocals with Demucs, transcribes the lyrics with Whisper, and detects the pitch. It puts the finished song into the UltraStar songs folder.
The first run exposed a problem with Chinese songs. The pitch jumped by three to four octaves, and Whisper timing cut lines in the middle of a phrase. A second script fixes this. It takes lyric lines and start times from a timed LRC file on LRCLIB. It takes only pitch and syllable onsets from the vocal stem. It also converts traditional characters to simplified ones, fixes octave errors, and writes pinyin names, because UltraStar Deluxe could not load Chinese titles in the tested version.
On one test song, the second script made 33 lines and 330 notes. Pitch jumps of 7 semitones or more fell from 124 to 26.
The result is a draft. The notes need a check in the UltraStar editor. The tests number 90 and give 100 % line coverage.