Question: modify dtmfdecode.sce so that the program is able to correctly decode a telephone number from a wav file created by dtmfGen.sce: DTMFGEN.SCE: clear; Fs =
modify dtmfdecode.sce so that the program is able to correctly decode a telephone number from a wav file created by dtmfGen.sce:
DTMFGEN.SCE:
clear; Fs = 8e3; Ts = 1/Fs; t = 0:Ts:0.4; tones = [ 697, 1209; 697, 1336; 697, 1477; 770, 1209; 770, 1336; 770, 1477; 852, 1209; 852, 1336; 852, 1477; 941, 1209; 941, 1336; 941, 1477; ]; function x=dtmfTones(n, t) w1 = 2*%pi*tones(n,1); w2 = 2*%pi*tones(n,2); x = 0.5*(cos(w1*t)+sin(w2*t)); endfunction y = [zeros(1,round(0.05/Ts))]; phone = [5 4 5 1 9 11 7]; //11 corresponds to 0 for i=1:7 y = [y,dtmfTones(phone(i),t),zeros(1,round(0.05/Ts))]; end sound(y,Fs,16); wavwrite(y,Fs,16,'dtmfTones.wav'); //for i=1:9 // y = dtmfTones(i,t); // fname = msprintf('%1d.wav',i); // wavwrite(y,Fs,16,fname); //end //y = dtmfTones(11,t); wavwrite(y,Fs,16,'0.wav'); DTMFDECODE.SCE:
clear; [x,Fs,Nbits] = wavread('dtmfTones.wav'); sound(x,Fs,Nbits); x = x/max(abs(x)); Nx = length(x); fg = scf(0); clf(); F0 = [697,770,852,941,1209,1336,1477,1633]; nF = length(F0); N = 800; Xk = zeros(nF,Nx); for f=1:nF k = round(N*F0(f)/Fs); W = exp(%i*2*%pi*k/N); Xk(f,0+1) = x(0+1); for m=1:N-1 Xk(f,m+1) = W*(Xk(f,m)+x(m+1)); end for m=N:Nx-1 Xk(f,m+1) = W*(Xk(f,m)+x(m+1)-x(m-N+1)); end subplot(3,3,f); plot(abs(Xk(f,:))); end keyPress = zeros(1,Nx); key = keyPress; thresh = 100; for n=1:Nx lvl = 0; for f=1:nF if abs(Xk(f,n))>lvl lvl = abs(Xk(f,n)); end end if (lvl>thresh) keyPress(n) = 1; end end subplot(3,3,9); plot(keyPress); for n=1:Nx f1 = 0; f2 = 0; if keyPress(n) for f=1:nF lvl = 0; if abs(Xk(f,n))>lvl lvl = abs(Xk(f,n)); end if (lvl>thresh) if (f1==0) f1 = F0(f); else f2 = F0(f); end end end if (f1==F0(1)) key(n) = 1; elseif (f1==F0(2)) key(n) = 2; elseif (f1==F0(3)) key(n) = 3; else key(n) = 4; end key(n) = key(n)*10; if (f2==F0(5)) key(n) = key(n)+1; elseif (f2==F0(6)) key(n) = key(n)+2; else key(n) = key(n)+3; end end end n = 2; while (n Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
