Radio signal identification “by ear” using FFT hashes in Python
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?
- 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?
- Via microphone/virtual cable: python recognize-from-microphone.py -s 5
- Via saved audio file: python recognize-from-file.py audiosaved.mp3