Como funciona a impressão digital musical (para sites como Shazam e Lala.com)?
-
20-09-2019 - |
Pergunta
Minha grande coleção de músicas (120 GB) contém muitas músicas duplicadas, e eu tenho tentado faixas de impressão digital na esperança de detectar duplicatas. E como sou um major do CS, estou muito curioso sobre o que é feito por aí? Nada que eu faço tem quase a precisão de algo como shazam ou lala.com. Como eles "hash" faixas? Eu executei um hash MD5 padrão em todos os meus arquivos (26.000 arquivos) e encontrei centenas de hashes iguais em diferentes faixas, para que isso não funcione.
Estou mais interessado em lala.com, pois eles trabalham com arquivos completos, ao contrário do Shazam, mas estou assumindo que ambos usam uma técnica semelhante. Alguém pode explicar como gerar identificadores exclusivos para a música?
Solução
O artigo seminal sobre impressão digital de áudio é o trabalho de Haitsma e Kalker em 2002-03. Para cada quadro de áudio, ele pré -processam (diferenças entre os prazos e as faixas de frequência) e depois armazena uma versão binarizada do espectro do quadro.
Este procedimento adiciona robustez. Se todo o sinal for deslocado no tempo, ele ainda funciona (pelo menos, pode -se derivar um limite inferior na degradação do desempenho). É bastante robusto ao ruído ambiental. Desde a sua criação, houve muitos artigos sobre similaridade musical de baixo nível, portanto não há resposta única.
Você tem arquivos absolutamente idênticos, ou seja, os sinais estão alinhados com o tempo, a profundidade do bit é a mesma, a taxa de amostragem é a mesma? Então eu acho que um hash como o MD5 deveria funcionar. Mas se algum desses parâmetros for alterado, o mesmo acontece com os hashes. Nesse evento, um procedimento como o mencionado anteriormente funcionaria melhor.
Dê uma olhada no ISMIR Proceedings disponíveis gratuitamente online. Coisas divertidas. http://www.ismir.net/
Outras dicas
Dê uma olhada em ele Impressão digital acústica Página na Wikipedia. Possui referências para alguns trabalhos, bem como links para implementações (incluindo o código aberto fdmf).
Depois de mais algumas pesquisas (embora isso não seja conclusivo!), Acabei em todo o wiki em musicbrainz.org, que detalha algumas das abordagens que eles usam: