Radio signal identification “by ear” using FFT hashes in Python

JC Rueda
2 min readSep 17, 2021

--

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 tag a song for a few seconds, the app generates their audio fingerprint and seek for a match in the database.

This clever guy created his own experimental version of Shazam, and when I saw it I thought about the posibility of use this code for radio signal identification purposes.

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

How can I do this?

  1. Install python, pip and dependencies:

sudo apt-get install python-tk ffmpeg portaudio19-dev python-pyaudio python-pip

sudo pip install matplotlib termcolor scipy pydub PyAudio

2. Clone the code and set up SQLite database:

git clone https://github.com/JosephMawanda/audio_recognition_system

cd audio_recognition_system

make clean reset

3. Download my generated database of Sigidwiki here.

4. Unzip file in /db/ directory, and start using it!

How can I use it?

  1. Via microphone/virtual cable: python recognize-from-microphone.py -s 5
  2. Via saved audio file: python recognize-from-file.py audiosaved.mp3

--

--

JC Rueda
JC Rueda

No responses yet