Detector de voz
Click here to load reader
-
Upload
mao-herrera -
Category
Documents
-
view
607 -
download
1
Transcript of 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
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
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
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
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
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
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
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
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
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
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