通过以下方法求出wav文件的频率振幅和相位

2024-06-02 08:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我得到了一个例子

^{pr2}$

Tags: 文件fromimportfftnumpydatarateas
1条回答
网友
1楼 · 发布于 2024-06-02 08:27:12

你必须学习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

相关问题 更多 >