alice@0: function [frameDelayVec]=gccPHATFunc_win(x,frameSize,hopSize,windowShape) alice@0: % calculate the GCC-PHAT delay estimation on frames of data alice@0: % alice@0: % Input: alice@0: % - x: stereo audio file. x(:,2) is delayed alice@0: % - frameSize: size of frames (samples) alice@0: % - hopSize: overlap between frames (samples) alice@0: % - windowShape: string passed to window() alice@0: % alice@0: % Output: alice@0: % - frameDelayVec: array of delay estimation for each frame alice@0: % alice@0: % Developers: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk) alice@0: alice@0: [xMat,numFrames]=createMat(x,frameSize,hopSize); alice@0: alice@0: w=repmat(window(windowShape,frameSize),[1 2 numFrames]); alice@0: alice@0: X=fft(xMat.*w); %FFT of each frame with window applied alice@0: alice@0: for n=1:numFrames alice@0: alice@0: %GCC-PHAT alice@0: Sxs=X(:,2,n).*conj(X(:,1,n)); alice@0: alice@0: S=Sxs./abs(Sxs); alice@0: alice@0: s=ifft(S); alice@0: alice@0: [dummy,frameDelay]=max(s(1:frameSize/2)); %assume delay in first frameSize/2 samples alice@0: alice@0: frameDelayVec(n)=frameDelay-1; %compensate for index starting at 1 alice@0: alice@0: alice@0: end