DSPRelated.com
Forums

Real time FFT voice processing...why wont it work?

Started by Shafik September 16, 2004
Why does it matter as long as IFFT(FFT(x)) == x?

I'll run the above experiments anyway next time I'm at work :-)
--Shafik

Shafik

Since it is not working on speech I would say your IFFT(FFT(x)) != x.

I am just trying to check things methodically that people sometimes
overlook.

For example, from your post I am not sure the imaginary parts of the
final result are 0.  You may have implied it, but sometimes people
take the real part as the output when the imag part is not 0. Also the
one tone does not test all of the IFFT(FFT()) processing.

What is the tone amplitude relative to the max possible input
amplitude?

Dirk

"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095748182.462519.3880@k17g2000odb.googlegroups.com>...
> Why does it matter as long as IFFT(FFT(x)) == x? > > I'll run the above experiments anyway next time I'm at work :-) > --Shafik
The routines are 16-bit fractionals ranging from -1.0 to 0.999... My
normal voice input usually swings +0.3 to -0.3, which I figured was on
the same order of magnitude as 1.0.

Keep in mind the routines weren't written by me, theyre Motorola's.
Whether or not the imaginary parts were taken into account should be
their problem, not mine. But just to make sure I'll step through and
see if what FFT(x) gives me.

As much as I'd like to blaim Motorola, I cannot assume that their
simple FFT and IFFT routines arent functional. Can you think of
anything else that I might be doing wrong?
Thanks for your time btw :-)
--Shafik

"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095788064.185387.186660@k17g2000odb.googlegroups.com>...
> The routines are 16-bit fractionals ranging from -1.0 to 0.999... My > normal voice input usually swings +0.3 to -0.3, which I figured was on > the same order of magnitude as 1.0. > > Keep in mind the routines weren't written by me, theyre Motorola's. > Whether or not the imaginary parts were taken into account should be > their problem, not mine. But just to make sure I'll step through and > see if what FFT(x) gives me. > > As much as I'd like to blaim Motorola, I cannot assume that their > simple FFT and IFFT routines arent functional. Can you think of > anything else that I might be doing wrong? > Thanks for your time btw :-) > --Shafik
What I have suggested will help rule out (if appropriate) the routines or your use of them as a problem so you can focus your examination where it might be productive. Why assume? Why guess? Dirk Bell
I ran the FFT routine on the data packet above, and it yielded expected
results: a single real spike at one of the frequencies, with no
imaginary parts.

Packet used was {1,0,-1,0,1,0,-1,0}

--Shafik

If you are not using a real FFT with packed output I would expect 2
real spikes. How big were the spikes and the input.  Are the zeroes
exactly zero? If not, what are they? You need to provide the detailed
answers to the questions in this and the previous posts or I can't
help.

Last chance,

Dirk Bell

"Shafik" <shafik@u.arizona.edu> wrote in message news:<1095890215.159251.48010@k26g2000oda.googlegroups.com>...
> I ran the FFT routine on the data packet above, and it yielded expected > results: a single real spike at one of the frequencies, with no > imaginary parts. > > Packet used was {1,0,-1,0,1,0,-1,0} > > --Shafik
I am in fact using a real FFT with packed output, so I do infact
expect only one spike. The output was the following:

[0,0,0,0, 0.5,0,0,0].  (Correct within scaling)

Motorola's documentation says the output is in the following format:
z[0], z[n/2], z[1], z[2], etc...

The zeros were 0.0's

--Shafik