1
$\begingroup$

I have some FFT data, 257 dimensions, every 10 ms, with 121 frames, i.e. 1.21 secs. I think the first dimension is probably something else and the remaining are the FFT coefficients, I guess.

From there, I want to calculate back some PCM signal for 44.1 Hz so I can play the sound. I asked the same question in a more mathematical way here but maybe here is a better place because I actually want to implement this.

How would I do that? Maybe I need some more information (which I have to find out somehow) - which? Maybe these missing information can be intelligently guessed somehow? What is a likely interpretation of those 257 dimensions?

This question is about the theory. The implementation is trivial I guess. But a concrete example in some language would be nice to help understanding the theory. Maybe C++ with FFTW? I skipped through the FFTW docs but I fail to understand all the terminology and some background, e.g. here. Why is it from complex to real or the other way, I only want real to real. What are those REDFT? What's a DCT, DFT, DST? FFTW_HC2R?


(I asked mostly the same question on SO here, but that was intended to be more about the practical side. Here on DSP I want to ask about the theory to get some understanding.)

$\endgroup$
4
  • $\begingroup$ There is no such thing as "FFT data". FFT is an algorithm to compute the Discrete Fourier Transform of a signal. If your data is composed of complex numbers that means you have the exact representation of the DFT, if it is real and positive numbers that means it was reduced to a spectrogram. If you really have the DFT you just have to plug in your data to FFTW for example to obtain the Inverse Fourier Transform of each frame. If it is reals than I think it would be a bit difficult to recover the audio dsp.stackexchange.com/questions/9877/… $\endgroup$
    – gsmafra
    Aug 16, 2015 at 12:29
  • $\begingroup$ I don't really know how to interpret my data. It has 257 dims per frame, and a frame each 10ms. I think that's just real-valued data. I have plotted it and it looks like a spectogram. My question also implies the open question about what interpretation of my data is likely, or plausible. $\endgroup$
    – Albert
    Aug 16, 2015 at 13:06
  • $\begingroup$ Typically one would store two vectors for each frame in case of a DFT, one vector for the real part and another one for the imaginary part. For visualizing this people normally take the absolute value of each frequency bin and this originates the spectrogram. See if your values are all positive. If they do then definitely it is a spectrogram. If not it could be real and imaginary parts concatenated (128 scalars each) and another scalar for the energy of the frame, or maybe the log of the spectrum, the latter will be more normally distributed and the first will have more outliers $\endgroup$
    – gsmafra
    Aug 16, 2015 at 13:22
  • $\begingroup$ From a comment regarding to the FFT data, I think sqrt10 and then mean-variance-normalization was applied. So they are not all positive but that's because of the normalization. $\endgroup$
    – Albert
    Aug 16, 2015 at 13:47

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.