Using a compilable programming language (not Librosa, Matlab, etc), I am attempting to perform ISTFT on filtered (masked) source STFT matrices obtained from NMF. During the original construction of the mixed STFT matrix, I am using a window length of 1024, and hop length of 512. When I run FFT on each window's $x(n)$ of length 1024, I can only use the first 512 amplitude and phase values returned, due to Nyquist.

After I generate filtered STFT's from each source after NMF, how can I estimate a $y(n)$ of length 1024 fin the time domain when I only have 512 inputs to IFFT? (The 512 inputs for each IFFT are the elements in each column of the filtered source-specific STFTs).

Should I keep the full 1024 coefficients returned from the original FFTs, and use a mixed STFT with dimensions $1024 \times \#windows$ as the basis for the entire analysis?

Last, the filtered source-specific STFT matrices will not provide real and complex values returned from an FFT, which are required for IFFT. Thus, my logic tells me OLA is a method to side-step IFFT.

  • $\begingroup$ What kind of input (real or complex) do you pass to your (S)TFT procedure? $\endgroup$
    – dsp_user
    Nov 5 '19 at 20:06
  • $\begingroup$ Thanks, amplitude is sent to the STFT, based on $amp_i=\sqrt{y_{i,real}^2 + y_{i,imag}^2}$ $\endgroup$
    – user16354
    Nov 6 '19 at 21:49
  • $\begingroup$ Reading a lot of papers by author groups at Telecom-ParisTech, and some of them implement $|\mathbf{X}|^{.2}$ in STFT. Is that power or amplitude squared? I pretty much learned that power spectrum data do not work in STFT? $\endgroup$
    – user16354
    Nov 6 '19 at 22:14
  • $\begingroup$ actually that equation is for obtaining the magnitudes, not amplitudes. The FFT algorithm always works internally with complex numbers. That said, you have two options when passing values to an FFT procedure a) creating a complex array consisting of real values (your samples) and imaginary values (all zeros) or b ) passing an array of real values, which are then interpreted/parsed by the FFT procedure as complex values (e.g even samples are interpreted as real and odd as imaginary). $\endgroup$
    – dsp_user
    Nov 7 '19 at 13:49
  • $\begingroup$ Note that for real input, the FFT procedure has to be able to recreate the top N/2 spectrum (using the FFT symmetry) if you wish to use it for reconstruction purposes. Perhaps you can post your code so we can have a look. $\endgroup$
    – dsp_user
    Nov 7 '19 at 13:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy