python - 通过fft查找wav文件的频率幅度和相位

标签 python numpy fft wav spectrogram

我有一个 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算法才能理解这一切。正如您所看到的,它管理复数,因此需要一些添加工作来解释输出。

作为快捷方式,输出的一半是 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]))

对于

spectrum

关于python - 通过fft查找wav文件的频率幅度和相位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494645/

相关文章:

java - 需要FFT类参数的解释

c - FFTW 库 : how to properly plot an output?

python - 将 CNTK virtualenv 添加到 Visual Studio Python 项目

python - 连接到mysql

python - 用向量作为numpy中的条目迭代矩阵的最快方法

python - 在 python 中寻找一些关于组合学的指导

python - 如何从图像中删除方括号?

c# - 简单的就地离散傅立叶变换 (DFT)

python - Python 中文本聚类后的相同聚类

python - 将此 Python 结构的值合并到单个字典中的更快方法是什么?