DSPRelated.com
Forums

Is FFT Overlap-add needed here?

Started by Shafik November 3, 2004
Hello DSP community,

Im attempting a band-splitter voice scrambler based on the FFT.

I collect 64 samples of voice, take the FFT, shuffle the magnitudes of
the frequency bins (i keep the phase intact), then take an inverse FFT
and send it out to the speaker. And the cycle repeats.

On the other side I do the inverse process. However Im getting a lot of
"digital" noise and I am unable to recover my audio properly. Is this
because Im not using the overlap-add method, or does that not matter? I
fear that I might be getting time-domain aliasing when I process the
data in the FFT domain.
Any help would be greatly appreciated.
--Shafik

Shafik wrote:

> Hello DSP community, > > Im attempting a band-splitter voice scrambler based on the FFT. > > I collect 64 samples of voice, take the FFT, shuffle the magnitudes of > the frequency bins (i keep the phase intact), then take an inverse FFT > and send it out to the speaker. And the cycle repeats. > > On the other side I do the inverse process. However Im getting a lot of > "digital" noise and I am unable to recover my audio properly. Is this > because Im not using the overlap-add method,
Yes
> or does that not matter? I > fear that I might be getting time-domain aliasing when I process the > data in the FFT domain.
Same thing. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
If you dont mind me asking:

How then, is the FFT used for filtering of images, where the FFT of an
image is taken, modified in the frequency domain, then converted back.
The same is done with time-domain signals as well.
Why is the issue of aliasing not considered then?

--Shafik

"Shafik" <shafik@u.arizona.edu> wrote in message
news:1099529183.380535.322790@z14g2000cwz.googlegroups.com...
> Hello DSP community, > > Im attempting a band-splitter voice scrambler based on the FFT. > > I collect 64 samples of voice, take the FFT, shuffle the magnitudes of > the frequency bins (i keep the phase intact), then take an inverse FFT > and send it out to the speaker. And the cycle repeats. > > On the other side I do the inverse process. However Im getting a lot of > "digital" noise and I am unable to recover my audio properly. Is this > because Im not using the overlap-add method, or does that not matter? I > fear that I might be getting time-domain aliasing when I process the > data in the FFT domain. > Any help would be greatly appreciated. > --Shafik >
Hi Shafik If your timing is exactly right and you have enough precision in your samples and in the arithmetic that you are doing then you should be o.k but only if the FFT periods in your receiver line up exactly with the boundaries that you established in the scrambler and the channel between is effectively noise-free,broadband and linear. Somehow I doubt that thats the case. Best of Luck - Mike
Shafik wrote:

> If you dont mind me asking: > > How then, is the FFT used for filtering of images, where the FFT of an > image is taken, modified in the frequency domain, then converted back. > The same is done with time-domain signals as well. > Why is the issue of aliasing not considered then? > > --Shafik
FFT filtering is indirect convolution. Without special attention of some sort, it does circular convolution. Linear convolution is needed. When the signal (image) is treated piecemeal without accounting for circularity, artifacts are generated. Images filtered using FFTs are usually treated as a whole, so artifacts appear only around the edges. They are different from the edge-effect artifacts from linear convolution, but in the same place. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
What you are doing implies the perfect synchronization between the FFT 
windows on both sides. That is not practical. Use the continious time 
filterbanks instead.

Vladimir Vassilevsky

DSP and Mixed Signal Design Consultant

http://www.abvolt.com


Shafik wrote:

> Hello DSP community, > > Im attempting a band-splitter voice scrambler based on the FFT. > > I collect 64 samples of voice, take the FFT, shuffle the magnitudes of > the frequency bins (i keep the phase intact), then take an inverse FFT > and send it out to the speaker. And the cycle repeats. > > On the other side I do the inverse process. However Im getting a lot of > "digital" noise and I am unable to recover my audio properly. Is this > because Im not using the overlap-add method, or does that not matter? I > fear that I might be getting time-domain aliasing when I process the > data in the FFT domain. > Any help would be greatly appreciated. > --Shafik >
Thanks for all the help, I used the OLA method and the noise was
reduced significantly. However, I still get a small "spike" on the
edges of the time frames. This ends up sounding like a constant
"buzzz". I cant figure out why that is happening.
Any ideas why?

--Shafik

"Shafik" <shafik@u.arizona.edu> wrote in message
news:1099733947.119860.302410@f14g2000cwb.googlegroups.com...
> Thanks for all the help, I used the OLA method and the noise was > reduced significantly. However, I still get a small "spike" on the > edges of the time frames. This ends up sounding like a constant > "buzzz". I cant figure out why that is happening. > Any ideas why? > > --Shafik >
No
It sounds like a bug in your code.  Have you checked to ensure that your 
buffers are being managed properly?

In article <1099733947.119860.302410@f14g2000cwb.googlegroups.com>, "Shafik" 
<shafik@u.arizona.edu> wrote:
>Thanks for all the help, I used the OLA method and the noise was >reduced significantly. However, I still get a small "spike" on the >edges of the time frames. This ends up sounding like a constant >"buzzz". I cant figure out why that is happening. >Any ideas why? > >--Shafik >