vibra, cliente Shazam em C++ para reconhecimento de músicas
(github.com/BayernMuller)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 alibcurl, 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
Há algum motivo para você ter escolhido C++ em vez de Rust?
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.
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.
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')bObrigado~!!!