Está en la página 1de 15

DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA

CARRERA DE:
INGENIERÍA ELECTRÓNICA EN AUTOMATIZACIÓN Y CONTROL

PROCESAMIENTO DIGITAL DE SEÑALES

REPORTE N°2

Síntesis de señales de voz (vocales) y Sistema LTI “Moving Average”

TUTOR: ING. RUBEN DARIO LEON VASQUEZ

INTEGRANTES: CISNEROS HUGO


CORO RENNY

FECHA: 2019-04-17
QUITO-ECUADOR
Índice
1. Objetivos.............................................................................................................................2
2. Objetivos específicos...........................................................................................................3
3. Procedimiento.....................................................................................................................3
3.1. Síntesis de señales de voz (vocales)............................................................................3
3.2. Sistema LTI “Moving Average”..............................................................................11
4. Análisis de resultados.......................................................................................................13
5. Conclusiones.....................................................................................................................14
6. Recomendaciones.............................................................................................................14
7.1. Síntesis de señales de voz (vocales)..........................................................................15

2
1. Objetivos

 Estudiar los sonidos vocálicos y no vocálicos mediante el análisis de su


espectro de una señal de audio en MATLAB para establecer las
características que constituyen.
 Analizar el funcionamiento del “Moving Average” en una señal de
entrada con ruido.

2. Objetivos específicos
 Obtener el espectro de una señal de audio empleando herramientas y
comandos de MATLAB.
 Realizar el histograma de la señal completa, de una vocal y una
consonante.
 Extraer información de la señal de audio original para formar una señal
que permita escuchar las vocales.
 Graficar la señal de entrada y la señal después de haberla filtrado
mediante el Moving Average.
3. Procedimiento
3.1. Síntesis de señales de voz (vocales)
Para poder leer una señal de audio en MATLAB se utilizó el comando
“audioread”, el cual al proporcionar una señal de audio en formato .wav esta nos
devuelve una matriz que contiene la información de la señal y la frecuencia de
muestreo de dicha señal.

FIGURA 1. LECTURA DE LA SEÑAL DE AUDIO


Para poder obtener el espectro de la señal de audio ingresada, se empleó el
comando “plot” en el cual se envió como parámetro el vector que contiene la
información de la señal de audio “y”. Para graficar la señal el comando “plot”
forma internamente un vector del mismo tamaño que el vector “y” para los
puntos en el eje x, tomando así el vector “y” como puntos del eje y.

3
FIGURA 2. ESPECTRO DE LA SEÑAL DE AUDIO INGRESADA
Para facilitar el análisis de la señal de audio se procedió a formar un nuevo
vector, el cual contiene la información más importante de la señal original. Se
creó el vector “Senal” el cual contiene los datos del vector “y” desde la posición
6255 hasta la posición 15550, para obtener este rango se empleó de cursor de
datos, y de igual manera de la señal original se procedió a graficar su espectro.

FIGURA 3. CÓDIGO PARA ACOTAR LA SEÑAL PURA

FIGURA 4. ESPECTRO DE LA SEÑAL PURA ACOTADA

Empleando el comando “histogram” de MATLAB se graficó el histograma de la


señal de audio, los parámetros enviados al comando son la señal a representar y
el número de bits.

4
FIGURA 5. CÓDIGO PARA OBTENER EL HISTOGRAMA DE LA SEÑAL

FIGURA 6. HISTOGRAMA DE LA SEÑAL EMPELANDO 20 BITS

Para poder graficar el histograma de la vocal y la consonante, se emplea el


cursor de datos en la señal de audio para establecer el rango de posiciones en los
cuales el vector “senal” tiene información de una vocal y una consonante. Para la
señal de una vocal se extrajo la información del vector “senal” entre las
posiciones 283 y 655, y para la señal de la constante el rango de 1083 hasta
1409.

FIGURA 7. OBTENCIÓN DE MUESTRA DE UNA VOCAL Y UNA CONSONANTE

FIGURA 8. HISTOGRAMA DE UNA VOCAL

5
FIGURA 9. HISTOGRAMA DE UNA CONSONANTE
El audio analizado tiene en su señal las cinco vocales, utilizando el cursor de
datos en la señal de audio se obtuvo los rangos en los cuales se encuentran las
vocales. Después de extraer esta información del vector “senal” se procedió a
obtener la gráfica del espectro y el histograma de cada una de las vocales en el
audio.
 Vocal A: 5849 - 6668
 Vocal E: 288 - 656
 Vocal I: 2755 - 3131
 Vocal O: 7488 - 8562
 Vocal U: 4251 - 5039

FIGURA 10. CÓDIGO PARA EL OBTENER EL HISTOGRAMA DE LA VOCAL A, E Y I

6
FIGURA 11. CÓDIGO PARA EL OBTENER EL HISTOGRAMA DE LA VOCAL O Y U

FIGURA 12. HISTOGRAMA DE LA VOCAL A

FIGURA 13. HISTOGRAMA DE LA VOCAL E

7
FIGURA 14. HISTOGRAMA DE LA VOCAL I

FIGURA 15. HISTOGRAMA DE LA VOCAL O

FIGURA 16. HISTOGRAMA DE LA VOCAL U

Para poder generar la señal de audio de las vocales, se procedió a obtener un


fitch de cada una de las vocales de la señal de audio original, estos fitch fueron
tomados de las siguientes posiciones del vector “senal”:
8
Letra Posiciones
A 6153:6256
E 377:468
I 2935:3027
O 8064:8160
U 4441:4538

FIGURA 17. CÓDIGO PARA OBTENER EL FITCH DE CADA VOCAL


De las gráficas del espectro de las vocales realizado anteriormente, utilizando el
cursor de datos se midió el valor más alto de las señales vocálicas, el valor más
grande la amplitud de cada una de las vocales es:
Letra Amplitud
máxima
A 0.5656
E 0.4053
I 0.2711
O 0.5241
U 0.4487
Después de haber obtenido la amplitud máxima de cada una de las vocales, se
procedió a realizar la normalización de cada uno de los fitch de las vocales. El
proceso de normalización de audio es la aplicación de una cantidad constante de
ganancia a una grabación de audio para llevar la amplitud de pico a un nivel
normal.

FIGURA 18. CÓDIGO PARA NORMALIZAR LAS VOCALES


El objetivo de escuchar el sonido de las vocales, es tratar que cada sonido de la
vocal dure aproximadamente un segundo, para saber cuántas veces se debe
concatenar el fitch de cada vocal, se realizó el siguiente cálculo, estimando que
el número de muestras por fitch es aproximadamente 80.
Fs=11025 Hz
1
Ts=
11025
Ts=90.7uS

9
El periodo por fitch va ser igual a:
Tm=Ts∗¿ Muestras

Tm=90.7 x 10−6∗80
Tm=7.26 mS

El número de fitch por segundo es igual a:


1000 mS
¿ fitch=
7.26 mS
¿ fitch ≈ 137
Para concatenar las 137 veces de cada uno de los fitch de las vocales, se utilizó
un ciclo “for” de tal manera que permita ingresar en un solo vector 137 veces el
fitch de cada una de las vocales.

FIGURA 19. CÓDIGO PARA CONCATENAR EL SONIDO AEIOU


Los vectores A, E, I, O y U contienen la señales de cada una de las vocales
respectivamente, con duración de un segundo, para poder obtener la señal del
sonido AEIOU se concateno en un solo vector la señal de cada una de las
vocales obtenidas anteriormente. Y finalmente para poder escuchar el audio se
utilizó el comando “sound” de MATLAB enviando como parámetros el vector
de la señal AEIOU y la frecuencia de muestreo obtenida inicialmente.

FIGURA 20. CÓDIGO PARA ESCUCHAR EL AUDIO

3.2. Sistema LTI “Moving Average”


El primer paso para poder analizar una señal y poder pasarle por un Moving
Average es ingresar la señal de tipo:

10
x ( t )=sin ( 2 πft )+ N (t)
Evidentemente, se trata de una señal sinusoidal y la frecuencia va a ser de
500Hz.
En donde N(t) es el ruido de la señal entrante.
La Frecuencia de muestreo para este laboratorio es:
F S=32000 ( Hz)
1
T S= ( s)
32000
El siguiente paso es convertir a la señal en una señal discreta con un
determinado número de muestras para lo cual se utiliza:
t=n∗T s

Donde n es igual al número de muestras y es igual a:


n=500
Entonces, la señal que va a ingresar al sistema es:
x=sin ⁡(2 π∗500∗n∗T s )

FIGURA 21. SEÑAL QUE ENTRA AL SISTEMA.


Luego, a esta señal se le introduce ruido mediante el comando “randn”.

ruido=0.25∗randn (1 ,501)

FIGURA 22. RUIDO QUE VA A ENTRAR AL SISTEMA.

A continuación, se procedió a sumar la señal de entrada sinusoidal con el ruido


que es lo que en la realidad se tiene.
se ñalTotal=x+ ruido

11
FIGURA 23. SEÑAL SINUSOIDAL CON RUIDO.

Finalmente, se realiza el objetivo principal de la práctica que fue introducir a dicha


señal en un “Moving Average” con el comando de Matlab “movavg”.
Este comando tiene 4 parámetros importantes:
 Señal de entrada, en este caso “señalTotal”.
 Tipo de señal.
 Número de ventas, N=30.
 Parámetro final, Pf=0.
Al pasar por la función “movavg” de Matlab la señal resulta de la siguiente manera:

FIGURA 24. SEÑAL DESPUÉS DEL MOVING AVERAGE.

4. Análisis de resultados
El proceso de digitalización de señales mediante MATLAB permite analizar de
forma más adecuada el espectro de una señal analógica de audio, de tal manera
que permite hacer más visible las características de los sonidos vocálicos y no
vocálicos.
Al observar el histograma de cada una de las vocales y consonante se puede
determinar que la distribución más ajustable al histograma es una distribución
gaussiana. Al platear cada una se las señales de las vocales se puede observar
que su forma de onda es cuasiperiodica y es única para cada vocal.
Por otro lado, MATLAB permite manipular la información de una señal
digitalizada, es así que se obtuvo la señal de audio AEIOU, la cual al momento
de reproducirla y hacer variar la frecuencia de muestreo, se puede escuchar más
aguda o grave.
El Moving Average resulta ser un filtro pasa bajos. Al introducir una señal con
ruido se espera que tenga variedad en su forma y amplitud por lo cual al
aplicarle un Moving Average corrige en cierta manera este aspecto y es muy útil
para limpiar señales que se pueden encontrar en la realidad.

12
FIGURA 25. MOVING AVERAGE.

5. Conclusiones
 Mediante el sistema de cómputo numérico MATLAB se obtuvo el
espectro de la señal de audio ESTIMULADOR grabado en formato wav
compatible con MATLAB. Empleando el comando “plot” se obtuvo las
gráficas del espectro de la señal ingresada.
 Empleando el cursor de datos en la gráfica de la señal original se obtuvo
las posiciones en las cuales se obtienen información de las vocales y una
consonante. Una vez obtenida esta información se empleó el comando
histogram de MATLAB con el cual se obtuvo el respectivo histograma
para cada una de las vocales y una consonante.
 Para formar la señal de audio AEIOU se realizó el proceso de extracción
de los fitch de información de cada una de las vocales de la señal
original, después de realizar la normalización de cada uno de los fitch se
concateno 137 veces de tal manera que nos asegure que la señal dure un
segundo para cada una de la vocales. Finalmente con el comando sound
se escuchó el audio y al hacer variar la frecuencia de muestreo la señal se
audio se escucha más aguda o más fuerte.
 El Moving Average funciona como un filtro pasabajos de cualquier señal
entrante y resulta ser muy útil para limpiar señales que se podrían
encontrar en la realidad.

6. Recomendaciones
 Utilizar señales de audio en formato .wav para evitar error de
compatibilidad con MATLAB.
 Utilizar el comando movavg de Matlab para simplificar el algoritmo.

7. Códigos

13
7.1. Síntesis de señales de voz (vocales)
clear all
close all
[y,Fs]=audioread('D:\ESCRITORIO\RENNY\5.Quinto
Semestre\PDS\Comandos Digitalizados/estimulador.wav');
plot(y)
title('Espectro de Audio')
figure
senal=y(6255:15550,1);
plot(senal)
title('Espectro de la señal pura')
figure
histogram(senal,20)
title('Histograma de la señal completa')
figure
vocal=senal(283:655);
histogram(vocal,20);
title('Histograma de una vocal')
figure
consonante=senal(1083:1409);
histogram(consonante,20)
title('Histograma de una consonante')
%Histogramas de las vocales de la señal
figure
subplot(2,1,1)
plot(senal(5849:6668,1))
title('Espectro de la señal A')
subplot(2,1,2)
histogram(senal(5849:6668,1),20)
title('Histograma de la vocal A')
figure
subplot(2,1,1)
plot(senal(288:656,1))
title('Espectro de la señal E')
subplot(2,1,2)
histogram(senal(288:656,1),20)
title('Histograma de la vocal E')
figure
subplot(2,1,1)
plot(senal(2785:3131,1))
title('Espectro de la señal I')
subplot(2,1,2)
histogram(senal(2785:3131,1),20)
title('Histograma de la vocal I')
figure
subplot(2,1,1)
plot(senal(7488:8562,1))
title('Espectro de la señal O')
subplot(2,1,2)
histogram(senal(7488:8562,1),20)
title('Histograma de la vocal O')
figure
subplot(2,1,1)
plot(senal(4251:5039,1))
title('Espectro de la señal U')
subplot(2,1,2)
histogram(senal(4251:5039,1),20)
title('Histograma de la vocal U')
%Fitch de las vocales
fitchA=senal(6153:6256,1);

14
fitchE=senal(377:468,1);
fitchI=senal(2935:3027,1);
fitchO=senal(8064:8160,1);
fitchU=senal(4441:4538,1);
%normalizando
NA=fitchA/0.5656;
NE=fitchE/0.4053;
NI=fitchI/0.2711;
NO=fitchO/0.5241;
NU=fitchU/0.4487;
% formando
A=NA';
E=NE';
I=NI';
O=NO';
U=NU';
for i=1:136
A=[A NA'];
E=[E NE'];
I=[I NI'];
O=[O NO'];
U=[U NU'];
end
AEIOU=[A E I O U];
AEIOU=AEIOU';
sound(AEIOU,Fs)

7.2. Sistema LTI “Moving Average”


clear all
close all
clc
for(i=1:501)
x(i)=sin((2*pi*500*i)/32000);
y(i)=i;
end
ruido=0.25*randn(1,501);
subplot(4,1,1)
plot(x)
subplot(4,1,2)
plot(ruido)
subplot(4,1,3)
senalTotal=x+ruido;
plot(senalTotal)
subplot(4,1,4)
salida=movavg(senalTotal,30,30,0);
plot(salida)

15

También podría gustarte