Audio FingerPrint em Python
Audio Fingerprint é o ato de reconhecer um determinado audio dentro de um amplo número de sons…
Este conceito é utilizado pelo Shazam, que tem o poder de lhe retornar o nome de uma música com uma pequena amostra a partir de qualquer pedaço de uma canção.
Ao ler um post escrito por Roy Van Rijn decidi tentar escrever algo semelhante seguindo todos os passos descrito em seu blog.
Aproveitei um pedaço de um projeto antigo esteganografia-spectrograma-em-arquivos-de-audio reescrevi minha função para visualizar spectrogramas para melhor se adaptar ao novo código, para testar o novo spectrograma peguei dois arquivos fract.mp3 e mandel.mp3 eles podem ser encontrados neste site.
Primeiro converti os dois arquivos em .WAV os deixando em Mono, o mpg123 me ajudou neste trabalho de coversão!
E aqui esta os resultados do meu Spectrograma:
Para o Mandel.wav
Legal minha função para mostrar o Spectograma funciona perfeitamente!
Vamos agora para o próximo passo descrito por Roy Van Rijn, encontrar as maiores frequencias dentro de cada tempo de uma música.
Com esta etapa concluida eu consigo montar uma “Constelation Map” contendo os maiores pontos (frequencias) dentro de um spectrograma, para demonstrar eu plotei o resultado da música inteira “Rihanna feat David Guetta – Whos That Chick(Radio Edit)”
Resultado mostrando a “Constelation Map” para a música Rihanna feat David Guetta – Whos That Chick(Radio Edit):
Todos os pontos em vermelho são onde encontrei as maiores frequencias correspondentes a cada tempo dentro da canção!
O proximo passo é indexar estes valores dentro de um arquivo .txt por exemplo!
Em meu arquivo .txt tenho:
[142, 393, 578, 1802]
[71, 378, 400, 1725]
[52, 204, 406, 753]
[51, 205, 425, 773]
[137, 392, 697, 833]
[140, 201, 660, 773]
[53, 300, 666, 776]
[51, 342, 497, 701]
[50, 200, 414, 731]
[57, 367, 697, 833]
[85, 223, 690, 783]
[55, 234, 697, 845]
[50, 204, 403, 773]
[121, 238, 571, 714]
[52, 370, 544, 721]
[132, 325, 463, 794]
[164, 226, 515, 712]
.
.
.
Indexei cerca de 1000 canções eu precisei converter todas para .wav sempre em mono!
Lol após isso é importante colocar todos estes valores dentro de uma grande hash table para uma melhor performace.
E vamos ao grande teste pegar um pedaço de qualquer canção indexada e ver se conseguimos o retorno correto !
Vamos tentar 18 segundos de áudio bem sujo e ver o resultado!
Primeiro tentei este pedaço Chick_noise2.wav
O som está bem degradado e sujo, decidi pegar um som gravado do microfone de meu smart phone quando estava dentro de um shopping escutando um som ambiente, ajustei para obter os acertos comparando menos frequencias pois o áudio estava deplorável a gravação é esta Clipe som 03.wav
Resultado:
Funcionou !
Vamos tentar outra música também gravada do microphone de meu smart phone dentro do shopping Clipe som 06.wav
Resultado:
Estas demonstrações são de arquivos com áudio bem degradados e sujos, podemos perceber que em todas elas temos um grande nível de ruido e mesmo assim funciona!
Um agradecimento especial ao Roy que postou em seu blog todos os passos para este feito!
Eng Eder de Souza
Hey great post read it through Google Translate, is it possible to receive the source code please? 🙂
Amazing!!!
Could you please send me the code ..
10x dude .
tal2001@walla.co.il
Please share a copy of the source code with me .. mahamovie@gmail.com
Thanks!
Great Job Dude ! Finally you create the music DNA !
Can U share the source code with me too ?
Thx 😉
Fala Eder, blza? Te conheço da Lista Asterisk Brasil… há algum tempo vc me ajudou a criar AGI em Java, etc…
Estava lendo, parece que o autor do Roy Van Rjin teve alguns impecilhos com a fabricante do Shazam por postar o código no blog…
Mas aqui é o Brasil e aqui não tem lei nem pra bandido, então tem como vc postar o seu código pra gnt?
Estou tentando implementar o código em Java do Roy e têm dado certo! 🙂
hi
can you help me?
Im tryng make one audio accust-Id for my thesy
Tks
That’s awesome job! May I get a copy of the source code? I want to make a duplicate audio files detector. I think this will work fine.
Thank you very very much!
windviki@gmail.com
Hello Ederwander,
amazing work I’m trying to do the same, you could share with me your source code.
Sensacional!!! PARABÉNS!!!
Alo Eder! Belos artigos!
Pode enviar também pra mim seu código Python?
Muito obrigado!
Awesome. Would you be willing to share the source code? My email is adolfox@gmail.com.
Thanks in advance 🙂
Excelente trabalho! Eu poderia passar o código por favor?
Please mail me code as i am doinf project for sound comaprison i am not able to comapre the two sounds
awesome job!…. i’ve been looking on how to do this in python. can you send me the source codes?
hanani.yusof@gmail.com
thanks 🙂
All above is what i need. could u please send me that codes ? nimol.elixir@gmail.com
thz, in advance 🙂
Ola Eder, muito bom seu post! Poderia me enviar uma cópia do código para que eu possa estudar? Segue meu email: diogovilab@gmail.com
Grato!
Hi! I’m doing a course work on comparation of audio fingerprint algorithms, can you, please, send me a copy of your code to mr.alinaki@gmail.com, please? Thank you!
Hi!! Really nice job!! Could you please share the source code? My email is rolimat@gmail.com I will so glad if you send me the code… Im working on the analysis of an accesibility open source project about sound recognisement for deaf people and this example could help us a lot.
Thanks!!
Hi!, I’m currently developing a similar system for an student project. I’ve seen the work of the Finish guy (if i’m not wrong), but I don’t have clear the matching process. Because I’ve got a full song and the same cropped and by looking to the fingerprints, It doesn’t match at all. Can you share the code, please? mariottf@hotmail.com
Thanks in advance!
Great Job, can you can share the source ?
Awesome wrok. I am working a similar project like this . Could you share the source code with me? dongbeihegang[at]163.com
I am working on similar project may I have the source code please!!!
johan.kalamas@hotmail.com
I am working on similar project may I have the source code please!!!
ffzhihua@126.com
I was wondering if you send me source code for this. Thanks a lot
Sorry my email address is akkpatel@gmail.com
Parabéns cara.
Poderia compartilhar o código?
Meu email: zekarlos@gmail.com
Abs.
Hello Thank you for this great effort, please share the code with me andrymirija@yahoo.fr
Hi Eder! Could you please share this code with me? I need to develop a similar project. Thanks a lot! ( humoib aaat gmail.com )
Obrigado!
–Hugo
Olá Eder… pode enviar o python source codepra mim tambem? gsm arroba machados ponto org
Abraço!
Hi I am working on a project similar as this. can i get the source code please. forbiruk@gmail.com
Muito bom manow, estou muito interessado em fazer alguns testes, poderia me enviar o código por favor ? meu email : antoniassi.paiva@gmail.com
Ola Eng. Awesome work on this project. Would also love a copy of the source code for testing 🙂
Good job, man! It’s awesome!
Can you give me the source code for referring.
My email: tunm@hanet.com
Hey man really cool! Mind sharing the code? You can reach me here: vishnuk9695@gmail.com
Hi, I would also be intereste din the code you used. Could you send me it at cwz.dargenio@gmai.com?
Boa Eder,
Vou querer o código também, estou curioso se poderia aplicá-lo no reconhecimento de cantos de pássaros com a mesma eficiência que você teve com músicas. miudera1@gmail.com
Boa Eder,
Gostaria de ver o código também. Queria testá-lo frente ao reconhecimento de canto de pássaros para ver se a eficiência é a mesma. miudera1@gmail.com
Hi Eder,
good work, i work in a similar project, Could you please share with me this code. Thank you very mutch . rahmounikhaldoune@gmail.com
awesome job!…. i’ve been looking on how to do this in python. can you send me the source codes? rahmounikhaldoune@gmail.com
Olá Eder, parabéns pelo trabalho, muito interessante. Seria possível me enviar o código que você desenvolveu em Python? Estou desenvolvendo um trabalho com visualização e acho que seria interessante adicionar a parte de Fingerprint. Se possível meu e-mail é: clausiusreis@gmail.com
Hello eder !! great work.I am working on something similar and it would be really helpful if you could share the code. Thanks in advance. You can reach me at: abhinavreddy94@gmail.com
Hello Eder ! great work. I am presently working on something similar and it would be really helpful you could share the code. Thanks in advance. You can reach me at : abhinavreddy94@gmail.com
Hey Eder, nice! It’d be cool if you could share the code with me too paulsmithirl93@gmail.com – cheers!
Hello Eder, Great job that you did.Can you please share your code or if it is possible to send it to my gmail adress maalej.sonda.m@gmail.com. thank you !