10 points par xguru 2025-04-04 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Implémentation open source en Rust d’un système rapide de reconnaissance et d’identification audio inspiré de Shazam
  • Conçu en mettant l’accent sur la vitesse, l’efficacité et la simplicité, avec la possibilité d’effectuer l’indexation et la recherche de fichiers audio via une CLI

Principales caractéristiques et avantages

  • Vitesse élevée d’indexation et de recherche : traitement rapide de plusieurs centaines de fichiers audio possible
  • Commandes CLI simples : utilisation intuitive via les commandes index et search
  • Implémentation hautes performances basée sur Rust : utilisation efficace des ressources système
  • Adoption d’une méthode d’empreinte audio similaire à Shazam

Fonctionnement interne

Prétraitement (Preprocessing)

  • Conversion de la stéréo en mono (moyenne des canaux gauche/droite)
  • Downsampling pour réduire la charge de calcul : 44.1kHz → 11.025kHz
  • Avant le downsampling, application d’un filtre passe-bas IIR pour supprimer les fréquences au-delà de la fréquence de Nyquist

Transformation en spectrogramme

  • Utilisation de la Short-Time Fourier Transform (STFT)
    • Fenêtre de Hamming de 1024 échantillons
    • Recouvrement de 50 %
  • Conversion dans le domaine temps-fréquence pour extraire les pics
    • Chaque fenêtre temporelle est divisée en bandes de fréquences, et seule l’amplitude la plus élevée de chaque bande est conservée
    • Les amplitudes inférieures à la moyenne sont supprimées afin de ne conserver que les pics caractéristiques

Méthode de stockage des données d’empreinte

  • Les pics sont stockés sous forme de hachages
    • En prenant un pic d’ancrage comme référence, les positions relatives avec les pics voisins sont stockées sous forme de tuple
    • Forme (anchor freq, peak freq, delta time)
    • Conversion possible en entiers 32 bits ou 64 bits

Algorithme de recherche et de classement

  • Génération d’une empreinte à partir de l’échantillon d’entrée
  • Recherche des empreintes candidates dans la base de données, puis tri par ordre temporel
  • Analyse de la continuité temporelle basée sur la plus longue sous-séquence croissante (Longest Increasing Subsequence)
  • Recherche de la zone de pics correspondants la plus dense à l’aide d’une fenêtre glissante
  • Calcul d’un score de correspondance et tri des résultats par score décroissant

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.