Nightingale – open-source karaoke app that works with any song on your computer (nightingale.cafe)
402 points by rzzzzru 11 hours ago
Gormo 4 hours ago
Just downloaded source and built this to play around with it. I was a bit surprised that the first thing it did when I ran it was to start downloading binaries from the internet. It went off to fetch FFMpeg from some remote server, but I already have FFMpeg installed. Then it tried and failed to install its own Python interpreter, which is another thing that's already present on the system.
How come this is trying to install its own vendored dependencies, including executable binaries, instead of checking for what's already installed? That approach can lead to both security and performance issues.
Edit: the Python download isn't failing, but rather the application itself is looking for the executable interpreter in `lib` rather than `bin` once the download completes. I built the release tarball in the git repo, and I'm pretty amazed that such a basic error could make it into release code.
Further edit: I tried using the build script in the tarball rather than just doing a `cargo build -r`, and it started trying to install Docker containers! Docker to build a desktop application! What is going on here?
HWR_14 9 minutes ago
> How come this is trying to install its own vendored dependencies
"Why does this new software do X?" is probably answered by "the vibe worked on my system"
raincole 4 hours ago
> instead of checking for what's already installed
Plenty of software come with their own Python runtime. Even Blender uses its own Python runtime. I can name so many apps with embedded Python runtime: Blender, Houdini, Bitwig, Substance Painter, Krita, etc. Checking for what's already installed isn't the norm. In Krita's case, it uses installed Python to build it... and in the building process it builds another Python runtime for its own!
This app should have probably bundled the runtime instead of downloading a new one though.
> install its own vendored dependencies
> lead to both security and performance issues
npm install and pip -r theoretically have the same kind of security issue. How many projects on github run this kind of command during build process? My guess is in the order of millions.
throw_await 2 hours ago
All reasonable Linux distro will patch these stupid things to usw the system interpreter.
raincole 2 hours ago
Gormo 2 hours ago
bityard 4 hours ago
This is unfortunately becoming more common.
Just yesterday, I went to try out some cool new AI thing that was here on the front page of HN. It's written in Python. Great, I thought, that means I can put it into a virtualenv and just rm the whole tree when I'm done and my system will be exactly in the same state it was previously.
But sadly... no... the first time I ran it, this Python program started downloading and installing Node/NPM, and all kinds of other stuff to my machine WITHOUT even asking for permission. Sorry app developers, but my machine and my home directory are my workplace. They are curated property, you are NOT allowed to just install whatever you wish.
I expect this kind of behavior from programs whose only supported installation method is a curlpipe. (And I do avoid those.) I do not expect it from programs that claim to be installable by pip, or ship their own binaries. These NEED to be called out as vulnerable to supply-chain attacks at worst and extremely disrepectful to users at best.
ravenstine 3 hours ago
> How come this is trying to install its own vendored dependencies, including executable binaries, instead of checking for what's already installed? That approach can lead to both security and performance issues.
I've been sympathetic to your viewpoint, and I can see why this kind of thing is becoming more common.
The idea that users can reliably supply their own vendor libs/execs for applications is a bit of a fantasy. Devs working on fixing issues caused by the user having a strange issue due to the version of Python or whatever that they have installed is largely a waste of time when the application can "simply" ship with the exact dependencies it expects. This is especially true when it comes to open source work. Dealing with weird edge cases because the user has a version of FFMPEG installed that, for whatever reason, is missing h264, is work that nobody asked for. Given that the audience of this kind of app is a general one (not specific at all to devs) then it doesn't make sense to require other system packages to be present; if things like Python and FFMPEG are not required and will be downloaded anyway as part of the app install process, then there's no point in not always doing that. If you think about it, it's hardly different from any other sort of software dependency. The dependencies are just relatively bigger.
Personally, I have no desire for my applications to use other executables on my system unless I request that they do so explicitly. I'm sympathetic to the idea from a mere efficiency perspective, especially when it comes to developer tooling. But a karaoke app? No offense, but why care? A Python interpreter will be anywhere between 50 and 200 megabytes. FFMPEG is even smaller, especially if you don't enable every single feature and codec. Compared to how ridiculously bloated your average basic mobile app is (without anything like a built in JIT), bundling a desktop application with something like Python provides a lot of power relative to the number of bytes added.
ramesh31 4 hours ago
>How come this is trying to install its own vendored dependencies, including executable binaries, instead of checking for what's already installed? That approach can lead to both security and performance issues.
Because the person who vibecoded this had no idea they should have been doing that.
solvik 4 hours ago
It’s a desktop app for mostly non-technical users, so bundling the runtime is a deliberate tradeoff to reduce setup friction and machine-specific breakage.
That said, an optional “use system environment if available” mode could make sense for advanced users. A PR for that would be welcome, as long as it also handles the real complexity involved: platform differences, Python package compatibility, GPU backends, and missing system/compiler flags.
Gormo 4 hours ago
charcircuit 2 hours ago
rzzzzru 4 hours ago
hey both!
thanks for your feedback and reports, I'd be happy if they are added as issues on github.
as said in the separate comment, I really wanted an app to be as "grandma-proof" as possible, therefore I really wanted to have one binary that does the magic for you. it's a karaoke app, not a tool that is aimed at engineers.
we can indeed look at the local packages before downloading an executable, it's just not done yet but might be added in the future.
I've built this project out of passion and it's 100% open-source and free, so please keep this in mind when criticizing.
Gormo 4 hours ago
mentalgear 4 hours ago
user34283 4 hours ago
Personal attacks directed at people who build OSS are not cool, even if you take issue with their supposed use of AI or vendoring of dependencies.
bheadmaster 4 hours ago
rzzzzru 4 hours ago
I'm just using cross https://github.com/cross-rs/cross to build cross-arch. you can still use `cargo build`, it will just work.
Gormo 3 hours ago
It did, but then the application didn't work because it couldn't find the Python interpreter that it itself downloaded into its own config directory.
jsjshsshhs 3 hours ago
welcome to the millenial way of doing things
always assumes internet is connected
always assumes everything is trusted
rzzzzru 11 hours ago
I've been working on a karaoke app called Nightingale. You point it at your music folder and it turns your songs into karaoke - separates vocals from instrumentals, generates word-level synced lyrics, and lets you sing with highlighted lyrics and pitch scoring. Works with video files too.
Everything runs locally on your machine, nothing gets uploaded. No accounts, no subscriptions, no telemetry.
It ships as a single binary for Linux, macOS, and Windows. On first launch it sets up its own isolated Python environment and downloads the ML models it needs - no manual installation of dependencies required.
My two biggest drivers for the creation of this were:
The lack of karaoke coverage for niche, avant-garde, and local tracks.
Nostalgia for the good old cheesy karaoke backgrounds with flowing rivers, city panoramas, etc.
Some highlights: Stem separation using the UVR Karaoke model (preserves backing vocals) or Demucs
Automatic lyrics via WhisperX transcription, or fetched from LRCLIB when available
Pitch scoring with player profiles and scoreboards
Gamepad support and TV-friendly UI scaling for party setups
GPU acceleration on NVIDIA (CUDA) and Apple Silicon (CoreML/MPS)
Built with Rust and the Bevy engine
The whole stack is open source. No premium tier, no "open core" - just the app.Feedback and contributions welcome.
whilenot-dev 8 hours ago
Just tried it with B.E.D - Walk Away[0], unfortunately it lost track of the lyrics after 30 secs (Model is "large-v3"). Will play around a bit more, as it would be great to have a working karaoke generator.
Some quick feedback:
- Needs a way to skip for-/backwards during playback to validate the result
- Sentences seem to be recognized (first letter has uppercasing), but periods aren't added
- Needs an option to edit results from the track analysis
Thanks for keeping it FOSS!djtango 8 hours ago
Periods in song lyrics?
gaudystead 3 hours ago
rzzzzru 7 hours ago
hey mate! thanks for your feedback.
indeed, I'm running to two problems on the analyzer side: 1. align model sliding off (especially w/ chorus/back vocals present) 2. transcript skipping parts of lyrics in lyrics-heavy tracks (I tried a lot of russian rap, lol)
happy for contributions as I'm not that experienced w/ machine learning side of the project, mostly it was emperical "tweak the parameters and look what is changed"
rzzzzru 6 hours ago
evanjrowley 5 hours ago
Amazing work! I am thrilled someone was motivated to approach this problem and develop a creative solution like this. There are very limited options for Karaoke, especially in the FOSS space. Most Karaoke apps are super limited and that's driven many Karaoke enjoyers I know to YouTube in search of the songs they want to sing. This solution would give them the power to do even more songs, even better than what's out there now!
Questions for you:
1. What CUDA capability level is necessary for Nvidia GPU accelleration to work?
3. Are there any plans to support iGPU/NPU accelleration on AMD and Intel? Asking because those chips are most common in the mini computers sold at low cost these days.
My family members who love Karaoke and will be happy to try this. Looking forward to it!
rzzzzru 3 hours ago
hi!
1. Maxwell+ should work well 3. I would need to explore, you can join the discord or the mailing list on the website!
cheers!
samtp 3 hours ago
I just want to say how much I love that you used Dean Blunt in the example video
rzzzzru 2 hours ago
one of my favorite artists and this one is one of my favorite tracks in general. cheers!
solstice 9 hours ago
Excited to try this out. How well does WhisperX deal with lyrics in say Mandarin or Cantonese? Does it output Hanzi?
rzzzzru 6 hours ago
I haven't tried Mandarin and Cantonese, but tried Japanese. back at that time, it performed poorly. however, I've tweaked a bunch of settings since then, so maybe it has changed. Hanzi is a supported font and can be output, but the transcript/alignment quality might not be the best
defrost 8 hours ago
Struggled somewhat with Tjamuku Ngurra by the Tjintu Desert Band, absolutely nailed Mariah Carey's Ken Lee.
philsnow 5 hours ago
antihero 9 hours ago
This looks like awesome awesome fun! Will let you know how it runs. What a wonderful idea <3
throwaway743 4 hours ago
Just tried No_4mat's 1992... unfortunately it didn't work :(
notdefio 4 hours ago
This gave me a blast to the past to Nightingale, the media player built on top of Firefox. It was a Firefox fork that was aiming to be a more powerful alternative to iTunes/Winamp. But since it was built on Firefox, you could also use it as an all-in-one media player and web browser.
The homepage still exists, but it looks like many of the other pages like the blog and wiki are long gone. It hasn't been active in probably over a decade.
CarVac 18 minutes ago
Was that a songbird followup?
Eckter2 5 hours ago
Very nice!
I've worked on a small toy project with a similar purpose in the past [1], though it's not nearly as polished as yours, and I've made some questionable decisions here and there.
I have questions about pitch tracking. It seems you do track the pitch for scoring, and there's a line at the top of the screen that seems related but that I can't figure out. For my use case, an important feature of karaoke apps is displaying how "high" the next note should be sung, or at least some hints. Is it something your app can do and I just haven't figured it out? Or would it be a feature request?
rzzzzru 5 hours ago
hi there! pitch scoring is now pretty simplistic and the feature you're describing is not implemented. it's a great feature request tho!
10729287 9 hours ago
Open source, local and passion driven. The kind of news that make me believes in humanity again. Thank you, can't wait to try it this week-end !
upsuper 6 hours ago
Really nice project, I'm looking forward to trying it!
Would it be possible to process songs on one device, and then use the result in another, or even multiple? Or would it be possible to run as separate server / client?
I ask mainly because the device I connect to my TV is definitely not the most powerful one, so it would be nice if I can preprocess the songs elsewhere.
rzzzzru 3 hours ago
hi! answered here https://github.com/rzru/nightingale/issues/7
dmd 7 hours ago
This looks great, but I don't understand what it's supposed to do. I assumed the idea was "remove the lyrics" but of the 5 songs I tried (from Cry Cry Cry, Indigo Girls, and Suzanne Vega), none seemed to have any change from the original at all - it's showing the words on the screen (and the timing is perfect) but it's not removing the singing at all. How do you turn off the singing?
rzzzzru 7 hours ago
hey!
you can use + / - buttons on the keyboard to change the level of guidance according to your preference, generally there is a controls legend in the top right corner
dmd 7 hours ago
Yeah, I did that. I think the problem is when there are multiple singers harmonizing it only removes one.
rzzzzru 6 hours ago
danvoell 4 hours ago
Nice work! If you are looking for ways to enhance this or complementary routes, one thing I was thinking about recently... As a musician, often I play songs I don't know the lyrics to. It would be cool to have an app that could follow along karaoke style with the words, as I sing and as the band plays. Right now I clip a phone to the mic stand, but after a lyric or two, I lose my place. This is probably multitudes more complex based on every "band/vocals" sounding different, but just something I was thinking about.
ted537 4 hours ago
Yeah I think this is quite tricky. Even spotify screws up the sync halfway through the song somewhat frequently
mynameajeff 7 hours ago
My wife is a huge karaoke fan. I'm especially interested in the pitch scoring since we usually play the karaoke games on older consoles for that exact feature. Nobody really makes games like that anymore without a subscription (and most of these good modern karaoke platforms are exclusive to east asia anyways). If this works well this could make for some really fun social events, looking forward to trying this.
echoangle 6 hours ago
I don’t want to take away from OPs project (which seems really nice) but have you tried Ultrastar Deluxe ( https://usdx.eu/ ) in combination with USDB ( https://usdb.animux.de/ )?
There’s also a program for automatically downloading the songs: https://github.com/bohning/usdb_syncer
wossab 5 hours ago
What would you consider the best "Singstar-like" alternative atm?
rzzzzru 7 hours ago
please try it out and share your feedback afterwards!
both transcript/alignment might not work perfectly, but it really depends on the song
mft_ 4 hours ago
Big karaoke fan, so thanks for doing this. I'm processing a first test song as I write. The pitch scoring sounds really interesting as both a competitive and maybe also a training tool.
A couple of immediate small pieces of feedback:
* The colour scheme on the queue/nn% buttons is really low contrast - white on pale yellow is very hard to read
* the 'models' button (bottom left) - I assumed this would give me details about which models are available, and the sizes, but instead deleted the downloaded models without warning. Maybe add a 'are you sure you want to...' check?
mft_ 4 hours ago
Processed Kenny Rogers' The Gambler perfectly - took out the lead vocal but left the backing vocals.
rzzzzru 3 hours ago
hey, thanks for the feedback, both noted!
levysoft an hour ago
This app is really amazing, congrats!!!
harvey9 2 hours ago
I would like the option to put the original music video as the background, like you can in Ultrastar
reddalo 6 hours ago
Looks amazing. I've been using Karafun [1], a paid service, but this seems promising.
mock-possum 5 hours ago
Unfortunately karafun, like so many other systems, has egregious holes in its catalog. I hate playing the “this song? No… this song? No… this song? No…” game.
reddalo 4 hours ago
Psst... if you sign up to their Premium tier you can play songs from their "Community" (i.e. user uploaded songs). If you sign up to the "Pro" tier, you can play even more songs that are normally locked from their catalogue (but you'll have to manage rightsholders authorization yourself).
kikokikokiko 5 hours ago
Karafun is a paid service? I've seen their karaoke songs on Youtube for over a decade, I thought that was their business model.
reddalo 5 hours ago
Yes, the free songs on YouTube aren't customizable: there's a low voice guide that you can't turn off (or turn up...), and you can't change tempo.
You can do this from their huge catalog of songs, using their official app or their web client: https://www.karafun.com/web/
Plus, they have music quizzes you can play with many people using smartphones as remote controls. It's super fun for parties where people don't want to sing all the time.
integralid 9 hours ago
>app that works with any song on your computer
Impressive, very nice. Now let's see my death metal collection.
Just joking! Very nice, thanks for open-sourcing it.
rzzzzru 6 hours ago
No joke, feel free to try it! The beauty of the approach is that you don't have any limitations. Just be prepared to degraded experience, sometimes models struggle even with the simplest pop tracks :D
caipira 8 hours ago
This looks amazing! looking forward to test it on the weekend. Does it work well on a raspberry pi with 4 gigs of ram?
rzzzzru 7 hours ago
oof, since it uses quite heavy models locally I would expect it to struggle on such hardware. M1+ macs & nvidia gpus work the best and fastest.
arvinsim 5 hours ago
I am getting a virus detected error when downloading from Chrome.
rzzzzru 3 hours ago
it's a false positive, however feel free to build from the source while I'm figuring out what the virus trigger is about
ccozan 4 hours ago
This is just for English language? I have some older Japanese stuff I would love to sing!
rzzzzru 3 hours ago
so, as answered in one of the other threads - for me the transcript model performed poorly back in the days, however since then I've added lyrics lookup and tweaked a bunch of parameters, so it is worth trying!
mentalgear 4 hours ago
Cool, but on Firefox no lyrics are displayed on the website's demo.
nephihaha an hour ago
I haven't tried this but I would be very sceptical about the transcription of lyrics. Is there some way to correct errors?
skatedbear 5 hours ago
So cool! I'll try it with the steam deck. Being able to go to a party with just the deck and a microphone and have a karaoke with any song people want sounds good.
rzzzzru 3 hours ago
I'm not sure whether the analysis would work swiftly enough on steam deck, it might be better to analyze on a desktop device and transfer ~/.nightingale/songs to the steam deck. just saying!
manbash 7 hours ago
This is very cool. I couldn't find it it already supports duets. I assume it won't.
rzzzzru 7 hours ago
stay tuned for more features!
ETlol 8 hours ago
VirusTotal says the .EXE is flagged by 1 security vendor but threat is low
rzzzzru 7 hours ago
hey, thanks! would be happy if you open it as issue on gh
hasbot 7 hours ago
I hate to be that guy that points out other projects but YARG has vocals and there are a slew of songs that can be used.
OpenDQV 3 hours ago
i'm at the homepage of this project and i like it! will give it a try at the weekend - as a family we LOVE karaoke!
rzzzzru 3 hours ago
thanks, share your feedback afterwards!
rjh29 9 hours ago
I think you nailed it. Does it support pitch/tempo controls?
rzzzzru 7 hours ago
not yet, but it's a great feature request!
EGreg 4 hours ago
This is great! I thought of doing something like this for Karaoke, but was wondering about the copyright implications of doing it server-side.
We already do this for ingesting podcasts and cutting their clips with text being highlighted as people speak. AssemblyAI also supports speaker diarization.
For videos recorded using our own livestreaming studio, we can bypass all this by using Web STT and TTS APIs resulting in perfect timing and diarization without the need for server side models.
charcircuit 2 hours ago
It's problematic even client side since you don't have a sync license to show words timed to the song. A bunch of other licenses are needed too for the lyrics themselves and to process the original file into the instrumental.
bethekidyouwant 17 minutes ago
You’re not showing them it’s at your house
charcircuit 7 minutes ago
Babkock 2 hours ago
I just realized a couple weeks ago that the Japanese invented karaoke.
MediaMonitorWD 4 hours ago
virus detected
rzzzzru 3 hours ago
it's a false positive, however feel free to build from the source while I'm figuring out what the virus trigger is about
spacesxbt27 7 hours ago
this is more nuanced than the title suggests. worth reading the whole thing
lucideer 3 hours ago
> separates vocals, transcribes lyrics
ML has come a long way but I have yet to encounter anything that does this reliably with speech, never mind song lyrics.
> works with any song on your computer
I'd be shocked if this is true.
rzzzzru 2 hours ago
it is as good as the models are. it is not perfect, especially for non-major languages, but it works.