为什么scipy的STFT和ISTFT连续运行不返回原始信号?

2024-04-23 21:27:35 发布

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

我对信号处理相当陌生,想试试stft。
我使用scipy的stft和istft得到以下结果: 原始信号->;STFT->;ISTFT->;原始信号
使用Toto提供的非洲Mono wav文件作为测试数据。
执行了以下代码:

rate, wav_data = read('./africa-toto.wav')
f, t, original_signal = stft(wav_data, fs=rate, return_onesided=True, window='hann')
t_inv, restored_signal = istft(original_signal, fs=rate, time_axis=0, freq_axis=1, window='hann')
write('./stft_example.wav', rate, np.int16(restored_signal))  

输出wav文件仅包含噪声。不过,我已经使用fft/ifft实现了预期的结果。
我做错什么了?可能需要使用nperseg和nfft进行一些操作?你知道吗


Tags: 文件gtdatasignalrate信号windowfs