Professional Documents
Culture Documents
22-Febrero-2012
Introduccin.
En el procesamiento digital de seales puede ser mas til analizar solo una porcin de la seal de inters para poder obtener los parmetros mas importantes con una mayor validez. A su vez en el procesamiento digital de voz se hace esto mediante tramas sonoras, donde una trama tiene una duracin aproximada de 20-30ms en donde se dice que los parmetros mas importantes de la voz permanecen invariantes y por tanto se tiene una gran confiabilidad de los datos. Existen tambin otras formas de analizar simplemente un fragmento de la seal, y esto se hace mediante una funcin llamada ventana. Las cuales son funciones usadas frecuentemente en el procesamiento de seales, para evitar discontinuidades al principio y al final de los bloques analizados. Una ventana se utiliza cuando solo una porcin de la seal es de inters para el anlisis, y la longitud de la ventana ser preestablecida por aqul que vaya a hacer el anlisis de la seal. Una seal tiene que ser de tiempo finito; adems, un calculo solo es posible a partir de un numero finito de puntos. Y para poder observar una seal en un tiempo finito la multiplicamos por la funcin ventana. La utilizacin de una ventana cambia el espectro en frecuencia de la seal. Es importante saber que existen distintos tipos de ventanas, cada una para diseada para distinto tipos de requerimientos de la seal. En est prctica se har uso de las 2 ventanas mas importantes dentro del procesamiento digital de voz, y son: Ventana Rectangular y Ventana Hamming.
Objetivos.
- - -
Elaborar
un
algoritmo
para
obtener
una
ventana
rectangular
y
otro
para
una
ventana
tipo
hamming.
Hacer
el
anlisis
con
ambas
ventanas
para
una
seal
sinusoidal
y
para
un
sonido
vocalizado
(vocal).
Elaborar
un
cdigo
que
despliegue
un
men
donde
se
pueda
escoger
el
tipo
de
ventana
y
el
tipo
de
seal
a
analizar.
Desarrollo
y
Resultados.
El
anlisis
se
hizo
para
4
diferentes
caso,
de
los
cuales
se
obtuvieron
los
siguientes
resultados:
1er.
Caso
Ventana
Rectangular
con
Seal
Sinusoidal
Figura 3-1 Anlisis con la ventana rectangular para una seal sinusoidal.
Figura 3-2 Anlisis con la ventana rectangular para una seal de voz (Vocal a).
Figura 3-3 Anlisis con la ventana hamming para una seal Sinusoidal.
Figura 3-4 Anlisis con la ventana hamming para una seal de voz (Vocal a).
Conclusiones.
El
uso
de
ventanas
es
muy
importante
dentro
del
procesamiento
digital
de
voz,
ya
que
nos
ayuda
a
eliminar
muchas
componentes
indeseadas
como
el
ruido,
creo
que
esta
prctica
me
deja
mucho
aprendizaje
ya
que
el
uso
de
ventanas
es
algo
nuevo
para
mi.
A
pesar
de
que
existen
mas
tcnicas
para
poder
optimizar
las
seales,
el
uso
de
ventanas
creo
yo
que
es
una
de
las
mejores.
Se
tuvieron
problemitas
a
la
hora
de
centrar
el
espectro
de
frecuencias
para
que
se
pudiera
apreciar
de
una
forma
mas
clara
como
es
que
se
desempean
las
ventanas
en
frecuencia.
Finalmente,
es
importante
mencionar
que
aunque
no
hayamos
visto
mas
tipos
de
ventanas,
con
estas
dos
fue
suficiente
al
menos
para
entender
el
funcionamiento
de
las
ventanas
aplicada
a
una
seal
ya
sea
de
voz
o
sinusoidal.
Se
debe
mencionar
que
para
hacer
el
anlisis
con
seales
de
voz,
se
tomo
solamente
una
trama
sonora
de
20ms
para
obtener
un
confiabilidad
de
los
datos,
ya
que
como
sabemos
dentro
de
una
trama
sonora
los
parmetros
mas
importantes
de
la
voz
permanecen
constantes.
Anexos Programa en MatLab para la prctica de Ventanas.
%Ventanas Temporales %Elaborado por Victor Gonzalez N=160; Fs=8000; TT=0.020; NMT=Fs*TT; %Frecuencia de Muestreo %Tiempo de Trama %Numero de Muestras por Trama
tv=menu('Elige ventana','Rectangular','Hamming'); switch(tv) case 1, %Ventana Rectangular ventana=ones(1,NMT); case 2, %Ventana Hamming n=0:NMT-1; ventana=0.54-0.46*cos(2*pi*n/(NMT-1)); end %Tipo de Senal ts=menu('Tipo de Senal','Sinusoidal','Voz'); switch(ts) case 1, %Senal Sinusoidal f=400; t=0:1/Fs:(20e-3)-1/Fs; x=sin(2*pi*f*t); case 2, %Senal de Voz voz=wavread('C:\PDV\a'); %Utilizando una trama para optimizar el analisis x=voz(10000:10159); t=0:1/Fs:(159/8000); x=x';
end figure; subplot(3,2,1); plot(t,x); title('Seal de entrada (Sinusoidal/Voz)'); xlabel('Tiempo'); ylabel('Amplitud'); grid on subplot(3,2,3); stem(t(1:length(ventana)),ventana); title('Ventana(Rectangular/Hamming)'); xlabel('Tiempo'); ylabel('Amplitud'); grid on %Ponderacion en tiempo sp=x.*(ventana); subplot(3,2,5); plot(t,sp); title('Respuesta de la seal al aplicar la ventana'); xlabel('Tiempo'); ylabel('Amplitud'); grid on %Analisis en Frecuencia de la Senal es=abs(fft(x,512)); es=fftshift(es); frec=(Fs*(0:255)/512); %Analisis en frecuencia de la ventana ev=abs(fft(ventana,512)); ev=fftshift(ev); frec=(Fs*(0:255)/512); %frecaux=[-frec(length(frec):-1:2) frec ] %La frecaux comentada tambien es una forma de centrar el espectro de %frecuencia. frecaux=-4000:8000/511:4000; %Grafica del espectro de la senal subplot(3,2,2); plot(frecaux,es); title('Espectro de seal de entrada(Sinusoidal/Voz)'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud'); grid on %Grafica del espectro de la ventana subplot(3,2,4); plot(frecaux,ev);
title('Espectro de la ventana(Rectangular/Hamming)'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud'); grid on %Ponderacion de espectros sp=es.*(ev); subplot(3,2,6); plot(frecaux,sp); title('Respuesta de la seal al aplicar la ventana'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud'); grid on