Traitement des signaux audio - Laboratoire 2 Filtrage FIR

Traitement des signaux audio - Laboratoire 2
Filtrage FIR
1
Conception d’un filtre FIR
Le but de l’exercice proposé est de séparer un signal de voix d’un signal sinusoidal dans un
fichier audio. Vous disposez dans le dossier C :\DSP\audio de deux fichiers audio contenant des
signaux de voix auxquels ont été superposées des sinusoides de fréquences 1600 Hz et 5000 Hz
respectivement. Pour ces deux fichiers, vous devez isoler une des deux fréquences, et éliminer
l’autre (au choix).
Le Chapitre 4 des notes de cours contient la procédure de dimensionnement d’un filtre FIR
de type Windowed Sinc. Utilisez ce type de filtre pour créer un filtre passe-bande et un filtre
réjecteur. Utilisez Matlab pour écrire un script vous permettant d’extraire les coefficients de votre
filtre. Ce script prendra en paramètres la longueur du filtre et renverra la réponse impulsionnelle
correspondante. Dans l’ordre, vous devez
1. Écrire le script Matlab permettant de calculer la réponse impulsionnelle d’un filtre passebande et réjecteur ;
2. Utilisez votre script pour extraire les coefficients du filtre ;
3. Générer un fichier header C contenant vos coefficients à l’aide de la fonction L138_fir_coeffs
mise à votre disposition ;
4. Écrire un premier code basique implémentant le filtre ;
5. Écrire un code optimisé utilisant un buffer circulaire pour l’implémentation du filtre.
Relevez la courbe de réponse en fréquence de votre filtre à l’aide de l’audio précision. Votre
rapport devra contenir ces courbes.
2
Rappel : Filtres Windowed-Sinc
La réponse impulsionnelle d’un filtre passe-bas et d’un filtre passe-haut se calcule comme suit.
h[i] = ±
sin(2πfc i)
iπ
Deux paramètres sont nécéssaires : la fréquence de coupure fc , exprimée comme une fraction de
la fréquence d’échantillonnage, et la longueur du filtre M . La longueur du filtre sera
M≈
4
BW
où BW correspond à la largeur de la bande de transition, exprimée comme une fraction de
la fréquence d’échantillonnage. N’oubliez pas de fenêtrer votre filtre à l’aide d’une fenêtre de
Blackman ou de Hamming (au choix).
wHamming [i] = 0.54 − 0.46cos(2πi/M )
wBlakman [i] = 0.42 − 0.5cos(2πi/M ) + 0.08cos(4πi/M )
Note : un filtre passe-bande est obtenu par convolution d’un filtre passe-haut avec un filtre
passe-bas et un filtre réjecteur est obtenu par addition des deux filtres.
1