Transcript Document
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 2012 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. Mesurer l’effet de la taille du signal de de la fenêtre d’apodisation Utiliser les fonctions fft(.) et spectrogram(.) de MATLAB Travaux Dirigés : calculer et exploiter TFD et FFT Savez vous répondre aux questions suivantes ? Quelle est l’information donnée par le spectre d’un signal audio ? Quelle est la résolution fréquentielle d'une FFT de taille N= 32 si fe= 8kHz ? Pourquoi diviser le spectre d'amplitude par la taille N de la fenêtre temporelle ? Quelle est la période du spectre d'un signal audio numérique échantillonné à 22050Hz ? Si on calcule M = 2048 valeurs de la TFD, préciser les fréquences fk si fe=8000Hz : Quelle est la durée d'une fenêtre de 1024 échantillons, à fe = 44100Hz Donner la composition fréquentielle de x(t) Pourquoi limiter le calcul du spectre à une fenêtre de taille N échantillons ? x(t ) cos (2000t ) 2 Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 1 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) : S ( f ) s(t )e2ift dt Inversement, connaissant le spectre S(f) de s(t), on détermine s(t) par : s(t ) S ( f )e 2ift df S(f) est une quantité complexe : Si la composante fréquentielle de s(t) à la fréquence f s’exprime par : s f (t ) a f cos(2ft p f ) On aura : a f S ( f ) et p f S ( f ) Dans la suite de ce cours, on se limite au module de S(f), c’est-à-dire au spectre d’amplitude : spectre S ( f ) Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 2 Matlab, Scilab, Goldwave, utilisent la Transformée de Fourier Discrète (TFD) pour calculer le spectre Définition de la TFD : pour un signal x(t) échantillonné à la fréquence fe, MATLAB calcule le spectre en limitant le signal à une fenêtre temporelle de N échantillons : X ( f ) n 0 x(n / f e )e 2ifn / f e n 0 xn e 2ifn / f e N 1 N 1 X(f) est le spectre de x(n/fe), 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 la fenêtre de calcul dure NTe (contient N échantillons) Calcul de la TFD : en pratique, on calcule seulement N valeurs de la TFD, les X(fk) pour les seules fréquences fk : f k kfe / N , k 0N 1 f f k 1 f k X ( fk ) X k fe est la résolution fréquentielle N N 1 x n 0 n e 2ink M , f k kfe / M , k 0 M 1, Note : pour mieux reconstruire la fonction X(f), on peut calculer et afficher M > N valeurs au lieu de N Algorithme de transformée de Fourier rapide (en anglais Fast Fourier Transform) Si N est une puissance de 2, on accélère le calcul du fait des périodicités et symétries des exponentielles complexes Matlab, Scilab, Goldwave, … utilisent l’algorithme de FFT pour calculer la transformée de Fourier discrète Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 3 Calcul de la T.F.D. du signal constant de taille N TFD de la fonction constante, du signal de fréquence nulle, ou de la fenêtre rectangulaire de durée NTe rn x, 0 n N 1 TFD (rn ) R( f ) x n 0 e 2in ( f / f e ) N 1 1 e 2iN f / f e R( f ) x 1 e 2i f / f e e iNf / f e eiNf / f e e iNf / f e R( f ) x if / f e e eif / f e e if / f e sin(Nf / f e ) R( f ) x e i ( N 1) f / f e sin( f / f e ) R( f ) x sin(Nf / f e ) sin(f / f e ) Que valent : 1. R(0) 2. R(fe) 3. R(-fe) 4. R(fe/N) 5. La périodicité du dénominateur 6. La périodicité du numérateur Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 4 Analyse d’un exemple : x = 0.75, N = 16, fe = 8kHz R( f ) x sin(Nf / f e ) sin(16f / 8000) 0.75 sin(f / f e ) sin(f / 8000) a=0.75, N=16, fe=8000, M=256 16 spec tre de x=0.75 fenêtre de taille 16 14 Tracé sur une période [ 0, fe [ spectre d'amplitude 12 10 8 Relation entre [0,fe/2] et [fe/2, fe] ? 6 4 2 0 0 1000 2000 3000 4000 5000 fréquenc e (Hz) 6000 7000 8000 a=0.75, N=16, fe=8000, M=256 1 spec tre de x=0.75 fenêtre de taille 16 Tracé de spectre/N entre 0 et fe 0.9 0.8 spectre/N 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1000 2000 3000 4000 5000 6000 fréquenc e (Hz) a=0.75, N=16, fe=8000, M=256 7000 8000 1 spec tre de x=0.75 fenêtre de taille 16 0.9 Tracé de spectre/N : reporter les N valeurs calculées R(kfe/N), k= 0 … N-1 0.8 spectre/N 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1000 2000 3000 4000 5000 fréquenc e (Hz) 6000 7000 8000 Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 5 TFD du signal sinusoïdal (sans calcul) sn x cos(2nf0 / f e ), 0 n N 1 e 2in ( f 0 / f e ) e 2in ( f 0 / f e ) sn x cos(2nf0 / f e ) a 2 TFD( sn ) S ( f ) x n 0 sn e 2nf / f e N 1 x n 0 N 1 e 2in ( f f 0 ) / f e e 2in ( f f 0 ) / f e 2 x ( R( f f 0 ) R( f f 0 )) 2 Analyser le spectre d’amplitude suivant (où |S(f)| est déjà divisé par N) a=0.5, N=16, fe=8000, f0=1000, M=256 0.35 spectre de x=0.5 fenêtre de taille 16 Tracé de |S(f)|/N sur une période 0.3 spectre d'amplitude 0.25 0.2 0.15 0.1 0.05 0 0 1000 2000 3000 4000 5000 fréquence (Hz) 6000 7000 8000 Lire fe R(f0) R(fe-f0) R(fe/N) a et f0 Placer les N= 16 valeurs calculées par la TFD f0 varie de 100 Hz, que prévoir ? Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 6 Influence du nombre N d’échantillons (fenêtre rectangulaire, ou pas de fenêtre) s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz fenêtre rectangle N=32 1 signal s 0.5 0 -0.5 -1 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 7000 8000 temps (s) spectre d'amplitude/N, N=32 M=256 0.4 spectre/N 0.3 0.2 f0= a0= fe = N= NTe = f = spectre/N = 0.1 0 0 1000 2000 3000 4000 5000 6000 fréquence (Hz) fenêtre rectangle N=256 1 signal s 0.5 0 -0.5 -1 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 7000 8000 temps (s) spectre d'amplitude/N, N=256 M=2048 0.4 spectre/N 0.3 f0= a0= fe = N= NTe = f = spectre/N = 0.2 0.1 0 0 1000 2000 3000 4000 5000 6000 fréquence (Hz) Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 7 Influence de la fenêtre de Hamming r(n) 1, 0 n N 1 h(n) 0.54 0.46cos(2n /( N 1)),0 n N 1 fenêtre de Hamming N=32 1.5 Hamming Rect amplitude 1 0.5 0 0 0.5 1 1.5 2 2.5 3 3.5 temps (s) -3 x 10 Comparaison des spectres d'amplitude de ces deux fenêtres : N=32, M=256 points calculés, D=N*Te=0.004, deltaf=250 1 Rect 0.9 Hamming spectre normalisé : fftshift( abs (fft)) / N 0.8 0.7 fe= N= durée= fe/N= fmin= fmax= 0.6 Hamming amplMax= nbLobes= largeur= 0.5 0.4 0.3 0.2 0.1 0 -4000 -3000 -2000 -1000 0 1000 fréquence (Hz) 2000 3000 4000 Rectangle amplMax= nbLobes= largeur: Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 8 Influence de la taille N du signal dans le cas de la fenêtre de Hamming s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz fenêtre de Hamming N=32 1 signal s 0.5 0 -0.5 -1 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 7000 8000 temps (s) spectre d'amplitude/(N*0.53), N=32 M=256 spectre/(N*0.53) 0.4 0.3 f0= a0= fe = N= NTe = f = spectre/N = 0.2 0.1 0 0 1000 2000 3000 4000 5000 6000 fréquence (Hz) Dessiner la forme de la fenêtre de Hamming fenêtre de Hamming N=256 1 signal s 0.5 0 -0.5 -1 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 temps (s) spectre d'amplitude/(N*0.53), N=256 M=2048 Comparer au spectre obtenu avec la fenêtre rectangulaire spectre/(N*0.53) 0.4 0.3 0.2 0.1 0 0 1000 2000 3000 4000 5000 6000 7000 8000 fréquence (Hz) Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 9 Erreur ou problème de synchronisation On illustre avec le signal s suivant composé d'une ou de deux fréquences f0 et f1 : s=a*cos(2*pi*f0*t)+a1*cos(2*pi*f1*t) 1. erreur sur l'amplitude et sur la position de la raie si f1 n'est pas l'une des fréquences calculées : f0=500, f1=550, a=0, a1=0.25 spectre d'amplitude 4 3 2 1 0 0 2000 4000 6000 8000 fréquence (Hz) 2. risque de confusion, si les deux composantes de fréquence sont trop proches f0=500, f1=625, a=0.25, a1=0.25 spectre d'amplitude 5 4 3 2 1 0 0 2000 4000 6000 8000 fréquence (Hz) Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 10 Spectre et spectrogramme (avec Goldwave) Spectrogramme de s(t), fe=8kHz, f=500Hz, fenêtre rectangulaire, 30fps s (t ) 0.8 cos(6ft ) cos(10ft ) cos(14ft ) cos(2ft ) 2 32 52 72 spectre = composition fréquentielle Spectrogramme=spectre (temps) Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 11 Spectre et spectrogramme avec MATLAB fe=8000; N=4096; t=[0:16000]/fe; s=0.5*cos(2*pi*1000*t)+ 0.75*cos(4000*pi*t); f=[-N/2:N/2-1]*fe/N; spec= fftshift(fft(s(1:N))) plot(f,abs(spec)), grid, figure spectrogram(s,hamming(N),N/2,N,fe,'yaxis') colorbar 400 350 300 250 200 150 100 50 0 -5000 0 5000 Noter pour le spectrogramme : 1. la fenêtre utilisée est une fenêtre de Hamming 2. le code de couleurs donnant l’amplitude en dB est à droite 4000 -20 3500 -40 3000 -60 Frequency (Hz) 2500 -80 2000 1500 -100 1000 -120 500 -140 0 0.5 1 1.5 Time Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 12 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 f ? Quelle est la relation entre les tracés ? spectre d'amplitude 5 4 3 2 1 0 0 2000 4000 6000 8000 6000 8000 fréquence (Hz) spectre d'amplitude 4 3 2 1 0 0 2000 4000 fréquence (Hz) Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 13 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 … Composition fréquentielle du signal audio, séance 4 SSII, oct. 2012 - page 14