5 pontos por fcbayernmuller 2024-01-29 | 5 comentários | Compartilhar no WhatsApp

vibra

  • É um projeto que implementa em C++ um cliente que se comunica com os servidores do serviço de reconhecimento de músicas Shazam.
  • Funciona cerca de 2 vezes mais rápido do que o cliente Shazam open source existente em Rust, o songrec.
  • É possível ler arquivos wav e carregar os dados para identificar de qual música se trata.
  • Também é possível reconhecer músicas gravadas pelo microfone usando raw PCM data via stdin.
  • São necessárias a libfftw3, para o fingerprinting, e a libcurl, para a comunicação com os servidores do Shazam.
  • É rápido porque processa com eficiência dados PCM, como downsampling de arquivos wav e conversão de canais.
  • Como tem poucas bibliotecas de dependência e é fácil de compilar, pode ser usado em dispositivos embarcados.

5 comentários

 
mdisprgm 2024-01-29

Há algum motivo para você ter escolhido C++ em vez de Rust?

 
cosine20 2024-01-29

Obrigado por compartilhar! Fiquei pessoalmente curioso sobre como você fez as melhorias de desempenho.
Se leva cerca de 1 segundo em um Raspberry Pi 4, é realmente um desempenho bem prático.

 
fcbayernmuller 2024-01-29

Na verdade, o Rust Songrec era ineficiente demais, porque para os dados PCM recebidos ele fazia downsampling, conversão para mono e conversão para 16 bits tudo separadamente.

Então melhorei a parte que percorria os dados PCM em cada etapa. Claro que a diferença entre as linguagens C++ e Rust também deve ser grande.

 
cosine20 2024-01-29

Ah, então no código Rust esses três processos eram tratados separadamente. Melhorar isso também não deve ter sido nada fácil; impressionante da sua parte ' v')b

 
fcbayernmuller 2024-01-29

Obrigado~!!!