Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Audio Matching (Audio Fingerprinting)

I'm writing an android app that lets user record his voice through microphone & save it in storage & link it to a specific content (like a Contact). Later, user call that voice again & the app should compare it with saved audio files & find the one that matches the voice.

I searched a lot & found some libraries that do this online, like EchoPrint that generates fingerprint from recorded audio & sends it to opensource server & returns the result. But I need to do this offline.

Has anybody know such library?

like image 936
Shayan_Aryan Avatar asked Oct 14 '14 09:10

Shayan_Aryan


People also ask

How is audio fingerprinting done?

It works on the principle of human fingerprinting. It records the fingerprint of ingested audio content and later can be used to match with the recorded audio or playlists on mobile, TV or any other device. Audio fingerprinting allows monitoring of the audio independent of its format and without the need for metadata.

Why audio fingerprinting?

Audio fingerprinting follows similar principles. It is essentially a condensed summary in audio form of an audio signal that can be used to identify the file quickly or locate at speed items that are similar to it in a database of sounds/music.

How does Shazam algorithm work?

How does the Shazam algorithm work? The Shazam algorithm distills samples of a song into fingerprints, and matches these fingerprints against fingerprints from known songs, taking into account their timing relative to each other within a song.


2 Answers

If you are aiming to compare an old recording of a user with a new call as it comes in, audio fingerprinting solutions like Dejavu in Python on a server or Echoprint in C++ won't help you. They are for doing recognition and retrieval on recorded audio segments plus noise. They cannot deal with the variabilites in human voice. See an explanation here.

If that's the case, what you are referring to is speaker recognition, which is much harder and involves quite a bit of machine learning. It would be tough to do this for a large corpus of users (especially offline on a phone), but for determining between a couple users, it might be doable.

like image 126
lollercoaster Avatar answered Oct 01 '22 20:10

lollercoaster


Below is a good Library. Which is Easy to use. But you need to convert your Audio Files to Wave Format prior to this.

https://code.google.com/p/musicg/

like image 31
dinukahetti Avatar answered Oct 01 '22 19:10

dinukahetti