Python .wav文件的DFT 导入操作系统 导入scipy.io 导入scipy.io.wav文件 将numpy作为np导入 将matplotlib.pyplot作为plt导入 dataset_path=os.path.join(os.environ['HOME'],'shared','data','assignment_1') wavedata=os.path.join(数据集_路径'example.wav') fs,audio_buffer=scipy.io.wavfile.read(wavedata) a=np.数组(音频缓冲区) 框架尺寸=2048 开始帧=2*fs T=1/fs#采样周期 t=2048/fs#采样秒数 frame=np.数组(a[0:int(fs*t):])#信号中的总点数 #因为起点是2*fs,帧数是2048 频谱=np.fft.fft(a)[开始帧:开始帧+帧大小:] abs\u spec=abs(频谱)[0:int(帧大小/2):] 平面图(abs_规范) plt.xlabel(“频率(Hz)”) plt.ylabel(“振幅”) plt.show()

Python .wav文件的DFT 导入操作系统 导入scipy.io 导入scipy.io.wav文件 将numpy作为np导入 将matplotlib.pyplot作为plt导入 dataset_path=os.path.join(os.environ['HOME'],'shared','data','assignment_1') wavedata=os.path.join(数据集_路径'example.wav') fs,audio_buffer=scipy.io.wavfile.read(wavedata) a=np.数组(音频缓冲区) 框架尺寸=2048 开始帧=2*fs T=1/fs#采样周期 t=2048/fs#采样秒数 frame=np.数组(a[0:int(fs*t):])#信号中的总点数 #因为起点是2*fs,帧数是2048 频谱=np.fft.fft(a)[开始帧:开始帧+帧大小:] abs\u spec=abs(频谱)[0:int(帧大小/2):] 平面图(abs_规范) plt.xlabel(“频率(Hz)”) plt.ylabel(“振幅”) plt.show(),python,numpy,wav,dft,frequency-analysis,Python,Numpy,Wav,Dft,Frequency Analysis,我需要对.wav文件执行DFT。 但我不确定我在x轴和y轴上得到了什么。 我需要它 plt.xlabel("Frequency (Hz)") plt.ylabel("Amplitude") 你能告诉我我做得对吗 还有一个关于 abs\u spec=abs(频谱)[0:int(帧大小/2):] 这是用来抵消虚数的 或者我应该只完成步骤2: abs\u spec=abs(频谱)[0:帧大小:2] 看来您基本上拥有这一权利(对于频率,您可能希望第一个)。但是

我需要对.wav文件执行DFT。 但我不确定我在x轴和y轴上得到了什么。 我需要它

plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")
你能告诉我我做得对吗

还有一个关于

abs\u spec=abs(频谱)[0:int(帧大小/2):]
这是用来抵消虚数的

或者我应该只完成步骤2:

abs\u spec=abs(频谱)[0:帧大小:2]

看来您基本上拥有这一权利(对于频率,您可能希望第一个)。但是:1)最好通过创建一个已知的数据样本(比如正弦波)来检查所有这一切,并确保一切都符合预期;而且,2)
fftfreq
给出了
fft
的频率,因此您也应该检查一下,这可能是问题末尾部分的更好指南。