繁体   English   中英

通过fft查找WAV文件的频率幅度和相位

[英]find the frequency amplitude and phase of a wav file by fft

我有一个wav文件,我想获取频率,幅度和相位。 我已经尝试这样做,但是我得到的我无法得到翻译

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

我得到例如

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

您必须学习FFT算法才能理解所有内容。 如您所见,它管理复数,因此需要一些加法运算来解释输出。

作为捷径,一半的输出是多余的 要查看频谱,只需执行以下操作:

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

对于

光谱

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM