synthesis using stft

  • Follow


My doubt pertains to synthesis using stft for a speech signal.  I am not
able to generate the exact time domain speech signal when I go by Overlap
add method.  This is what I have done :
I have taken short frames , windowed it with a hamming window, taken the
dft of these windows and formed a stft matrix

In synthesis, I have taken this stft matrix , used the ifft function to
take the inverse fourier transform of each frame, added the resulting
inverse frames.  Thereby, getting a vector (of length greater than the
original time domain signal) .  When I have played back this vector(signal)
I can hear the speech signal , but it is quite distorted.  

Can anyone please tell me where I am committing a mistake.  Does synthesis
using STFT reconstruct the original signal exactly.  

Regards,
Chandan


0
Reply chandansingh 10/22/2010 2:36:09 PM

On Oct 22, 10:36=A0am, "chandansingh"
<chandanbtech@n_o_s_p_a_m.gmail.com> wrote:
> My doubt pertains to synthesis using stft for a speech signal. =A0I am no=
t
> able to generate the exact time domain speech signal when I go by Overlap
> add method. =A0This is what I have done :
> I have taken short frames , windowed it with a hamming window, taken the
> dft of these windows and formed a stft matrix
>
> In synthesis, I have taken this stft matrix , used the ifft function to
> take the inverse fourier transform of each frame, added the resulting
> inverse frames. =A0Thereby, getting a vector (of length greater than the
> original time domain signal) . =A0When I have played back this vector(sig=
nal)
> I can hear the speech signal , but it is quite distorted. =A0
>

are you overlap-adding the result of each ifft?

first thing, until you really know what you are doing, use
complementary window like the Hann window.  the falling slope and
rising slope of a complementary window will add to 1.  the
complementary window length should be exactly twice the displacement
between adjacent frames.  the Hamming window adds to 1.08, which is
*sorta* complementary, but you don't want to use it to start with.

also, are you doing this in MATLAB or Octave or something like that?
can you be more explicit in how you are windowing each frame and
reconstructing the output?

r b-j


0
Reply robert 10/23/2010 6:09:40 AM


>
>are you overlap-adding the result of each ifft?
>
>first thing, until you really know what you are doing, use
>complementary window like the Hann window.  the falling slope and
>rising slope of a complementary window will add to 1.  the
>complementary window length should be exactly twice the displacement
>between adjacent frames.  the Hamming window adds to 1.08, which is
>*sorta* complementary, but you don't want to use it to start with.
>
>also, are you doing this in MATLAB or Octave or something like that?
>can you be more explicit in how you are windowing each frame and
>reconstructing the output?
>
>r b-j
>
>Thanks for the reply Mr. r b-j.I am doing it in matlab.  Mr. r b-j ,
whatever you have said is right.  I did not check up whether the hamming
window adds up to 1.  Later, I rectified it and have got good results.  As
the hamming window does not add up to 1, it causes fluctuations when we try
to reconstruct it .. 

Chandan


Chandan.
>
0
Reply chandansingh 10/30/2010 2:40:02 PM

2 Replies
209 Views

(page loaded in 0.082 seconds)


Reply: