Почему последовательный прогон STFT и ISTFT от scipy не возвращает исходный сигнал? - PullRequest
1 голос
/ 08 октября 2019

Я довольно новичок в обработке сигналов и хочу попробовать stft.
Я использую scipy's stft и istft, чтобы получить следующий результат: ORIGNIAL SIGNAL -> STFT -> ISTFT -> ORIGINAL SIGNAL
В качестве тестовых данных использовался Mono WAV-файл с Африкой от Toto.
Был выполнен следующий код:

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 требуются?

...