Presentation is loading. Please wait.

Presentation is loading. Please wait.

Presented by Michael Katic. Main Influence Most of my practices in this project were an attempt to recreate an Audio Search Algorithm developed by Shazam.

Similar presentations


Presentation on theme: "Presented by Michael Katic. Main Influence Most of my practices in this project were an attempt to recreate an Audio Search Algorithm developed by Shazam."— Presentation transcript:

1 Presented by Michael Katic

2 Main Influence Most of my practices in this project were an attempt to recreate an Audio Search Algorithm developed by Shazam entertainment. While I followed there general idea some parts if the documents I read were fuzzy.

3 Main Steps Create method to fingerprint audio files for comparison Use this method to build a library of named audio files Perform the same fingerprint method on an unknown audio file to be compared against the library and figure out if it is contained inside. Return the findings

4 Steps to Creating Finger Print Extract raw PCM data and Hz from WAV file. Perform FFT on PCM to generate a Spectrogram Create a scatter plot representation of the spectrogram to act as fingerprint.

5 PCM PCM was the easiest data to retrieve only requiring: [song, s] = wavread(file); Where s = Hz (data points per second) The following is PCM from Harry Nilsson - My Best Friend.wav

6 FFT (Fast Fourier Transform) FFT was another task made simple by matlab songSpectrogram = specgram(songMono, 512, s); Harry Nilsson - My Best Friend.wav with FFT

7 Spectrogram to Scatter Plot I first had to break spectrogram into many section to get a good coverage of all frequencies. Then I chose to use a certain number of amplitude peaks to use depending on section row.

8 Building a Library Libraries Created: Noise Songs Songs’ Fingerprints Songs with Noise Songs with Noises’ Fingerprints

9 Createing SamIple Recording To create a sample I wrote a function that takes in a regular audio file and then selects a random 15 second chunk and adds either a white noise or speech audio file on top of it to generate a realistic environment.

10 Matching Process freedom = ceil(.01 * maxFrequency); index = 1; for i = 1 : sampPoints for j = 1 : songPoints if (sampFreq(i) - freedom) < songFreq(j) && songFreq(j) < (sampFreq(i) + freedom) timeMatched(index) = songTime(j) - sampTime(i); index = index + 1; end [MostCommonTimeChange, modeCount] = mode(floor(timeMatched)); Return modeCount;

11 songLength = 300;

12 songLength = 3000;

13 Returning Data In the end when the user inputs data the program is supposed to efficiently and consistently return the correct match… Mine can at least do it sometimes.

14 Possible Faults in Project The largest potential for failure in this project was getting a good representation of a spectrogram with a scatter plot. This involved a lot of different variables that were chosen by me though trial and error and can diffidently use some more thought. Different factors must be considered such as spacing between points and areas of the spectrogram that require more density than others. This project was written so these variables can be played with easily and will hopefully get better over time.

15 addnoise AudioToScatter2 BuildSample Recordings BuildSongData CreateSample SongRecording Extreama2 FindArtist Main Recording Fingerprints ScatterMatch MainBuild Recording Song Fingerprints Songs Noise Borrowed Functions Folders

16 Current Output 15 second sample matched on library of 20 songs 60% match rate With song:noise ratio of 100:1 50% match rate With song:noise ratio of 50:1 30% match rate With song:noise ratio of 25:1 5% match rate (Probably luck) With song:noise ratio of 1:1

17 Yep…


Download ppt "Presented by Michael Katic. Main Influence Most of my practices in this project were an attempt to recreate an Audio Search Algorithm developed by Shazam."

Similar presentations


Ads by Google