微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.wav文件的DFT

如何解决.wav文件的DFT

import os
import scipy.io
import scipy.io.wavfile
import numpy as np
import matplotlib.pyplot as plt
dataset_path = os.path.join(os.environ['HOME'],'shared','data','assignment_1')
wavedata = os.path.join(dataset_path,'example.wav')
   
fs,audio_buffer = scipy.io.wavfile.read(wavedata)

a = np.array(audio_buffer)

frame_size = 2048
start_frame = 2*fs
T = 1/fs # sampling period
t = 2048/fs # seconds of sampling
frame = np.array(a[0:int(fs*t):]) # total points in signal

#because the starting point is 2*fs and the amount of frames is 2048
spectrum = np.fft.fft(a) [start_frame:start_frame+frame_size:]
abs_spec = abs(spectrum) [0:int(frame_size/2):]

plt.plot(abs_spec)
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")
plt.show()

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

plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")

能不能告诉我我做得对吗?

也有一个问题

abs_spec = abs(spectrum) [0:int(frame_size/2):]

本意是用于消除虚数的。

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

abs_spec = abs(spectrum) [0:frame_size: 2]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。