Título resumido: O princípio da tecnologia de reconhecimento musical do Shazam
O que é o Shazam?
- O Shazam é um aplicativo que identifica músicas tocando ao redor.
- Você abre o app e grava alguns segundos de áudio enquanto a música está tocando para pesquisar no banco de dados.
- No passado, o serviço era oferecido por número de telefone, e o reconhecimento musical era uma tarefa difícil devido às limitações da qualidade das chamadas.
Por que o reconhecimento musical é difícil
- Para quem não está familiarizado com processamento de sinais, o reconhecimento musical é um problema difícil por causa da complexidade dos sinais de áudio.
- Uma abordagem de força bruta para encontrar uma parte específica da música na faixa inteira é muito lenta, e a forma do sinal pode mudar bastante por causa de ruído de fundo e efeitos de frequência.
Visão geral do sistema
- O Shazam é dividido em dois fluxos, cadastro da música e reconhecimento, e ambos compartilham etapas comuns como cálculo do espectrograma, busca de picos no espectrograma e hashing dos picos.
- O fluxo de cadastro armazena os hashes no banco de dados, e o fluxo de reconhecimento os compara com os hashes no banco para identificar a música em reprodução.
Cálculo do espectrograma
- Para obter o espectrograma do áudio, é preciso entender a transformada de Fourier.
- A transformada de Fourier informa quais frequências estão presentes no áudio, e com isso é possível gerar um espectrograma que mostra a variação das frequências ao longo do tempo.
Espectrograma
- Para representar melhor as frequências variando ao longo do tempo, a música é dividida em pequenas partes e a transformada de Fourier é aplicada.
- O espectrograma é um gráfico 3D com tempo (eixo X), frequência (eixo Y) e intensidade (eixo Z/cor).
Geração da impressão digital
- A impressão digital única do áudio é extraída encontrando os picos que representam as frequências mais fortes no espectrograma.
- Esses picos conseguem resistir a ruído e outras distorções, o que os torna adequados para gerar a impressão digital.
Encontrando picos
- Os picos do espectrograma representam as frequências mais fortes do sinal e precisam estar distribuídos de forma uniforme para uso na impressão digital de áudio.
- Uma técnica de filtro máximo é usada para destacar os picos do espectrograma e localizar suas posições.
Hashing
- Hashes são gerados criando pares de picos do espectrograma, o que aumenta a unicidade.
- O hash inclui as frequências dos dois picos e a diferença de tempo entre eles, e é armazenado no banco de dados.
Correspondência
- Explica o processo de encontrar, na coleção de impressões digitais do banco de dados, as que correspondem a uma determinada amostra de áudio.
- Os hashes são pesquisados, agrupados por música e então verificados para confirmar correspondências, selecionando a faixa com o maior número de acertos.
Conclusão
- O Shazam passa por etapas como cálculo do espectrograma, extração de picos, geração de pares de hash e armazenamento da impressão digital para cadastrar e reconhecer músicas.
A opinião do GN⁺
- O mais importante neste artigo é que ele explica de forma fácil de entender o processo complexo pelo qual o Shazam reconhece músicas.
- É interessante e atraente como os detalhes técnicos são divididos passo a passo para que até engenheiros de software iniciantes consigam entender.
1 comentários
Comentários do Hacker News
A abordagem eficiente do Shazam baseada em hash
O apelo mágico e duradouro do Shazam
Vídeo do Wall Street Journal explicando como o Shazam funciona
Explicação sobre Chromaprint e AcoustID
Um texto interessante sobre o Shazam e processamento digital de sinais
Algoritmos semelhantes aplicáveis a outras mídias
A importância do site Every Noise At Once
A intuitividade do processo de reconhecimento musical
A transformada de Fourier usada no reconhecimento musical