我希望能做到以下几点:
- 对音频文件进行分段(将其分成帧)- 为避免信息损失,帧应重叠。
- 在每个帧中应用窗函数(Hann、Hamming、Blackman等)- 以最小化起始和结束处的不连续性。
我成功将音频文件保存为一个numpy数组:
def wave_open(path, normalize=True, rm_constant=False):
path = wave.open(path, 'rb')
frames_n = path.getnframes()
channels = path.getnchannels()
sample_rate = path.getframerate()
duration = frames_n / float(sample_rate)
read_frames = path.readframes(frames_n)
path.close()
data = struct.unpack("%dh" % channels * frames_n, read_frames)
if channels == 1:
data = np.array(data, dtype=np.int16)
return data
else:
print("More channels are not supported")
然后我对整个信号进行了汉明窗处理:
N = 11145
win = np.hanning(N)
windowed_signal = (np.fft.rfft(win*data))
但我不知道如何在使用汉明窗之前将信号分割成帧(片段)。请帮忙 :)