Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Song Matching and IDing by Analyzing and Hashin...
Search
Milos Miljkovic
November 11, 2015
Science
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Song Matching and IDing by Analyzing and Hashing Audio Fingerprints
Slides from the talk given at PyData NYC2015.
Milos Miljkovic
November 11, 2015
Other Decks in Science
See All in Science
J-STAGE全文XML登載必須化について
xspa2012
0
1.6k
Kritische evaluatie van GenAI-output voor literatuuronderzoek
voginip
0
250
データベース11: 正規化(1/2) - 望ましくない関係スキーマ
trycycle
PRO
0
1.8k
Toward Causal Scientific Discovery with AI
sshimizu2006
0
220
(CVPR2026) Back to Basics: Let Denoising Generative Models Denoise
shumpei777
0
410
Collective Predictive Coding Hypothesis: Emergence of Language and Cooperative Behaviors
tanichu
0
180
プレイがつなぐ研究と社会:市⺠‧クリエイター‧SF作家による実践を通じて
hayataka88
1
120
データベース10: 拡張実体関連モデル
trycycle
PRO
0
1.6k
AI(人工知能)の過去・現在・未来 ~AIは人類を越えるのか~
tagtag
PRO
0
170
[Relay webinaire eBIS actu n°16] Sélection pour la vitalité des jeunes bovins allaitants et laitiers
institutdelelevage
PRO
0
270
データベース05: SQL(2/3) 結合質問
trycycle
PRO
0
1.4k
機械学習 - SVM
trycycle
PRO
2
1.3k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Accessibility Awareness
sabderemane
1
250
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Rails Girls Zürich Keynote
gr2m
96
14k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Leo the Paperboy
mayatellez
10
2.4k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
830
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
Song Matching & IDing *** Analyzing and Hashing Audio With
Python Scientific Stack And SQL DB
Link to talk material bit.ly/MMNYC15 GitHub
Talk outline • Airing of grievances • Feats of strength
• Pontification
Who is this guy? Miloš Miljković @miishke
WW WW
Data science mule Slow, not too smart, and hard working
under burden.
?
SOTU 2015
SOTU 2015 – applause occurrence time [min] and duration [s]
SOTU 2015 – speech and applause duration [s]
Somebody said something on Twitter
Literature search
Who is doing it?
Why do it?
o utlier
Step one
Steps 2 to N
Awesome paper • Andrew Wang • An Industrial-strength Audio Search
Algorithm • Clearly written, informative figures • Seven (7) pages long
None
Sound & human hearing • 20 – 20,000 Hz •
Loudness in dB (logarithmic scale) • Quiet study room ~40 dB • Jackhammer ~95 dB • Jet engine ~140 dB
Human auditory system
Recording & encoding • ADC → pulse-code modulation • 16
bit signed integer • Shannon – Nyquist theorem • 20 kHz → 40 kHz • CD audio 44.1 kHz
Audio bit rate • sampling rate x bit depth x
n • 44,100 x 16 x 2 = 1,411 kb/s • MP3 highest quality is 320 kb/s
Short time Fourier transform STFT
bit.ly/FTSEA15 William Cox @gallamine
STFT • Analysis of frequencies in signal when frequency varies
in time • Speech, music, seismology, ECG…
STFT in a nutshell • Apply DFT to windowed segments
of data • Windows overlap • Windows are apodized
STFT Q&A • How long are window segments? • Why
do windows overlap? • Why do we mess with windows? • What is apodization?
Jupyter notebook time!
Peak quadrants
Churning out numbers • Make quadrant for each peak •
In each quadrant for each peak pair record f 1 , f 2 , Δt • Pass [f 1 , f 2 , Δt] through hash function
Beaty of simplicity
Align and match • For each peak record offset time
and its hashes • Find matching hashes and get song IDs • d = offset song - offset recording
None
SQL DB CREATE TABLE fingerprint( hash songID offset ); CREATE
TABLE song( songID song_name );
Power of Python • scipy → read in raw audio
• matplotlib → spectrogram • scikit-image → find peaks • Python → hash • Python → set intersection
Performance • DB size • Search time • No messing
with play speed • False positives or are they?