HNHacker News
TopNewBestAskShowJobs

muzakthings

132 karma · joined December 6, 2013

submissionscomments
muzakthings··on Audio Fingerprinting with Python and Numpy (2013)
Good question. The answer is that time is an invariant here.

Dejavu uses a locally sensitive hash (LSH) just like any other approximate search hash might. The key to note is that we're binning both the frequency and time units of the spectrogram, giving us room for noise/error. In fact, you can tune the granularity to which this happens by adjusting the Dejavu FFT window (DEFAULT_WINDOW_SIZE). This will create a spectrogram with few (and therefore larger) cells.

The trade-off with smaller cells is that with too much granularity (or if the audio is even a tiny bit stretched or we have small Doplar shift effects), we may miss the fingerprints we want (false negative). On the other hand, with too low granularity, we risk having our frequency bins too large and having perhaps another song/query audio match when it shouldn't (false positive).

Luckily in either case, we don't need to see all the fingerprints, just enough to align properly in time.

So to answer your question, Dejavu is fairly resistant to noise (and can be tuned with FFT settings) as long as the audio's original timing is unchanged.

muzakthings··on Audio Fingerprinting with Python and Numpy (2013)
Echoprint is wonderful for fingerprinting speed (C++), but the fingerprint size is actually smaller in Dejavu (binary(10) field in SQL for each fingerprint).

The other interesting differences to note are that Echoprint doesn't use a constellation fingerprinting approach along with offsets, and the fingerprinting is meant to be the same across all platforms / use cases so you can compare them.

As a direct result, you also can't get the offset in seconds that your query audio refers to like you can with Dejavu.

When I coded up this project, I wanted something that was more customizable - allowing you to decide the speed, number of fingerprints, size of the fingerprints etc to match your own false positive / memory / CPU requirements.

When you do, you sacrifice interoperability between all Dejavu index installations, but you gain that application specific performance. It of course depends on your use-case which library is better.

muzakthings··on Audio Fingerprinting with Python and Numpy (2013)
Thanks! Glad you liked it. It's always been a frustration of mine (even reading / writing academic papers) when the author obfuscates or makes something more complicated than it needs to be.

You only truly understand something when you can explain it in lay (or close to) terms, I find.

muzakthings··on Audio Fingerprinting with Python and Numpy (2013)
Hey! Creator here. That's so cool to see! I made Dejavu as a fun side project in grad school, and it's super fun to see all the cool stuff people make with it.

I get a couple emails a week about it, but probably the weirdest/coolest was a guy in Spain who used Dejavu to make two rap-dueling robots who spoke in Basque.

muzakthings··on Audio Fingerprinting
This is somewhat of a misnomer.

For those of you who came here expecting acoustic fingerprinting, realize this is a different class of algorithms related to locality sensitive hashing (LSH), ala Shazam, etc.

If you look at the page [here](https://audiofingerprint.openwpm.com/), you'll see they are merely looking at the audio processing capabilities for your browser's, which is tied to your hardware microphone's / browser version's specs. Things like number of channels, FFT size, etc.

In summary, this is only invasive so far as knowing your laptop model or browser version, not actual recorded voice (you have to call `getUserMedia()` for that IIRC).

For more information on acoustic fingerprinting, see [here](https://en.wikipedia.org/wiki/Acoustic_fingerprint) and [here](http://willdrevo.com/fingerprinting-and-audio-recognition-wi...).

muzakthings··on The Case for SoundCloud
Gosh how reckless of them to want to pay back their VCs (streaming enough music to satisfy millions of people costs $$) and also become a profitable business!
muzakthings··on Your Most Valuable Asset Is Yourself
Honest question, why does anyone care about spelling errors? They aren't even grammatical errors; we know what they intended.

I'd rather they make spelling errors than factual ones, and I'd rather we focus on teaching kids problem solving rather than memorizing sequences of letters.

muzakthings··on Is the new Zuckerberg fake charity an estate tax avoidance scheme?
There's nothing wrong with Chick-fil-A selling chicken with antibiotics, and there's nothing wrong with Mark Zuckerburg being clever about how he spends his money.

If you don't like Chick-fil-A, don't eat there.

If you don't like Facebook, don't use it.

If you don't like the tax code, lobby Congress or do something about it. But don't blame Zuck for being smart within the confines of the law.

muzakthings··on Walgreens announces deal to buy Rite Aid for $9 a share
Pharmacies have zero to do with drug costs.

Try pharmaceuticals, insurance companies, the FDA, and trade policies if you want to find the culprits or actual structure behind the prices of drugs.

muzakthings··on Ask HN: Those who quit their jobs to travel the world, how did it go?
also curious how you found families willing to host!
muzakthings··on Dejavu: Audio fingerprinting and recognition in Python
That's certainly useful, and what Echoprint and MusicBrainz have tried to do.

Unfortunately, many fingerprinting use cases require hashing at different granularities (ie, FFT windows), or need different collision guarantees to trade off space vs. accuracy and so on and so forth.

A perfect example is throwing away part of the SHA-1 hash of a fingerprint. You lose some entropy, but you become more space efficient.

Thus in many cases, while the core algorithm might be the same, the parameters and constraints of the individual use case often mean that the fingerprints themselves aren't universal in size or format.

muzakthings··on Dejavu: Audio fingerprinting and recognition in Python
Not sure if you've seen this, but relevant:

http://www.shotspotter.com/

muzakthings··on Dejavu: Audio fingerprinting and recognition in Python
Glad to see it's working well for you!

I'd be curious as well to see how the performance holds up getting into the terabytes as I haven't tested that. Remember too that there are a lot of parameters for the matching algorithm here (https://github.com/worldveil/dejavu/blob/master/dejavu/finge...) which allow you to trade off accuracy, speed, and storage in different ways. I've tried to document it throughly.

Finding duplicates is a great one! Actually generating a checksum for each audio file (minus the header and ID3 tags) and adding this as a column in the songs table for all the different filetypes Dejavu supports (mp3, wav, etc) would probably be the best way to do this.

I say this because so many songs today are built on sampling. Mashups and EDM music often samples from other work, and as such, the fingerprints and their alignment can be shared across different songs. Something more clever like seeing the percentage of hashes by song that are the same and comparing to a threshold might do the trick, though.

Happy hacking, and feel free to send in a PR! :)

muzakthings··on Dejavu: Audio fingerprinting and recognition in Python
Nope! Dejavu is meant for recovery of perfectly maintained signals with additive noise. That is to say, detecting a signal or song played slightly slower than the original hashed version is completely outside what Dejavu can do. Detecting a signal played back at the same speed with a lot of background noise is just fine - that's what the algorithm is meant for.
muzakthings··on Dejavu: Audio fingerprinting and recognition in Python
Hey! Creator here. Awesome to see this get posted and people excited about the project.

I made a cool writeup about it here: http://willdrevo.com/fingerprinting-and-audio-recognition-wi...

It's a great little library for doing audio recognition, stream radio advertisement verification, and all sorts of interesting people email about all the time that I never would have thought of.

It's certainly not as speedy as Echoprint, which is both written in C++ and doesn't use an FFT for the locality sensitive hashing, but is quite user friendly. The benefit of doing constellation or time delta based LSH methods like in Dejavu is that you can actually recover the time at which you matched.

If you love it, feel free to dig in and contribute!

muzakthings··on Shazam for Mac
Why fingerprint audio with Shazam when you can do it yourself?

I've made my own audio fingerprinting software in Python under the MIT license, check it out!

https://github.com/worldveil/dejavu

muzakthings··on Shazam for Mac
I've made my own audio fingerprinting software in Python under the MIT license, check it out!

https://github.com/worldveil/dejavu

muzakthings··on Datasight.io – Machine Learning for the Masses
Founder here. Yes of course - garbage in, garbage out.

Still, we've constantly been surprised by how well we can learn on raw CSV dumps from SQL joins or just log data.

Furthermore, small business owners or non technical folks can still understand the concept of "teaching" an algorithm: things like including demographic information increase predictive power etc.

muzakthings··on Datasight.io – Machine Learning for the Masses
Haha, this is great. Thanks for the link.
muzakthings··on Datasight.io – Machine Learning for the Masses
Making preprocessors for creating bag or words vectors from free text, a special IP address feature processor, etc - these are all the ways we're starting to make the automation smarter and more of a value add to experienced folks like yourself.

What value add would you want to see?

muzakthings··on Datasight.io – Machine Learning for the Masses
Founder here. We also do deep learning, and we include hyperparameter optimization which is a very necessary component of training any good DBN. Feel free to contact me at will@datasight.io if you have questions.
muzakthings··on Datasight.io – Machine Learning for the Masses
Hi there, founder here. Great point. We actually create a wrapper that allows you once finished to simply cut and paste a line from a CSV to get predictions - preprocessing, scaling, dummy encoding, PCA, etc all included.

We'll also deploy to an HTTP endpoint and you can call it and get JSON response.

Does that address your concerns?

← PreviousPage 2 of 2