Beets and Song Recognition?

I’m throwing this out to the Beets Community in case it proves useful as an adjunct to Beets for processing unknown or questionable music files.

There is a project underway at Github called SongRec that uses Shazam to identify music. It comes as both a GUI app and command line tool and can (by use of the GUI) monitor and identify a live signal as well (see Features below).

Installation is drop-dead simple on Linux and it can be compiled on other platforms.

From the ReadMe SongRec’s main features are:

• Recognize audio from an arbitrary audio file.
• Recognize audio from the microphone.
• Usage from both GUI and command line (for the file recognition part).
• Provide an history of the recognized songs on the GUI, exportable to CSV.
• Continuous song detection from the microphone, with the ability to choose your input device.
• Ability to recognize songs from your speakers rather than your microphone (on compatible PulseAudio setups).
• Generate a lure from a song that, when played, will fool Shazam into thinking that it is the concerned song.

While it is currently written in Rust, Python code is also available.

By use of the command line tool you can grab the entire metadata “dump” from Shazam which includes fields like release year, album art URI, Youtube and Deezer links, genre, label, and lyrics (sometimes).

It’s still a young program but it might prove useful to anyone who spends time messing with lots of partially (or badly) tagged audio files or needs a quick and easy way to identify songs for an application.

1 Like

Beets does have some fingerprinting support already, via AcoustID:

But the SongRec project is still interesting since Shazam is a totally different technology than AcoustID. It would be cool if some day SongRec supported more than only Shazam, since there are several different fingerprinting approaches out there. And in the meantime, a beets plugin using SongRec would be neat.

Relatedly, I found this thread interesting: