2016-04-08 19 views
1

Ich habe eine WAV-Datei und ich möchte die Frequenzen, Amplituden und Phase. Ich habe versucht, das zu tun, aber was ich bekomme ich nicht den Dolmetscher bekommenfinden Sie die Frequenz Amplitude und Phase einer WAV-Datei von fft

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 

ich zum Beispiel erhalten

[[ -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]] 

Antwort

0

Sie müssen den FFT-Algorithmus erfahren Sie alles zu verstehen. Wie Sie sehen, verwaltet es komplexe Zahlen, daher ist etwas Arbeit notwendig, um die Ausgabe zu interpretieren.

Als Abkürzung ist die Hälfte der Ausgabe redundant. Um zu sehen, das Spektrum, gehen Sie einfach so:

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])) 

Für

spectrum