2016-04-08 14 views
1

Bir wav dosyam var ve frekansları, amplitüdleri ve fazı almak istiyorum. Bunu yapmaya çalıştık amafft dosyasının frekans genlik ve fazını fft ile bul

import math 
import numpy as np 
from matplotlib.pyplot import * 
import scipy.io.wavfile as wave 
from numpy.fft import fft 

rate,data = wave.read('test.wav') 
n = data.size 
duree = 1.0*n/rate 
print rate 
spectre = np.fft.fft(data[5:10]) 
#freq = np.fft.fftfreq(n, 1) 
print spectre 

Ben örnek

[[ -9.27766766e+08+0.j -9.27557398e+08+0.j] 
[ -1.86505703e+09+0.j 2.16973235e+09+0.j] 
[ -2.33588876e+08+0.j 2.33467572e+08+0.j] 
[ 1.76254287e+09+0.j 1.76250750e+09+0.j] 
[ 9.96780365e+08+0.j -2.30269509e+09+0.j]] 

cevap

0

Hepiniz anlamak için FFT algoritması öğrenmeliyiz için elde yorumlayıcı alamayan olsun. Gördüğünüz gibi karmaşık sayıları yönetir, bu nedenle çıktıyı yorumlamak için bazı çalışmalara ihtiyaç vardır.

Bir kısayol olarak, çıktının yarısı redundant'dir. aynen böyle devam edin spektrum görmek için:

import numpy as np 
import matplotlib.pyplot as plt 
import scipy.io.wavfile as wave 

rate,data = wave.read('57.wav') 
spectre = np.fft.fft(data) 
freq = np.fft.fftfreq(data.size, 1/rate) 
mask=freq>0 
plt.plot(freq[mask],np.abs(spectre[mask])) 

spectrum

için
İlgili konular