vibra, cliente de Shazam en C++ para reconocimiento de canciones
(github.com/BayernMuller)vibra
- Es un proyecto que implementa en C++ un cliente que se comunica con los servidores de Shazam, el servicio de reconocimiento de canciones.
- Funciona aproximadamente 2 veces más rápido que songrec, el cliente de Shazam de código abierto existente en Rust.
- Puede leer archivos
wavy obtener los datos de qué canción corresponde a ese archivo. - También puede reconocer canciones que se están grabando con micrófono mediante la entrada de datos PCM raw por
stdin. - Requiere
libfftw3para el fingerprinting ylibcurlpara comunicarse con los servidores de Shazam. - Es rápido porque procesa de forma eficiente datos PCM como downsampling de archivos
wavy conversión de canales. - Tiene pocas bibliotecas de dependencia y es fácil de compilar, por lo que puede usarse en dispositivos embebidos.
5 comentarios
¿Hay alguna razón por la que eligieron C++ en lugar de Rust?
¡Gracias por compartir! Personalmente, me da curiosidad saber cómo mejoraron el rendimiento.
Si en una Raspberry Pi 4 tarda alrededor de 1 segundo, realmente es un rendimiento muy práctico.
En realidad, el problema era que Rust Songrec era demasiado ineficiente: para los datos PCM recibidos, hacía por separado el downsampling, la conversión a mono y la conversión a 16 bits.
Así que mejoré la parte que recorría los datos PCM en cada proceso. Claro que también debe influir bastante la diferencia entre C++ y Rust como lenguajes.
Ah, así que en el código de Rust esos tres procesos se manejaban por separado. Mejorar eso tampoco debió de haber sido tarea fácil; es impresionante
' v')b¡Muchas gracias~!!!