###### tags: `jptw` `thesis` `algorithm` `fingerprint`
# Algorithm - Audio Fingerprinting
### Document
> <i class="fa fa-github"></i> [worldveil / dejavu](https://github.com/worldveil/dejavu)
> <i class="fa fa-book"></i> [Audio Fingerprinting with Python and Numpy](https://willdrevo.com/fingerprinting-and-audio-recognition-with-python/)
### Reference
> [1] [Improvement of Landmark-based Audio Fingerprinting with Target Zone and Hash Table Tuning](http://u.camdemy.com/media/23162)
## Method
### Peak Finding
> Find Peaks in spectrogram
Pass through a HP Filter and then find peaks with ["Dilation and Erosion"]((https://sites.google.com/a/ms.ttu.edu.tw/cse2012dance-robot/yan-jiu-cheng-guo/opencv-ruan-ti-she-ji/qin-shi-yu-peng-zhang)).
>
> Ref: [Peak detection in a 2D array](https://stackoverflow.com/questions/3684484/peak-detection-in-a-2d-array)

### Fingerprint Hashing
> Record each peak with the temporal difference among its neighborhood, and hash with 'SHA1' algorithm.
::: warning
The beauty is that a good hash function will not only return the same output integer each time the input is the same, but also that very few different inputs will have the same output.
:::
