function final = magmaster(sig1,sig2) % final = magmaster(sig1,sig2) % % magmaster - takes two signals and returns the dot product of the % magnitudes of the two signals after the signals are cut and time-warped. % % ELEC 301 Project - "Mars Lander the Theologian", aka, "Speaker Verification" % Sara MacAlpine, Aamir Virani, Nipul Bharani, JP Slavinsky % WRC (OCEE) Class of 2001 - Fall '99 %global variables samprate = 10000; N = 100; step = 100; %find out where to cut the two signals. [mag1,pts1] = locatespeech(sig1,N,step,samprate); sig1cut = (sig1(pts1(1):pts1(2))); [mag2,pts2] = locatespeech(sig2,N,step,samprate); sig2cut = (sig2(pts2(1):pts2(2))); %The average magnitude function on the cut signals gets a cleaner %average magnitude for the two signals as opposed to cutting the magnitude %of the whole signal at the determined endpoints. mag1 = avgmag(sig1cut,N,step); mag2 = avgmag(sig2cut,N,step); %Discrete time warping one signal to the other in order to let the peaks %match up. The time warp is performed both ways (matching sig1 to sig2 and %vice versa. The output will be the best match of the two signals. %Let sig1 be the key and sig2 will be time-warped to sig1. path1 = dtw4(mag1,mag2); num = dot(mag1,mag2(path1)); den = (norm(mag1))*(norm(mag2(path1))); final1 = num/den; %Let sig2 be the key and sig1 will be time-warped to sig2. path2 = dtw4(mag2,mag1); num = dot(mag1(path2),mag2); den = (norm(mag1(path2)))*(norm(mag2)); final2 = num/den; if final1 > final2 final = final1; else final = final2; end