%Reconocimiento de Vocales seg = 2; frec = 10000; tam = frec*seg; recObj = audiorecorder (frec, 16, 1); %8000Hz, 16 bits, canal 1 disp('grabando audio...')%mensaje de aviso de grabación recordblocking(recObj,seg);%duración de la funcion de grabación Y = getaudiodata(recObj);%audio en bruto figure(1) plot(Y);%gráfica del audio de entrada sound(Y,frec); disp('Reproduciendo audio...') %reducimos la amplitud de ruidos ajenos al principal con la ventana hamming %aplicada a cada punto de la señal (proximamente sólo de silencio a silencio) reduced = Y.*hamming(tam); %hacemos transf fourier ft_f=fftshift(fft(reduced)); nfft = tam; %tamaño de la señal en dominio del tiempo nfft2 = 2^nextpow2(nfft); % tamaño de la señal en potencia de 2 ff = fft(reduced,nfft2);%para limitar a valores positivos la respuesta en frecuencia fff=ff(1:nfft2/2); xfft=frec*(0:nfft2/2-1)/nfft2; %se necesita que las muestras en x sean igual a muestras en y %lpc (predicción lineal) para la respuesta en frecuencias preemph = [1 0.63]; x1 = filter(1,preemph,reduced); A = lpc(x1,12); rts = roots(A); rts = rts(imag(rts)>=0); angz = atan2(imag(rts),real(rts)); [frqs,indices] = sort(angz.*(frec/(2*pi))); bw = -1/2*(frec/(2*pi))*log(abs(rts(indices))); nn = 1; for kk = 1:length(frqs) if (frqs(kk) > 90 && bw(kk)
@@adrianespada4957 no es online, sin embargo debería funcionar para cualquier versión incluyendo la online, el único problema es que necesitas poder habilitar el permiso para el uso del micrófono en la página que estés usando
Juega con los valores que indico que se pueden manejar durante el video, fijate en dónde caen los puntos de tus propias vocales, haz un promedio y reemplaza esas nuevas coordenadas en tu código! 😊
@@adrianespada4957 podrías realizar una función que detecte el rango de frecuencias de la voz entrante para luego compararlas con dos promedios, uno de voz masculina y otro de femenina, según al que más se acerque enviar a una función con valores para voz masculina o para voz femenina
%Reconocimiento de Vocales
seg = 2;
frec = 10000;
tam = frec*seg;
recObj = audiorecorder (frec, 16, 1); %8000Hz, 16 bits, canal 1
disp('grabando audio...')%mensaje de aviso de grabación
recordblocking(recObj,seg);%duración de la funcion de grabación
Y = getaudiodata(recObj);%audio en bruto
figure(1)
plot(Y);%gráfica del audio de entrada
sound(Y,frec);
disp('Reproduciendo audio...')
%reducimos la amplitud de ruidos ajenos al principal con la ventana hamming
%aplicada a cada punto de la señal (proximamente sólo de silencio a silencio)
reduced = Y.*hamming(tam);
%hacemos transf fourier
ft_f=fftshift(fft(reduced));
nfft = tam; %tamaño de la señal en dominio del tiempo
nfft2 = 2^nextpow2(nfft); % tamaño de la señal en potencia de 2
ff = fft(reduced,nfft2);%para limitar a valores positivos la respuesta en frecuencia
fff=ff(1:nfft2/2);
xfft=frec*(0:nfft2/2-1)/nfft2; %se necesita que las muestras en x sean igual a muestras en y
%lpc (predicción lineal) para la respuesta en frecuencias
preemph = [1 0.63]; x1 = filter(1,preemph,reduced);
A = lpc(x1,12); rts = roots(A);
rts = rts(imag(rts)>=0);
angz = atan2(imag(rts),real(rts));
[frqs,indices] = sort(angz.*(frec/(2*pi)));
bw = -1/2*(frec/(2*pi))*log(abs(rts(indices)));
nn = 1;
for kk = 1:length(frqs)
if (frqs(kk) > 90 && bw(kk)
Buena crack :v
Excelente 👌
Gracias por compartir 😊
Like si estas aqui por DSP :v
Buen video, y para reconocer palabras cómo sería ? te agradecería bastante. Gracias
como podria hacer para que detecte todas las vocales en una oracion y las coloque en orden
:C es que llevo semanas intentandolo
Quisiera hacer un reconocedor de vocales y vos femenino y masculino, y que la detección sea online, como debería hacer?
Hola, una pregunta, no se deberia de segmentar la señal para asegurar cuasiperiodisidad??? Generalmente en las señales de voz se hace eso.
estuve trabajando sobre matlab on line y he tenido problemas para que se ejecute el programa, ¿debe estar instalado?
Si, por que necesitas permiso de usar el micrófono y el online no pide esos perisos.
@@franciscodanielsalayandias4207 entonces este código es online? y si no lo fuera, como podría hacer para que lo fuese?
@@adrianespada4957 no es online, sin embargo debería funcionar para cualquier versión incluyendo la online, el único problema es que necesitas poder habilitar el permiso para el uso del micrófono en la página que estés usando
sabras porque solo me reconoce dos vocales?
Juega con los valores que indico que se pueden manejar durante el video, fijate en dónde caen los puntos de tus propias vocales, haz un promedio y reemplaza esas nuevas coordenadas en tu código! 😊
Este código viene con coordenadas típicas de varón, siempre varía
@@raymohn6454 y cómo seria hacer para que reconociera la voz masculina y la femenina?
@@adrianespada4957 podrías realizar una función que detecte el rango de frecuencias de la voz entrante para luego compararlas con dos promedios, uno de voz masculina y otro de femenina, según al que más se acerque enviar a una función con valores para voz masculina o para voz femenina