5 puntos por fcbayernmuller 2024-01-29 | 5 comentarios | Compartir por WhatsApp

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 wav y 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 libfftw3 para el fingerprinting y libcurl para comunicarse con los servidores de Shazam.
  • Es rápido porque procesa de forma eficiente datos PCM como downsampling de archivos wav y 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

 
mdisprgm 2024-01-29

¿Hay alguna razón por la que eligieron C++ en lugar de Rust?

 
cosine20 2024-01-29

¡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.

 
fcbayernmuller 2024-01-29

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.

 
cosine20 2024-01-29

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

 
fcbayernmuller 2024-01-29

¡Muchas gracias~!!!