Acknowledgments

Beltr did not come from nowhere.

The people

Beltr exists because people kept telling me what was wrong with it.

Thank you to r/karaoke, where this started as a half-finished idea and got taken seriously anyway. Thank you to everyone in the Beltr Discord who files the bug reports nobody wants to write, argues about lyric timing at one in the morning, and posts photos of their living rooms mid-party.

Built on

Beltr is a small app standing on decades of other people's work. These are the projects doing the heavy lifting.

Licenses

The complete list of third-party components Beltr ships, downloads, or talks to, and the license each is used under.

Bundled with Beltr

FFmpegDecodes, converts and mixes every audio and video file Beltr touches LGPL-2.1-or-later
FluidSynthTurns imported MIDI and .kar karaoke files into real audio LGPL-2.1-or-later
GeneralUser GS (S. Christian Collins)Provides the instruments those MIDI files are played through CC-BY-4.0

Machine-learning models

UVR-MDX-NET Inst HQ 3 (Anjok07 & aufr33, MDX-Net by kuielab)Splits a song into a vocal track and an instrumental one MIT
wav2vec2 base 960h (Meta)Lines each word of the lyrics up with the moment it is sung MIT
Parakeet-TDT 0.6B v2 (NVIDIA; ONNX export by Igor Stupakov)Transcribes lyrics from scratch when no synced words can be found CC-BY-4.0
Silero VAD (Silero Team)Finds where the singing actually is inside a track MIT

Python libraries

ONNX RuntimeRuns every model Beltr uses, on CPU or GPU MIT
FastAPIRuns the server behind the TV, the phones and the dashboard MIT
UvicornServes it BSD-3-Clause
onnx-asr (Igor Stupakov)Drives the Parakeet transcription model MIT
SwiftF0Hears which note you are singing, in real time MIT
MidoReads MIDI and .kar karaoke files MIT
librosaPowers the audio analysis throughout the preparation pipeline ISC
SoundFileReads and writes the stem files BSD-3-Clause
NumPyHolds the arrays all of the audio work happens in BSD-3-Clause
PillowHandles artwork MIT-CMU
PydanticValidates everything crossing the API MIT
tinytagReads tags out of your music files MIT
python-zeroconfLets TV apps find your Beltr on the network LGPL-2.1-or-later
watchdogNotices new files in your watched folders Apache-2.0
HTTPXMakes every outbound request Beltr sends BSD-3-Clause
aiofilesKeeps file work off the event loop Apache-2.0
python-multipartHandles file uploads Apache-2.0
bcryptHashes the host PIN Apache-2.0
truststoreUses your operating system's certificates, so Beltr still works behind a corporate TLS proxy MIT
PyYAMLParses configuration MIT

Desktop app

ElectronWraps Beltr into the desktop app MIT
Node.jsRuns Electron MIT
electron-builderBuilds the installers MIT
electron-updaterDelivers updates MIT
electron-storeRemembers your settings between launches MIT

Installed on request

yt-dlpFetches music videos to play behind the lyrics Unlicense
DenoRuns the sandboxed JavaScript yt-dlp needs MIT
cloudflaredOpens an optional tunnel, for phones joining from outside your home Apache-2.0

Services Beltr talks to

LRCLIBSupplies the synced lyrics Beltr looks for first, every time Open API, CC0 lyrics data
MusicBrainzFills in missing album, year and genre tags Open data (CC0 / CC-BY-NC-SA)
Apple iTunes Search APILooks up artwork and metadata Public API
fanart.tvSupplies artist artwork Public API, key required
DiscogsSupplies album artwork when nothing else has it Public API, token required
Last.fmSupplies artist biographies and tags Public API, key required

About the LGPL components

FFmpeg, FluidSynth and python-zeroconf are licensed under the GNU Lesser General Public License. Beltr ships FFmpeg and FluidSynth as unmodified binaries and runs them only as separate processes; it never links against them. python-zeroconf is included unmodified as an installed Python package.

You are entitled to the complete source for these components, and to replace them with builds of your own. The sources are available from each project's own site, linked above. If you would rather have them from us, email support@beltr.app and we will send you the exact sources used to build the binaries we ship, for at least three years from the date you received this software.