Está en la página 1de 3

GONZÁLEZ RODRÍGUEZ PABLO VINICIO diciembre 01 de 2010

Práctica 0

Objetivo: Detectar la frecuencia fundamental de la voz (pitch) en el dominio del


tiempo.

Desarrollo

Se hizo una grabación de 2 segundos de duración con la palabra Hola muestreada a 8


[kHz] en un solo canal.

Fs=8000;%Es la frecuencia de muestreo de la prueba


y=wavrecord(2*Fs,Fs,1,'double');

Donde el parámetro double indica que el muestreo se haga a 16 bits con valores de
-1 a 1.

Una vez que se obtiene la grabación, viendo la gráfica en el tiempo observamos que
para cumplir el objetivo es necesario discriminar la muestra a un fragmento donde
se escuche una vocal, por esa razón se crea un nuevo vector con la la vocal O y
sobre ella se continua el experimento.

Después de ello se realiza la operación de autocorrelación a la muestra, con 320


submuestras, de tal forma que la frecuencia mas álta posible de detectar. Esto
producirá la ventana de 40 ms que requerimos para observar el resultado.
GONZÁLEZ RODRÍGUEZ PABLO VINICIO diciembre 01 de 2010
Práctica 0

Finalmente, la frecuencia fundamental de la voz analizada será posible de encontrar


determinando la el retardo entre máximos, e.g. Entre el máximo en 0 [s] y el
consecutivo a la derecha que se encuentra a 0.004625 [s]. De este modo sabemos que
la diferencia es 0.004625, tiempo al que obteniendo el inverso nos proporciona la
1
frecuencia fundamental, en este caso =216.216≈216[ Hz ]
0.004625

Adicionalmente, extediendo el estudio a muestras de voz grave y aguda se obtienen


los siguientes resultados.

Voz Aguda

1
=615.38≈615 [Hz ]
0.001625

1
=102.56≈102.6 [ Hz]
0.00975
GONZÁLEZ RODRÍGUEZ PABLO VINICIO diciembre 01 de 2010
Práctica 0

Código Fuente

Fs=8000;%Es la frecuencia de muestreo de la prueba


y=wavrecord(2*Fs,Fs,1,'double');
wavplay(y,Fs);
plot(y);
legend('Forma de onda');
xlabel('Tiempo [s]');
ylabel('Amplitud');
x=y(3586:6949);
t=[0:length(x)-1]/Fs;%Un vector t que indica las posiciones en tiempo
subplot(2,1,1);
plot(t,x);
legend('Forma de onda');
xlabel('Tiempo [s]');
ylabel('Amplitud');
ms=320;
c=xcorr(x,ms,'coeff');%Funcion de autocorrelacion de la muestra y
ret=(-ms:ms)/Fs; %Tiempos de retardo
subplot(2,1,2);
plot(ret,c);
legend('Autocorrelacion');
xlabel('Retardo [s]');
ylabel('Coeficiente de Correlacion');

También podría gustarte