Acknowledgments
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.
Beltr is a small app standing on decades of other people's work. These are the projects doing the heavy lifting.
The complete list of third-party components Beltr ships, downloads, or talks to, and the license each is used under.
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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.