Composante spectrale, Analyse spectrale, signal sonore, son d'une flûte, analyse spectrale d'un son, transformée de Fourier, Fourier
Le but de l'exercice qui suit est de faire l'analyse spectrale d'un son. L'enregistrement du son a été réalisé au préalable dans un fichier WAV, lisible sous Python. L'analyse spectrale de ce son sera réalisée en calculant sa transformée de Fourier numérique grâce au module Python.
Deux fichiers sonores .wav sont mis à disposition, nous les étudierons successivement dans le cadre de ce TP.
[...] Option en utilisant la fonction np.fft.fftfreq qui détermine automatiquement les fréquences pour lesquelles la transformée de Fourier a été calculée. In fourier = np.fft.fft(Amplitude) module_fourier = np.abs(fourier) n = Amplitude.size freq = np.linspace(0,freq_échantillonnage,n) plt.plot(freq,module_fourier) plt.xlabel("Fréquence (en plt.ylabel("Module de la tranformée de Fourier") plt.title("Transformée de Fourier calculée 'à la main'") plt.show() localhost:8888/lab/tree/Traitement des signaux/TP4/TP4.ipynb 3/9 13/04/2021 In TP4 freq = np.fft.fftfreq(n,d = 1/freq_échantillonnage) plt.plot(freq,module_fourier) plt.xlabel("Fréquence (en plt.ylabel("Module de la tranformée de Fourier") plt.title("Transformée de Fourier calculée avec 'np.fft.fftfreq'") plt.show() Que constatez-vous ? Les deux résultats sont-ils similaires ? Quelle est la différence éventuelle ? [...]
[...] Sauvegarder cette valeur dans une variable nommée T . In intermediaire = fichier1[1] T = len(intermediaire[:,0])/freq_échantillonnage print("La durée totale du signal La durée totale du signal est 10.0 s localhost:8888/lab/tree/Traitement des signaux/TP4/TP4.ipynb 1/9 13/04/2021 TP4 Le signal enregistré est un signal stéréo. Le tableau contenant les amplitudes est donc constitué de deux colonnes correspondant chacune à un canal audio. Les deux canaux étant ici identiques, on ne conservera les amplitudes du signal que sur l'un des deux canaux en sélectionnant tous les éléments de la première colonne du tableau 2D. [...]
[...] Quel est le contenu fréquentiel du signal sonore enregistré ? Elle est de 440 Hz. Recalculer la transformée de Fourier mais uniquement sur les 50 premières périodes du localhost:8888/lab/tree/Traitement des signaux/TP4/TP4.ipynb 4/9 13/04/2021 TP4 signal. Comparer ce résultat au résultat précédent. Pour cela, zoomer sur la plage de fréquences entre 420 et 460 Hz et normaliser les amplitudes des deux transformées de Fourier à 1 en les divisant par leur valeur maximale (calculée à l'aide de la fonction np.max() Que constatez-vous ? [...]
[...] On peut clairement voir que le son n'est pas pur comme le son de la précédente partie. En effet, il possède plusieurs gamme de frèquences. Les variations d'amplitude peuvent modifier le contenu spectral du signal, notamment si ces variations sont brusques. Expliquer pourquoi. Les variations d'amplitudes peuvent modifier le contenu spectral du signal en les considérant comme des variation dues à un signal sinusoïdale. On se place maintenant sur une plage temporelle où l'amplitude du signal est quasiment constante (par exemple entre 0.4 et 0.6 s). [...]
[...] In In temps = np.linspace(0,len(intermediaire[:,0])/freq_échantillonage,len(Ampli plt.plot(temps,Amplitude) plt.xlim(0,10e-3) plt.xlabel("temps (en plt.ylabel("Amplitude") plt.show() #On peut assimiler cette fonction à une sinusoide parfaite def fonction(x,A,f,phi): return A*np.sin(2*np.pi*f*x + phi) A = 150000 phi = 0 f = 1/0.002 In In int1 = np.where(np.isclose(temps,10e-3)) in1 = int1[0] temps_prime = temps[0:in1[0]] Amplitude_prime = Amplitude[0:in1[0]] popt, pcov = curve_fit(fonction,temps_prime,Amplitude_prime,p0=[A,f,phi]) plt.plot(temps,Amplitude) plt.plot(temps_prime,fonction(temps_prime,*popt)) plt.xlim(0,10e-3) plt.xlabel("temps (en plt.ylabel("Amplitude") plt.show() localhost:8888/lab/tree/Traitement des signaux/TP4/TP4.ipynb 2/9 13/04/2021 In TP4 print("A =",popt[0],"+/-",np.sqrt(np.diag(pcov)[0])) print("f =",popt[1],"+/-",np.sqrt(np.diag(pcov)[1])) print("phi =",popt[2],"+/-",np.sqrt(np.diag(pcov)[2])) A = -16422.46592371173 0.03439447021674087 f = 439.99909818799534 0.00011912832902438203 phi = 3.1415912710527665 4.2353188818811244e-06 Ce signal vous semble-t-il échantillonné correctement au sens de Shannon ? Le critère de Shannon : la représentation discrète d'un signal exige des échantillons régulièrement espacés à une fréquence d'échantillonnage supérieure au double de la fréquence maximale présente dans ce signal. On a la fréquence maximal du signal qui vaut 440 Hz alors que la frénquence d'échantillonnage est de 44100 Hz. Donc, le critère de Shannon est bien respecté. On cherche maintenant à étudier le spectre de ce son. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture