Most sound identification apps uses fast fourier transform to generate hashes from a sound. These hashes are stored in a huge catalog of audio fingerprints, and when a user tags a song for a few seconds, the app generates their audio fingerprint and seek for a match in the database. The result: «I think that you’re listening to X«.

This clever guy created his own version of Shazam for experimental purposes. When I saw it, I thought about the posibility of use this application for SIGID.

SIGID (Signal Identification) is a strange hobbie. A lot of people (including myself) are constantly searching for radio signals, trying to identify them through example sounds and waterfall images using software defined radio (RTLSDR, Airspy, SDRPlay, HackRF, etc.).

So first I have downloaded all audio samples from Signal Identification Wiki database and generated a SQLite database for the python script. Listening for about 5-10 seconds, the script can now identify a lot of known signals (about 350)! In this article you can found a direct link to download my database and save potential time and problems.

PS.3 – Update. Some users reported problems using the «recognize-from-file.py», but no problems with «recognize-from-microphone.py». If you need to work only and exclusively with «from file» option, please contact with the author of the script (and please, share with us your conclusions!). Thank you!

Unfortunately I don’t have any programming knowledge, this software would be very convenient for me as having vision problems would be fantastic for me. Thank you all the same and I wish you a good job.

Ok, let’s make an effort… In Windows you have only to download python from http://www.python.org, and then download pip installer from https://bootstrap.pypa.io/get-pip.py. Later, you have to execute get-pip.py with Python. Now you can install dependencies with pip from the command prompt (Windows Powershell) in the same manner as linux. Feel free to contact me by mail if you got troubles.

Ok but that is still over the head for a lot of people who would have use for this app. Think of most Shazam users, if they had to download python and bootstrap and issue linux commands just to ID a song most would not do it or even have the skills to do it. Is there anyway you can compile this into a nice Windows binary?

Well done, José! The code by Joseph Balikuddembe with your DB seems to work flawlessly (at least with several example signals download from youtube…unfortunately, I’m temporary away from my radio equipment). In the past, we discussed implementing this feature (or a deep learning variation) to Artemis due to the high demand, but we never tried because of the launch of Artemis 3. It’s cool to see that the system is working with signals as well! I’m a little bit concerned about the reliability of detection due to different demodulation but this is something related to the DB which, we hope, will be constantly updated and improved.

I’m thinking about create a sdr# plugin in C++ connected with this script for automate the process + connection with signal hashes database online + collaborative network of users to share captures of known signals. It’s a dream but is possible.

This is very exciting. I have tried to identify using an mp3 as suggested, but get this error?
raceback (most recent call last):
File «recognize-from-file.py», line 1, in
from libs.reader_microphone import FileReader
File «/home/bob/audio_recogition_system/libs/reader_microphone.py», line 4, in
from reader import BaseReader
ModuleNotFoundError: No module named ‘reader’

Great idea, there was months that I try to find a software with that feature.
I’ve tried the signal recognition from mp3 (recognize-from-file.py). I’m not a developer but it seems very strange that the script is only composed by following code:

Hi Lukxz! Please test with microphone script. Some friends told me the same issue, and no problem with mic feature.
Well, I think the lenght isn’t strang, because in the first line is loading scripts from /libs folder with «from… import». Take a look.
Which version of Python are you using? I’m pretty sure the problem is a dependency.
Good luck!

Python 2.7.16
the microphone script is a little bit difficult from my side because I’m using a remote spyserver on RPi with SDR# on a Win10 machine as a client so I should to setup Python and all needed libs on windows in order to redirect audio to the script… 🙁

talking about the script, did you mean that line:
«from libs.reader_microphone import FileReader»
I’ve looked at it and in the file libs/reader_microphone.py there are no classes name «FileReader» so I suspect that there are something wrong.

Hi!
I’ve never tested the script with file, and some people got the same problem. Personally, I think the first line of the script for file input is wrong. Maybe replacing «reader_microphone» with «reader_file» will fix it. Good luck!

Thanks for writing this awesome article. I’m a long time reader but I’ve never been compelled to leave a comment. I subscribed to your blog and shared this on my Twitter.
Thanks again for a great article!

Im on windows, i already copied your script and the hash database and i also installed python and pip but i cannot setup/prepare the database or run the script.. Maybe you could create a windows-howto, as im not the only one? 🙂

when im trying to run the script, the following happens in python console but also in powershell.. please help, i really want to test this useful script on my windows 10:

Insane leap here, but would there be an application
here to record the unique fingerprint of normal
transmissions on my local repeater then match them with
whoever is deadkeying & using electronic voices to denigrate other users.