【问题标题】:find the frequency amplitude and phase of a wav file by fft通过 fft 找到 wav 文件的频率幅度和相位
【发布时间】:2016-04-08 08:11:28
【问题描述】:

我有一个 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]]

【问题讨论】:

    标签: python numpy fft wav spectrogram


    【解决方案1】:

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

    作为快捷方式,输出的一半是redundant。要查看频谱,请按以下方式进行:

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

    对于

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      相关资源
      最近更新 更多