inteligencia artificial

Un espacio para compartir y discutir sobre: IA, software libre y redes sociales que implementan TIC

Wednesday, November 29, 2006

ejemplo reconocimiento sonoro //Scilab "voz.sci"

function s = voz()
s = wavread(tk_getfile());

function x = xfft(s,M,d)
L = size(s,'c')
H = (.54-.46*cos(2*%pi*(0:M-1)/(M-1)))/1.82
//H = ((1:M)-(M+1)/2)/M*5; H = exp(-H.^2)
x = zeros(M,floor((L-M)/d)+1)
for i=1:size(x,'c')
//x(:,i) = log(abs(fft(s((1:M)+i*d-d).*H,-1)))'
x(:,i) = (abs(fft(s((1:M)+i*d-d).*H,-1)).^2)'
end

function mplt(m,v)
[lhs,rhs] = argn(0)
if rhs < 2 then v = [0 1]; end
[f,c] = size(m)
m = m - min(m)
m = floor(m/max(m)*31.9999)
m = m + 33
oldmap = xget("colormap")
if size(oldmap,'r')==32
cmap = graycolormap(32); cmap = cmap($:-1:1,:)
//cmap = hotcolormap(32)
xset("colormap",[oldmap;cmap])
end
//if c+1==600 then d1=3; d2=11; else d1=9; d2=ceil((c+1)/600)+1; end
//plot2d(0,0,rect=[0 0 c+1 1],nax=[d1 d2 0 1])
plot2d(0,0,rect=[0 v(1) c v(2)],axesflag=2)
Matplot1(m($:-1:1,:),[0.5 v(1) c+.5 v(2)])

function pruebaVoz()
s = voz()
x = xfft(s,512,225)
x = x(1:255,:)
mplt(log(x))
[s,x] = return(s,x)


//Prueba interfaz
-->getf voz.sci
-->pruebaVoz
-->xfft(s,1000,500);
-->mplt(log(x))
-->getf RedNeuronal.sci
-->sum(x,"r")
-->plot(sum(x,'r'))
-->e=sum(x,'r')
-->find(sum(x,'r')>2)
--> y=x(:,find(sum(x,'r')>2));
-->mplt(y)
-->mplt(log(y))
-->plot(log(y(:,5)))
-->plot(log(y(:,16)))
-->subplot(2,1,1);mplt(log(y))
-->subplot(2,1,1);plot(log(y(:,16)))
-->c=[];for v=log(y);c=[c,real(fft(v',-1))'];end
//comentarios: genera cepstrum, primer componente la energia, desde 2 es el timbre, los altos es el tono. (para graficar mostrar del 2 en adelante, esto es://
-->mplt(c(2:250,:))
//para la energia
-->plot(c(1,:))

1 Comments:

At 9:54 AM, Blogger Luis Augusto Zuñe Bispo said...

Puedes explicar como funciona

 

Post a Comment

<< Home