Vocês conhecem o Shazam? É um dos aplicativos de músicas mais populares desde o seu lançamento na AppStore em 2008, e ainda é grátis. Em maio o serviço anunciou que possuia uma base de usuários de mais de 75 milhões. Ele identifica as músicas que estão tocando no ambiente e te retorna o nome e o artista. Atualmente, existem 2 apps que carregam a marca, o Shazam, gratuito, permite identificar apenas 5 músicas por mês. Enquanto o Shazam Encore (US$4,99), que elimina essas limitações que o gratuito possui. Eu sempre me perguntei como que o aplicativo conseguia identificar as músicas, e olha que eu fiz várias tentativas ‘obscuras’ como sambas do fundo de quintal, música francesa e ele conseguiu identificar. Agora, vocês imaginam como que essa identificação é feita?

Foi isso que o pessoal do Gizmodo explicou. O Shazam utiliza a “impressão digital” da música, para identificá-la, esta por sua vez, é um espectrograma da musica. Um espectrograma é uma representação gráfica que demonstra a variação da intensidade da frequência dos sons durante o tempo. Para quem quiser saber mais sobre espectrograma, veja aqui.

O processo que cria essas impressões digitais das músicas transforma todas as músicas em um gráfico de tempo-frequência. Digamos que o o eixo x é equivalente a frequência, o eixo y é o tempo e sobrepondo-os em um terceiro eixo seria a intensidade do som. Cada ponto neste gráfico representa a intensidade de determinada frequência em determinado tempo x. Então, uma linha horizontal nesse gráfico representaria um tom único e contínuo. Enquanto que uma linha vertical estaria representando uma explosão de determinado som. Um exemplo de um espectrograma de uma música:

Então, voltando ao Shazam, o primeiro passo é a empresa ter um vasto acervo de “impressões digitais” armazenados em um banco de dados, pois sem ele fica impossível comparar os dados coletados a partir dos usuários. Ao escutar a música, o aplicativo codifica 10 segundos da música em questão relacionando picos de frequência. Então, para cada um destes picos, é identificado a sua frequência e quanto tempo depois do início da música eles ocorrem. E formam um padrão de informações como a tabela abaixo: Notem que essa tabela está resumida, o Shazam utiliza 30 picos/segundo para utilizar na identificação.

Então digamos que o banco de dados é organizado pela frequência, então é identificado o primeiro pico, e um pico adicional, do qual é criado uma assinatura (linha) que então será usado para fazer a triagem das músicas no acervo. A utilização da linha de duas de frequências diminui bastante a incidência de músicas similares e reduz o tempo de busca no banco de dados.

A imagem abaixo mostra um gráfico onde a assinatura de frequências criada pelo aplicativo não encontra nenhum alinhamento de frequências coincidentes no mesmo período. Isso quer dizer que essa não é a música que o usuário quer encontrar.

Já o seguinte, mostra uma assinatura que tem sua equivalência encontrada no banco de dados. Os pontos de frequência estão alinhados.

Se essa identificação ocorre em mais casos, o Shazam precisa de 1 coincidência de alinhamento de par de frequências por segundo, ocorrendo no mesmo período de tempo, a música é considerada identificada. Só depois de todo esse processo é que eles enviam os dados da música ao usuário. Caso contrário, ocorre um erro. Bem impressionante o tanto de trabalho que ocorre por trás do aplicativo que leva apenas segundos para te mostrar quem canta e os nomes das músicas né?! Achei tão legal que resolvi escrever para vocês! E se alguém não testou, baixe aqui

Fonte: Gizmodo