10 puntos por xguru 2025-04-04 | Aún no hay comentarios. | Compartir por WhatsApp
  • Implementación open source en Rust de un sistema de reconocimiento e identificación de audio de alta velocidad inspirado en Shazam
  • Diseñado con enfoque en velocidad, eficiencia y simplicidad, y permite indexar y buscar archivos de audio mediante una CLI

Características principales y ventajas

  • Alta velocidad de indexación y búsqueda: puede procesar rápidamente cientos de archivos de audio
  • Comandos CLI simples: ofrece un uso intuitivo mediante los comandos index y search
  • Implementación de alto rendimiento basada en Rust: usa eficientemente los recursos del sistema
  • Adopta un método de huella de audio similar al de Shazam

Cómo funciona internamente

Preprocesamiento (Preprocessing)

  • Convierte estéreo a mono (promedio de los canales izquierdo/derecho)
  • Reduce la frecuencia de muestreo para disminuir la carga de cálculo: 44.1kHz → 11.025kHz
  • Antes del downsampling, aplica un filtro IIR pasa-bajas para eliminar frecuencias por encima de la frecuencia de Nyquist

Conversión a espectrograma

  • Usa Short-Time Fourier Transform (STFT)
    • Ventana Hamming de 1024 muestras
    • 50% de solapamiento
  • Convierte al dominio tiempo-frecuencia para extraer picos
    • Divide cada ventana temporal en bandas de frecuencia y conserva solo la amplitud más alta en cada banda
    • Elimina las amplitudes por debajo del promedio para mantener solo los picos característicos

Método de almacenamiento de datos de huella

  • Almacena los picos en forma de hashes
    • Toma un pico anchor como referencia y guarda la posición relativa respecto de los picos cercanos como tuplas
    • Se compone en la forma (anchor freq, peak freq, delta time)
    • Puede convertirse a enteros de 32 o 64 bits

Algoritmo de búsqueda y ordenamiento

  • Genera una huella a partir de la muestra de entrada
  • Consulta las huellas candidatas en la base de datos y las ordena cronológicamente
  • Analiza la continuidad temporal con base en la Longest Increasing Subsequence (LIS)
  • Usa una ventana deslizante para encontrar el tramo con mayor densidad de picos coincidentes
  • Calcula la puntuación de coincidencia y ordena los resultados de mayor a menor puntaje

Aún no hay comentarios.

Aún no hay comentarios.