Detector de voz

11

Click here to load reader

Transcript of Detector de voz

Page 1: Detector de voz

DETECTOR DE VOZ SIMPLE EN MATLAB

Mauricio Herrera Duran

C.C 1128453482

Jonny Uribe

Tratamiento de Señales III

Universidad de Antioquia

Ingeniería de Telecomunicaciones

Medellín

2012

Page 2: Detector de voz

Como funciona

La primera parte del código es básicamente la misma empleada para el vocoder, en la que se

lee una señal, se le quita el nivel DC y es graficada en el tiempo. La única diferencia es que para

garantizar una cantidad exacta de ventanas mas adelante, se aumento la señal hasta un

múltiplo entero de las ventanas con AWGN el cual no será interpretado como voz.

Luego mediante la transformada de Fourier se calcula la densidad espectral de energía de la

señal por cada ventana y al dividirla por el tiempo entre muestras se tiene la potencia de la

señal, luego se pasa a decibeles en donde se puede dar una clasificación de intensidad de

sonidos según esos decibeles.

Ahora que tenemos la energía, podemos contar los cruces por cero que tiene una señal en una

ventana de 30ms.

Ahora con la energía y la cantidad de cruces por cero podemos hacer un apareamiento de

ellos, para tener más control sobre la decisión a tomar.

FUENTES DE SONIDO DECIBELES

Umbral de audición 0

Susurro, respiración normal, pisadas suaves 10

Rumor de las hojas en el campo al aire libre 20

Murmullo, oleaje suave en la costa 30

Biblioteca, habitación en silencio 40

Tráfico ligero, conversación normal 50

Oficina grande en horario de trabajo 60

Conversación en voz muy alta, gritería, tráfico intenso de ciudad

70

Timbre, camión pesado moviéndose 80

Aspiradora funcionando, maquinaria de una fábrica trabajando

90

Banda de música rock 100

Claxon de un coche, explosión de petardos o cohetes empleados en pirotecnia

110

Umbral del dolor 120

Martillo neumático (de aire) 130

Avión de reacción durante el despegue 150

Motor de un cohete espacial durante el despegue 180

Según la anterior tabla para 30dB o más ya hay posibilidad de voz humana, por lo menos

murmullosamente. Por tanto tomé 35dB como la potencia a considerar necesaria para un

Page 3: Detector de voz

posible estado de voz. Pero esto se tiene que contrastar con la cantidad de cruces por cero, así

que según la potencia en dB y la cantidad de cruces por cero se tomara una mejor decisión. La

cantidad de cruces por cero es supuesta mayor donde hay voz y menor donde no la hay, ya

que sacando unas graficas de las ventanas se noto que en los periodos donde no hay voz la

señal es por decirlo muy rebelde, puede que sea de mucha frecuencia pero puede estar

siempre en el eje positivo o negativo cruzando solamente una vez por cero, mientras que la

señal donde hay voz es mas bien definida y debido a su carácter de periodicidad garantiza

varios cruces por cero, para notarlo miremos:

Graficas de no voz

En las dos primeras graficas donde la escala vertical esta en el orden de se puede notar

en la mayoría del tiempo la señal estuvo en un solo cuadrante de los dos posibles en amplitud,

cruzando pocas veces por cero mientras que en la ultima donde la escala esta en orden

unitario la señal cruzo mas veces por cero, de aquí mis deducciones en la parte de

comparaciones con la energía y cruces por cero, para la señal sonido7. Digo esto porque no

Page 4: Detector de voz

todas las señales se comportan igual y dado el carácter de simple y los análisis que se hicieron,

se esperaría que este detector funciones muy bien con la señal de referencia (sonido7) y no

tan bien con una señal proveniente de otra fuente. Esto se comparara mas adelante.

Ahora multiplicamos la señal por un vector de banderas que tenia un 1 si el intervalo es de voz

y 0 si no lo es, por lo que donde no hay voz quedará una línea recta horizontal en cero y si la

hay quedara la señal tal cual.

Por ultimo se pinta las partes donde hay voz con la función cuadrada discreta.

Estrategias usadas para probarlo

Comparaciones

Sonido7.wav vs vozmauro.wav

Page 5: Detector de voz

Sonido7.wav

0 1 2 3 4 5 6 7-2

-1

0

1Señal con intervalos de voz

n

am

plitud

0 1 2 3 4 5 6 7-2

-1

0

1señal original

n

am

plitud

0 50 100 150 200 2500

20

40

60Densidad espectral de la señal original

n

am

plitud

0 1 2 3 4 5 6 7-2

-1

0

1Recoratada con vector bandera

n

am

plitud

Page 6: Detector de voz

Vozmauro.wav

Claramente se ve como la actuación del programa frente a la señal sobre la que se hizo el

análisis fue casi perfecto mientras que con otra no fue lo suficientemente eficaz. En sonido 7

vemos como la posición 3 de la grafica muestra la señal multiplicada por las banderas, las

cuales recortaron de manera aceptable los periodos con voz dejando los que no tenían voz con

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2Señal con intervalos de voz

n

am

plitud

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2señal original

n

am

plitud

0 20 40 60 80 100 120 1400

20

40

60Densidad espectral de la señal original

n

am

plitud

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2Recoratada con vector bandera

n

am

plitud

Page 7: Detector de voz

una amplitud de cero, mientras que en vozmauro.wav las banderas recortaron pedazos que no

debían cortar. Tocaría ver en que ambiente fue grabada una señal respecto a la otra, ya que

por debajo pueden haber sonidos interferentes o simplemente el aparato con el que se grabo

pudo introducir niveles diferentes en una u otra grabación.

Comparación de cruces y no cruces.

Aquí vamos a comparar como funciona el programa teniendo en cuenta los cruces por cero

mas la energía con uno que solo tenga en cuenta la energía sobre el audio sonido7.wav.

Cruces más energía

0 1 2 3 4 5 6 7-2

-1

0

1Señal con intervalos de voz

n

am

plitud

0 1 2 3 4 5 6 7-2

-1

0

1señal original

n

am

plitud

0 50 100 150 200 2500

20

40

60Densidad espectral de la señal original

n

am

plitud

0 1 2 3 4 5 6 7-2

-1

0

1Recoratada con vector bandera

n

am

plitud

Page 8: Detector de voz

Solo energía (sin cruces)

De las anteriores graficas se puede decir que ambas muestran igual eficiencia en cuanto a los

intervalos de voz que debían marcar, ya que por ejemplo si en la figura 1 se pinto un espacio

que era de no voz en la figura 2 no salió pintado, mas si embargo hay otra parte donde pasa

exactamente lo contrario, así que ambos muestran la misma eficiencia de desempeño. Si

miramos la señal azul en ambos casos se ve que su semejanza con la original es grande pero si

contamos exactitudes ganara el código que suma cruces por cero contra el que no lo hace ya

que este ultimo dejo perder mas información que el primero.

Ahora comparemos ambos códigos con vozmauro.wav

0 1 2 3 4 5 6 7-2

-1

0

1Señal con intervalos de voz

n

am

plitud

0 1 2 3 4 5 6 7-2

-1

0

1señal original

n

am

plitud

0 50 100 150 200 2500

20

40

60Densidad espectral de la señal original

am

plitud

0 1 2 3 4 5 6 7-2

-1

0

1Recoratada con vector bandera

n

am

plitud

Page 9: Detector de voz

Cruces más energía

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2Señal con intervalos de voz

n

am

plitud

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2señal original

n

am

plitud

0 20 40 60 80 100 120 1400

20

40

60Densidad espectral de la señal original

n

am

plitud

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2Recoratada con vector bandera

n

am

plitud

Page 10: Detector de voz

Solo energía (sin cruces)

Si comparamos los dos programas se nota claramente como el que no tiene los cruces por cero

tuvo mejor desarrollo sobre una señal sobre la que no se analizo nada durante su desarrollo

que el que conto los cruces, esto es básicamente debido a lo que se dijo anteriormente, no

sabemos como y en que forma y con que características fue grabada la señal, por tanto un

programa mas general seria el que no cuenta cruces y uno mas especifico sobre una señal que

se tiene un previo conocimiento valdría la pea utilizar el que si cuenta los cruces.

0 0.5 1 1.5 2 2.5 3 3.5 4-2

0

2Señal con intervalos de voz

n

am

plitud

0 1 2 3 4 5 6 70

0.5

1

0 50 100 150 200 2500

20

40

60Densidad espectral de la señal original

am

plitud

0 1 2 3 4 5 6 7-2

0

2Recoratada con vector bandera

n

am

plitud

Page 11: Detector de voz

A demás para efectos de multiplicidad se introdujo ruido aleatorio de distribución normal. En

sonido7 el programa que cuenta cruces no lo detecto como voz mientras el que no cuenta

cruces lo marco como si fuera voz, así que este resultado hace mejor al cuenta cruces que el

que no sobre, como dije, una señal sobre la que hay un previo conocimiento. Si no se tiene un

previo conocimiento se debe utilizar el mas general que es que utiliza solo densidad espectral

de energía.

Fuentes

http://es.calameo.com/read/000188805b50ca74ebdee

http://arantxa.ii.uam.es/~tco/Practicas/Anexo_Representacion_Espectros.pdf

http://es.wikipedia.org/wiki/Se%C3%B1al_de_voz#Energ.C3.ADa_y_cruces_por_cero

http://www.asifunciona.com/tablas/intensidad_sonidos/intensidad_sonidos.htm