【发布时间】:2021-03-31 12:32:59
【问题描述】:
我想做这样的一个想法:
- 对音频文件进行分段(将其分成帧) - 为避免信息丢失,帧应重叠。
- 在每一帧中,应用一个窗口函数(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))
但在使用汉明窗之前,我不知道如何将信号拆分为帧(段)。 请帮帮我:)
【问题讨论】:
标签: python signal-processing window-functions frames hamming-window