Le traitement audio est assez nouveau pour moi. Et actuellement en utilisant Python Numpy pour le traitement des fichiers wave. Après avoir calculé la matrice FFT, j'obtiens des valeurs de puissance bruyantes pour des fréquences inexistantes. Je suis intéressé par la visualisation des données et la précision n'est pas une priorité élevée. Existe-t-il un moyen sûr de calculer la valeur d'écrêtage pour supprimer ces valeurs, ou devrais-je utiliser toutes les matrices FFT pour chaque ensemble d'échantillons pour trouver un nombre moyen?Clipping FFT Matrix
concernant
Edit:
from numpy import *
import wave
import pymedia.audio.sound as sound
import time, struct
from pylab import ion, plot, draw, show
fp = wave.open("500-200f.wav", "rb")
sample_rate = fp.getframerate()
total_num_samps = fp.getnframes()
fft_length = 2048.
num_fft = (total_num_samps/fft_length) - 2
temp = zeros((num_fft,fft_length), float)
for i in range(num_fft):
tempb = fp.readframes(fft_length);
data = struct.unpack("%dH"%(fft_length), tempb)
temp[i,:] = array(data, short)
pts = fft_length/2+1
data = (abs(fft.rfft(temp, fft_length))/(pts))[:pts]
x_axis = arange(pts)*sample_rate*.5/pts
spec_range = pts
plot(x_axis, data[0])
show()
Voici l'intrigue à l'échelle non logarithmique, pour le fichier d'onde synthétique contenant 500Hz (fondu) + 200Hz onde sinusoïdale créée en utilisant Goldwave.
avez-vous vérifié vos sorties avec une bonne sortie FFT connue? (matlab ou fftw serait de bonnes sources). En outre, essayez d'entrer des sons purs, c'est-à-direune onde sinusoïdale à une fréquence connue et vérifiez votre sortie pour différentes tailles de fft. – basszero