160 likes | 340 Views
Calcul de la composition fréquentielle du signal audio. Jean-Paul Stromboni, pour les élèves SI3, nécessite un vidéo projecteur, durée 50mn , octobre 2013. Voici ce que vous devez savoir faire après cette séance :. Définir le spectre d’un signal sinusoïdal
E N D
Calcul de la composition fréquentielle du signal audio Jean-Paul Stromboni, pour les élèves SI3, nécessite un vidéo projecteur, durée 50mn , octobre 2013 Voici ce que vous devez savoir faire après cette séance : • Définir le spectre d’un signal sinusoïdal • Définir la Transformée de Fourier Discrète (TFD) de taille N • Trouver la TFD des signaux constante et sinusoïde. • décrire l’effet sur la TFD de la taille du signal et celui de la fenêtre de Hamming • Utiliser les fonctions fft(.) et spectrogram(.) de Scilab T. D. : calculer et interpréter spectre et spectrogramme Savez vousrépondre aux questions suivantes ?
Composition fréquentielle ou spectre • Depuis Joseph Fourier (1768-1830), physicien et mathématicien français, on sait décomposer une fonction du temps s(t) quelconque en une somme de fonctions sinusoïdales, ou spectre : • Soit s(t), fonction du temps définie quelque soit t, S(f) ci-dessous détermine le spectre de s(t) : • Inversement, connaissant le spectre S(f) de s(t), on peut déterminer s(t) : • S(f) est une quantité complexe : • Si par exemple s(t) contient la seule fréquence f: • On aura : et • Dans la suite, on se limite au spectre d’amplitude, ou ‘spectre’ :
Pour calculer le spectre d’un signal discret, on utilise la Transformée de Fourier Discrète (TFD) • Définition de la TFD : pour un signal x(t) échantillonné à la fréquence fe, SCILAB calcule le spectre en limitant le signal à une fenêtre temporelle de N échantillons successifs: • N est le nombre d’échantillons utilisés • X(f) estle spectre de x(n/fe), n= 0 … N-1 • X(f) est périodique, la valeur de la période est fe • |X(f)| est symétrique par rapport à la fréquence fe/2 • Calcul de la TFD : par défaut, Scilab calcule seulement N valeurs X(fk) : • (résolution fréquentielle) • Augmentation de la précision du calcul de la TFD:on calcule M > N valeurs, dans l’intervalle [0, fe[ • Algorithme de F.F.T. (Fast Fourier Transform) : pour calculer la TFD, Scilab, Matlab, Goldwave, Audacity, … utilisent un algorithme plus rapide:on prend une puissance de 2 pour N, et on exploite les périodicités et symétries de l’exponentielle complexe de la formule.
T.F.D. d’un signal constant de taille N échantillons (reprise du calcul fait en travaux dirigés) (signal constant ou fréquence nulle ou fenêtre rectangulaire) spectre de rn spectre (d'amplitude) de rn • Que valent : • R(0) • R(fe) • R(-fe) • R(fe/N) • La périodicité du dénominateur • La périodicité du numérateur
Tracé de R(f) (a = 0.75, N = 16, fe = 8kHz) Tracé de |R(f)| sur une période :[ 0, fe [ trouver fe/2 ? fe ? maximum ? en f= ? Nombre de lobes ? N ? Tracé de |R(f)|/N: Retrouver a ? N ? fe ? Reporter les N valeurs de TFD calculées R(kfe/N), k= 0 … N-1
Extension à la TFD d’un signal sinusoïdal Tracé de |S(f)|/N pour : a= 0.5, N=16, fe= 8000 Hz, f0=1000Hz Tracé de |S(f)|/N sur une période Lire fe R(f0) R(fe-f0) R(fe/N)=R(500) a f0 valeurs calculées par la TFD ? Si f0=1250Hz, et N=16, que prévoir ? /N
Influence de N (fenêtre rectangulaire) s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz Lire f0= 440 Hz a0=0.75 (~0.8) fe = N =32 NTe = Df =250Hz spectre/N <0.4 M=256 pts tracés Lire : f0= a0= fe = N = NTe = Df = spectre/N =
Fenêtre de Hamming et fenêtre rectangulaire (Rect) (Hamming) Pas de fenêtre (None) ou fenêtre rectangle fenêtre de Hamming Comparaison des spectres d'amplitude de ces deux fenêtres : fe= N= durée= fe/N= fmin= fmax= Hamming amplMax=0.53 nbLobes= 1 largeur=1000Hz Rectangle amplMax=1 nbLobes=31 Largeur lobe central: 500Hz
Influence de N avec la fenêtre de Hamming s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz f0= a0= fe = N = NTe = Df = spectre/N = Dessiner la forme de la fenêtre de Hamming Comparer au spectre obtenu avec la fenêtre rectangulaire
f1 f1 f0 Erreur de synchronisation de la TFD Le signal s est composé de deux fréquences f0 et f1 s=a*cos(2*pi*f0*t)+a1*cos(2*pi*f1*t) • erreur sur l'amplitude et sur la position si f1 n'est pas l'une des fréquences calculées : • risque de confusion, si f0 et f1 sont trop proches
Exploitation du tracé du spectre d'amplitude • sur les tracés suivants, retrouver : fe, N, a0 et f0, la durée de la fenêtre temporelle et l'axe de symétrie. Que vaut M ? Que vaut Df ?Quelle est la relation entre les tracés ? fe=8000, N=32, s=0.25*cos(2*pi*500*t)
Spectre et spectrogramme (avec Goldwave) Spectrogramme de s(t), fe=8kHz, f=500Hz, fenêtre rectangulaire, 30fps spectre = composition fréquentielle Spectrogramme=spectre (temps) Mettons qu’on calcule le spectre 30 fois par seconde : c’est donc environ 270 échantillons (8000/30) pour calculer une TFD, Et on réunit tous ces résultats avec le temps en abscisse, c’est le spectrogramme 500 Hz, -28 dB 1500 Hz, -47 dB 2500 Hz, -56 dB 3500 Hz, -62 dB 20*log10(9)=19 dB 20*log10(25)=28 dB 20*log10(49) = 33 dB
Représentation 3D du spectrogramme • pour le signal vocal, on sait que la durée de la fenêtre d’analyse ne doit pas dépasser 30ms (?) • si fe=8 kHz, c’est une fenêtre de 240 échantillons. • On calcule la TFD de la fenêtre, • on déplace la fenêtre et on recommence • On regroupe les résultats dans un spectrogramme, en 3D (cf. ci-dessous) ou en 2D (cf. Goldwave) • Quelle est ici la résolution fréquentielle ? • Comment obtenir une fenêtre de 20ms, sachant que fe=22050Hz ? Donner la résolution fréquentielle. • Voici le spectrogramme de piano_c3.wav tracé par WaveLab : retrouver les informations de fréquence fondamentale, durée du signal, enveloppe …
Spectre et spectrogramme avec Audacity spectre = composition fréquentielle