You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, when applying this function, we found that the recovery result has some improvement compared to the clean speech.(i.e. v_enframe ->fft ->ifft -> v_overlapadd ,hamming,256 point,64 inc). And there is a line in the program :
(z(repmat(1:nf,nr,1)+repmat((0:nr-1)'*inc+rem((0:nr-1)',nb)*no,1,nf))=f.*repmat(w,nr,1);)
why we should f.*repmat(w,nr,1) ?
I look forward to your reply. Thank you.
The text was updated successfully, but these errors were encountered:
(1) The expression f.*repmat(w,nr,1) multiplies each frame (i.e. each row of f) by the window w.
(2) The sequence v_enframe ->fft ->ifft -> v_overlapadd should have no effect on the samples except for the (n-inc) samples at both ends. However it is important to use the 'periodic' option of hamming() and also to normalize the window (see the code below). I hope this helps. Mike
inc=64;
nf=4inc;
s=randn(4nf,1); % create a random signal
w=hamming(nf,'periodic'); % Hamming window with period nf
w=w/sqrt(sum(w(1:inc:nf).^2)); % normalize window
f=fft(v_enframe(s,w,inc),nf,2); % do STFT: one row per time frame
x=v_overlapadd(ifft(f,nf,2),w,inc); % reconstitute the time waveform
e=x-s; % calculate reconstruction error
max(abs(e(1+nf-inc:end-nf+inc))) % error is zero except at ends
Hello, when applying this function, we found that the recovery result has some improvement compared to the clean speech.(i.e. v_enframe ->fft ->ifft -> v_overlapadd ,hamming,256 point,64 inc). And there is a line in the program :
(z(repmat(1:nf,nr,1)+repmat((0:nr-1)'*inc+rem((0:nr-1)',nb)*no,1,nf))=f.*repmat(w,nr,1);)
why we should f.*repmat(w,nr,1) ?
I look forward to your reply. Thank you.
The text was updated successfully, but these errors were encountered: