Détection
Transcription
Détection
Détection Le but de cet exercice est de réussir à trouver la période d’un métronome même si cette période est masquée par un bruit englobant le son principal. J’ai commencé par supposer que l’intervalle de temps s’écoulant entre deux sons ne dépassait pas 2 secondes et ne pouvait pas non plus être plus court que 100 ms. Pour trouver cet intervalle, j’ai utilisé la technique de l’autocorrélation sur mon signal audio. Cette méthode est très efficace lorsqu’il n’y a pas trop de bruit parasite, d’où l’importance d’avoir de bons filtres. L’autocorrélation est une technique qui permet d’identifier les répétitions dans un signal. Or ces répétitions sont exactement celles d’un métronome ce qui fait en sorte que cette méthode est à privilégier dans le cas qui nous occupe. Voici le résultat d’une autocorrélation qui utilise le bon filtre Ensuite je crée des fenêtres de 50 ms qui recouvrent toute l’autocorrélation et je reconstruis un nouveau signal qui a comme points la moyenne de chacune des fenêtres. Puis je prends le nombre de points équivalents à deux secondes en commençant avec le point le plus élevé qui se trouve au centre du signal et en finissant vers la droite, deux secondes plus tard. Enfin, j’identifie le premier sommet à droite en partant du début du signal de deux secondes. Pour y parvenir, la technique consiste à prendre le premier point qui est plus grand que les deux points à sa gauche et les deux points a sa droite. Ce point doit aussi être plus grand que la moyenne du signal de deux secondes, sans tenir compte de la première période de 100 ms qui possède une valeur trop grande par rapport au reste du signal correspondant à deux secondes. Ce procédé est simple mais peu robuste, néanmoins il fonctionne très bien quand on l’applique sur des points qui représentent chacun la moyenne d’une fenêtre de 50 ms. Avec cette technique, j’obtiens de bons résultats tels que le démontrent les tableaux suivants. Nom de fichier Filtre utilisé Interval de temps metro-clean1 metro-clean2 metro-clean3 metro-clean4 metro-clean5 metro-clean6 900Hz à 2000Hz 700Hz à 1200Hz 200Hz à 500Hz 400Hz à 800Hz 700Hz à 1200Hz 400Hz à 800Hz 857ms 513ms 664ms 423ms 1277ms 205ms Nom de fichier Filtre utilisé Interval de temps metro-lessnoisy1 metro-lessnoisy2 metro-lessnoisy3 metro-lessnoisy4 metro-lessnoisy5 metro-lessnoisy6 900Hz à 2000Hz 200Hz à 500Hz 1900Hz à 22049Hz 400Hz à 800Hz 700Hz à 1200Hz 1900Hz à 22049Hz 857ms 513ms 680ms 423ms 1276ms 205ms Nom de fichier Filtre utilisé Interval de temps metro-noisy1 metro-noisy2 metro-noisy3 metro-noisy4 metro-noisy5 metro-noisy6 200Hz à 500Hz 50Hz à 300Hz 1900Hz à 22049Hz 700Hz à 1200Hz 700Hz à 1200Hz 1900Hz à 22049Hz 836ms 492ms 682ms 417ms 1278ms 205ms En dernier lieu, pour trouver la fréquence de la note de musique je prends dans le signal original le point qui a la plus grande amplitude (ce qui correspond normalement au moment où la note est jouée) et je fais la transformée de Fourier sur les 20 ms qui entourent ce point. Cette technique n’est pas toujours efficace, car il se peut qu’une partie du bruit ait une amplitude plus grande que la note que je cherche. Nom de fichier Metro1 Metro2 Metro3 Metro4 Metro5 Metro6 clean lessnoisy noisy 1034 Hz 1077 Hz 215 Hz 2024 Hz 689 Hz 1034 Hz 3962 Hz 301 Hz 86 Hz 4694 Hz 689 Hz 1034 Hz 3962 Hz 775 Hz 474 Hz 689 Hz 1034 Hz 603 Hz