tesis2003 - Laboratorio de Señales

Anuncio
SISTEMA NO LINEAL PARA EL RECONOCIMIENTO DE FONEMAS
INSPIRADO EN LA CÓCLEA
GLORIA CAROLINA FERNÁNDEZ OTÁLORA
UNIVERSIDAD DE LOS ANDES
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
BOGOTA D.C.
2003
1
SISTEMA NO LINEAL PARA EL RECONOCIMIENTO DE FONEMAS
INSPIRADO EN LA CÓCLEA
GLORIA CAROLINA FERNÁNDEZ OTÁLORA
Proyecto de Grado presentado como requisito para optar
al titulo de Ingeniero Electrónico.
Asesor
ALFREDO RESTREPO PALACIOS
UNIVERSIDAD DE LOS ANDES
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
BOGOTA D.C.
2003
2
AGRADECIMIENTOS
Quiero agradecer a:
René Meziat, profesor del Departamento de Matemáticas, por su colaboración para poder
dar inicio a este proyecto.
Alfredo Restrepo, asesor de este proyecto y profesor del Departamento de Ingeniería
Eléctrica y Electrónica por su continuo compromiso y dedicación hacia el proyecto.
Al grupo de Laboratorio de Señales por brindarme los medios y posibilidades para avanzar
cada semana en la consolidación de este trabajo.
3
TABLA DE CONTENIDO
Pág.
INTRODUCCION………………………………………………….. 7
1. LA CÓCLEA…………………………………………………….. 8
2. MODELO…………………………………………………………13
3. SELECCIÓN DE LA DENSIDAD Y LA TENSIÓN……….....17
4. RESPUESTA A SONIDOS VOCÁLICOS……………………. 22
APENDICE: Códigos en Matlab.………………………………….. 34
CONCLUSIONES Y TRABAJOS FUTUROS…………………… 54
REFERENCIAS…………………………………………….……… 57
5
LISTA DE FIGURAS
Pág.
Figura 1. Corte transversal de la cóclea…………………………………………..9
Figura 2. Esquema del oído humano…………………………………………….. 10
Figura 3. Vibraciones en la membrana basilar……………………………………11
Figura 4. Tonos a través de la cóclea…………………………………………….11
Figura 5. Región de solución…………………………………………………….. 14
Figura 6. Ejemplos de señales de voz, vocales A y U…………………………… 16
Figura 7. Ejemplos de respuestas a sinusoides con T ( x) = x.e x , ρ ( x ) = 1 ……18
Figura 8. Ejemplos de respuestas a sinusoides con T ( x) = −28.28 x + 100 , ρ(x) = x ..19
Figura 9. Ejemplos de respuesta a sinusoides con variación de amplitud………...21
Figura 10. Ejemplos de respuesta a sonidos vocálicos: Vocal A mujer 2……….. 22
Figura 11 Ejemplos de respuesta a sonidos vocálicos: Vocal E hombre 1……… 23
Figura 12 Partición en hexágonos de la región de solución…………………….. 24
Figura 13 Respuesta a sinusoides, escala de grises…………………………….. 25
Figura 14 Respuesta a sonidos vocálicos, escala de grises, membrana sostenida 26
Figura 15 Respuesta a sonidos vocálicos, escala de grises, membrana suelta…. 29
Figura 16 Respuesta a sonidos vocálicos, escala de grises, promedio…………. 32
6
INTRODUCCION
El oído humano es el encargado de realizar los procesos de recepción y transducción del
sonido. Antes de ser percibido el sonido con el cerebro, dentro de la cóclea ocurren
fenómenos físicos, químicos y eléctricos que contribuyen al proceso de reconocimiento.
Las técnicas más conocidas para el reconocimiento de voz en ingeniería son técnicas
lineales basadas en la transformada de Fourier. El propósito de este trabajo es explorar la
posibilidad de hacer reconocimiento de fonemas mediante un método no lineal inspirado en
el oído humano, específicamente en la cóclea, que permita
caracterizar sonidos,
específicamente sonidos vocálicos (a, e, i, o, u), es decir, no se pretende modelar la cóclea
sino diseñar un sistema inspirado en ella.
Cuando el oído recibe un estímulo sonoro el estribo excita la cóclea a través de la ventana
oval, la cóclea responde y es capaz de hacerlo de una manera diferente según sea la
excitación, manteniendo un patrón de respuesta relacionado con la frecuencia de la señal.
Este comportamiento es el que finalmente se quiere lograr al pretender hacer
reconocimiento de voz: desarrollar un sistema que se comporte diferente, según la señal
con la cual sea excitado y que sea sensible al contenido frecuencial de la misma (en el
sentido de Fourier).
7
1. LA CÓCLEA
La cóclea es un órgano del oído interno con forma de tubo arrollado en espiral
aproximadamente tiene entre 30 y 35 mm de longitud y un diámetro que varia entre 1 y
2mm, constituido por un laberinto óseo tapizado de estructuras celulares que forman un
laberinto membranoso.
La cóclea está llena de líquido (perilinfa y endolinfa) y rodeada por paredes óseas rígidas,
en su interior existen dos membranas: membrana de Reissner y membrana basilar que
dividen la cóclea en 3 compartimientos principales: escala vestibular, escala media y escala
timpánica.
Las escalas timpánicas y vestibular -rellenas de perilinfa- se comunican en el vértice de la
cóclea por un orificio, el helicotrema. En la base de la cóclea la escala timpánica termina en
la ventana redonda que se encuentra cerrada por una membrana; su función es impedir que
la onda rebote, equilibrando las presiones entre escalas. La escala vestibular, en la base de
la cóclea, se corresponde con la ventana oval que también está recubierta por una
membrana y es por donde penetra la onda de sonido hasta el oído interno.
8
Figura 1.Corte transversal de la cóclea
La membrana de Reissner es extraordinariamente delgada. Apoyado en la membrana
basilar se encuentra el complejo y delicado órgano de Corti, que contiene varias filas de
diminutas células vellosas a las cuales se conectan las fibras nerviosas. Cada fila de células
vellosas contiene unas 7000 células, haciendo un total de 24.000 células en varias filas.
Cada célula vellosa posee numerosos cilios, que se doblan cuando la membrana basilar
responde a un sonido, desencadenando una señal nerviosa en el nervio auditivo. La
membrana basilar tiene una longitud de aproximadamente 32 mm y un espesor que
aumenta desde 0,04 mm en la base a 0,5 mm en el ápice. Es decir, una relación de
aproximadamente 1 a 10.
.
El eje central de la cóclea, el modiolo, es un tubo óseo dentro del cual corren las fibras del
nervio auditivo. La espiral ósea esta arrollada alrededor del modiolo.
Para comprender cómo vibra la membrana basilar supongamos la cóclea desenrollada, con
forma de cono estrecho divido en dos secciones por la membrana basilar. En primera
9
aproximación no vamos a considerar el conducto coclear ni la membrana de Reissner por
lo extremadamente finos que son. En el extremo más grande del cilindro se encuentran las
ventanas oval y redonda, cada una de ellas cerrada por una membrana. En el otro extremo
de la membrana basilar hay un pequeño orificio (helicotrema) que comunica las dos
secciones. La membrana basilar acaba a poca distancia del extremo del cono, con lo cual el
fluido puede transmitir ondas de presión de vuelta desde el final de la membrana.
Figura 2. Esquema del oído humano
Los tonos agudos hacen vibrar la membrana basilar en regiones cerca de las ventanas,
donde es más delgada y rígida que cerca del helicotrema (cien veces más rígida), mientras
que los tonos graves hacen vibrar la membrana basilar desde las ventanas hasta cerca del
helicotrema, donde es más flácida y cerca de cinco veces más ancha. Se puede decir
entonces que los tonos graves penetran más en la membrana que los agudos.
10
Figura 3. Vibraciones en la membrana basilar
En la figura 3, al lado derecho se muestra un lugar aproximado sobre la membrana hasta el
cual alcanza a penetrar un tono de la frecuencia que se indica, no se debe confundir con
una localización específica de excitación según la frecuencia. Por ejemplo, un tono de
500Hz no produce una excitación solamente en el extremo ancho de la membrana, sino que
se excita toda la membrana hasta ese punto, produciendo una respuesta de máxima
amplitud hacia el extremo de la membrana.
Figura 4. Tonos a través de la cóclea
11
En la figura 4 se muestra el recorrido de dos tonos de diferentes frecuencias, la onda de mas
baja frecuencia viaja más a través de la cóclea que la de alta frecuencia, la amplitud de la
onda de alta frecuencia decae mas rápidamente.
La percepción tradicional es que en la cóclea tiene lugar un análisis espectral inicial,
partiendo la membrana en regiones especificas de respuesta según la frecuencia, y por
ejemplo para frecuencias bajas se omite la excitación que se lleva a cabo hacia el inicio de
la membrana, asumiendo que solo se excitan pequeñas porciones de membrana localizadas
hacia el final. En este trabajo se trata de buscar para frecuencias bajas una respuesta de la
membrana que sea hasta y no en el final de la membrana, y para frecuencias altas tienda
hasta y no en el inicio de la membrana.
La conversión de las vibraciones mecánicas de la membrana basilar en impulsos eléctricos
del nervio auditivo se lleva a cabo en el órgano de Corti. En función de la frecuencia de la
señal, la vibración se encontrará localizada a lo largo de la membrana basilar excitando
unas u otras fibras nerviosas. Así mismo, en función de la amplitud de la vibración, más
fibras nerviosas serán estimuladas1.
1
Para una descripción más adecuada de la anatomía y fisiología de la cóclea y el oído puede remitirse a las referencias
dadas al final de este documento.
12
2. MODELO
Basándose en que la membrana basilar vibra de acuerdo a la frecuencia de la excitación que
produce el sonido, se modeló la membrana como una “tela” en dos dimensiones, sobre la
cual se propagaría una onda de sonido. Inicialmente se pensó en modelar una cuerda no
homogénea (1 dimensión) que se fuera engrosando, pero dadas las opciones ofrecidas por
Matlab, se logro hacer un modelo en dos dimensiones.
La membrana basilar se simuló en Matlab mediante una “tela” en forma de trapecio con
dimensiones aproximadas a las descritas en el capitulo anterior. Sobre esta “tela” se
solucionó la ecuación diferencial parcial que describe la propagación de una onda en una
membrana no homogénea en 2D, esta ecuación incluye densidad y tensión variantes:
∂ 2U ( z , t )
∂U ( z , t ) ⎞ ∂ ⎛
∂U ( z , t ) ⎞ ⎤
1 ⎡∂ ⎛
⎟⎥
⎜
=
T
(
x
,
y
)
+
T
(
x
,
y
)
⎜
⎟
⎢
ρ ( x, y ) ⎣ ∂x ⎝
∂t 2
∂x ⎠ ∂y ⎜⎝
∂y ⎟⎠ ⎦
donde T ( x, y ) es la tensión de la membrana y ρ ( x, y ) es la densidad de masa.
Con condiciones iniciales:
U (t = 0) = 0
U ' (t = 0) = 0
y condiciones de frontera (por el lado izquierdo del trapecio):
U ( x = 0, y = 0, t ) = excitación (t )
13
Para las pruebas fueron considerados dos casos de condiciones de frontera. En el primero,
la membrana se encuentra libre, es decir, los tres lados restantes del trapecio no tienen
condición de frontera. En el segundo caso la membrana se encuentra fija, es decir, los tres
lados restantes del trapecio tienen condición de frontera igual a cero.
Para solucionar la ecuación, se utilizó el método de elementos finitos del toolbox de Matlab
para ecuaciones diferenciales parciales, sobre la siguiente región de solución:
Figura 5. Región de solución.
Esta región contiene 640 triángulos y 369 nodos. La triangulación es generada
automáticamente por el algoritmo de matlab y tiene como objetivo partir el espacio en un
número finito de regiones (elementos), el número de triángulos y nodos puede modificarse,
obviamente entre más triángulos hayan, mayor será el tiempo de ejecución del programa y
mas refinada será la solución.
14
El método de elementos finitos es un algoritmo numérico que permite introducir con mayor
facilidad las condiciones de frontera, factor muy importante y determinante para la
construcción un modelo adecuado para la membrana basilar, ya que la excitación del
sistema se hará estableciéndola como condición de frontera por el lado izquierdo del
trapecio. La solución de la ecuación está contenida en una matriz de tamaño 369 x Nro de
muestras (el número de muestras es aproximadamente 4000 como se explica más adelante)
donde a cada tiempo de solución ti le corresponde un valor de U en cada nodo de la región.
En este modelo se dejaron de tener en cuenta factores como: la forma de excitación real
que se hace por medio del movimiento de los líquidos dentro de la cóclea, el helicotrema, el
espesor de la membrana , el tubo, las ventanas y su forma enrollada .
Las excitaciones para las primeras pruebas fueron sinusoides de diferentes frecuencias,
para las pruebas siguientes se utilizaron señales de voz de cuatro personas diferentes, dos
hombres y dos mujeres representadas en los cinco sonidos vocálicos para cada persona. Las
señales de voz fueron adquiridas mediante el programa GoldWave con un micrófono
común en archivos con extensión .wav, inicialmente a una tasa de muestreo de 44.4 Khz. y
con una duración de 500 ms cada una, considerando que la frecuencia máxima de una señal
de voz es aproximadamente de 20 Khz.
Debido al tiempo de computo de la solución para la excitación con señales de voz (oscilaba
entre veinte y cuarenta minutos), se redujo el tiempo de muestreo a 11.025Khz. y la
15
duración de la señal a 400 ms con lo que se consiguió un tiempo de computo entre cinco y
quince minutos, por lo cual todas las pruebas con voz se hicieron con señales a esta tasa de
muestreo, posteriormente a cada señal se le eliminó el nivel DC que probablemente se
introdujo debido al micrófono y la tarjeta de sonido del computador haciéndole
transformada de Fourier e igualando el primer coeficiente a cero; además de esto no se le
hizo ninguna modificacion a la señal original. Todas las señales de voz tienen amplitud
entre -1 y 1; lo cual es conveniente ya que al ser leídas, la función wavread (que es la que
está disponible en matlab para leer archivos .wav) trunca los valores de la señal que sean
mayores de 1 o menores de -1.
Como cada señal de voz dura 400 ms, ésta se compone de 4410 muestras (11025x0.4), lo
que significa que en ese intervalo de tiempo se deben calcular 4410 soluciones de la
ecuación diferencial, una correspondiente a cada tiempo de cada muestra.
A continuación se muestran dos señales de voz, que corresponden a una vocal A femenina
y a una vocal U masculina.
Figura 6. Ejemplos de señales de voz, vocales A y U.
16
3. SELECCIÓN DE LA DENSIDAD Y LA TENSIÓN
Teniendo el modelo de membrana definido, el paso siguiente fue encontrar una tensión
y/o una densidad apropiada de tal forma que el modelo de membrana respondiera a
diferentes frecuencias como lo hace en realidad la membrana basilar (ver figura 4) es
decir, que las frecuencias altas se atenuaran hacia al final de la membrana y las frecuencias
bajas alcanzaran a excitar notoriamente el final de la membrana. Como se dijo, las primeras
pruebas se realizaron con excitaciones sinusoidales de diferentes frecuencias (tonos puros),
se trabajó primero con el modelo en que la membrana está libre, en este modelo se
mantuvo la densidad constante: ρ ( x ) =1. Luego se cambió el modelo al de la membrana fija,
en el cual la densidad y la tensión fueron variantes.
La forma de trabajar fue haciendo
pruebas con diferentes tensiones y densidades
monótonamente crecientes o decrecientes dependientes solo de la variable x.
Debido a que se desconocen datos reales de la tensión y la densidad en la membrana
basilar, las pruebas se iniciaron con una función cualquiera (creciente o decreciente) y a
medida que avanzaban las pruebas era fácil distinguir con que tipo funcionaba mejor.
Luego de muchas pruebas, en el modelo de la membrana libre se obtiene una buena
17
respuesta con la tensión dada por:
T ( x ) = x.e x
manteniendo una densidad constante:
ρ ( x, y ) =1
Para llegar a esta conclusión se observo la respuesta de la membrana desde 0 hasta 400ms
notándose una atenuación de las frecuencias altas y una excitación mas pronunciada de las
bajas al final de la cuerda, aquí se muestran algunas gráficas de la respuesta de la
membrana en t = 400ms.
Time=0.3999 Excitacion:sin(10000t)
25
20
30
15
20
10
10
5
0
0
-10
-5
-20
-10
-30
0.5
-15
0.4
4
3
0.3
a.
-20
2
0.2
0.1
0
b.
1
Figura 7. Ejemplos de respuestas a sinusoides con T ( x) = x.e x ,
-25
ρ ( x) = 1
c.
a. excitación: sin (1000t),
b. excitación: sin (50000t), c. excitación: sin (70000t).
En general, con tensiones crecientes de este tipo, manteniendo la densidad constante, la
respuesta de la membrana es parecida a la deseada; es decir, no solamente con
T ( x ) = x.e x
se
obtienen buenos resultados cuando se prueba con tonos puros.
Para el caso en el que la cuerda está sostenida se hicieron pruebas con la tensión y la
densidad variantes. Teniendo en cuenta que la membrana es cerca de 100 veces más rígida
18
cerca de las ventanas que al final de la cóclea, se asoció la rigidez con la tensión, de tal
forma que se escogió una tensión lineal dependiente solamente de la variable x, que
cumpliera esta condición:
T ( x) = −28.28 x + 100
Con base en esta tensión se buscó una densidad de masa con la que la respuesta a diferentes
frecuencias fuera como la deseada, para esto se visualizó la respuesta de la membrana
desde t=0s hasta t=400ms. Finalmente se escogió:
ρ ( x) = x
En general se observa que con densidades crecientes se obtienen buenos resultados.
Algunas respuestas a excitaciones con sinusoides en t = 400ms bajo los anteriores valores
de densidad y tensión son:
a.
b.
19
c.
d.
Figura 8. Ejemplos de respuesta a sinusoides con T ( x) = −28.28 x + 100 , ρ ( x ) = x a. excitación: sin (1000t),
b. excitación: sin (10000t), c. excitación: sin (30000t), d. excitación: sin (100000t).
Además de escoger una densidad y tensión apropiadas a partir de las pruebas con
sinusoides, también se observó el efecto en la respuesta de la membrana simulada debido a
la variación de la amplitud de la excitación. Se observó que se mantenía el patrón de
respuesta a lo largo de la membrana, es decir,
la respuesta a altas frecuencias sigue
atenuándose a lo largo de la membrana y a bajas frecuencias sigue siendo más notoria al
final de la membrana sin importar la amplitud de la excitación. También se observó que la
respuesta de la membrana no es lineal, al hacer el cociente de las respuestas en t=400ms y
ver que no es una constante.
A continuación se muestran dos ejemplos del efecto de la variación de amplitud en la
respuesta de la membrana, un ejemplo con la membrana sostenida y un ejemplo con la
membrana suelta. En la primera columna se muestra la respuesta a la excitación con
20
amplitud igual a uno, en la segunda columna la respuesta a la excitación con variación de
amplitud, y en la tercera columna se muestra el cociente de las respuestas.
Amplitud=1
uno
Amplitud
Amplitud variada
Cociente
S
o
s
t
e
n
i
d
a
L
i
b
r
e
Figura 9. Ejemplos de respuesta a sinusoides con variación de amplitud
El tiempo promedio de ejecución del algoritmo, cuando la excitación es una sinusoide con
4410 muestras es de tres minutos, a mayor frecuencia de la sinusoide mayor es el tiempo de
convergencia del método.
Una vez escogidas las funciones de densidad y tensión que semejaran cualitativamente la
respuesta a excitaciones sinusoidales de la membrana basilar, se empezó a probar con los
sonidos vocálicos que se tenían de las cuatro personas.
21
4. RESPUESTA A SONIDOS VOCÁLICOS
Luego de escoger una densidad y una tensión según los resultados de pruebas con
sinusoides, se hicieron las pruebas con los sonidos vocálicos como excitación, para esto
cada archivo .wav sin el nivel dc se leyó dentro de un vector de datos donde la primera
posición corresponde a la condición de frontera en t=0, y así sucesivamente hasta la
posición 4410 que corresponde a la condición de frontera en t=400ms.
Con esta condición de frontera y con la densidad y tensión para cada caso (membrana libre
y sostenida) se solucionó para cada sonido vocálico de cada persona. Las matrices de
solución fueron guardadas, con ellas se hizo el análisis. Inicialmente se graficó la solución
para cada tiempo de solución, obteniendo una animación de la vibracion de la membrana
según la excitación,
a continuación se muestran algunas secuencias de graficas para
algunos tiempos de solución:
a.
b.
c.
22
d.
Figura 10. Ejemplos de respuesta a sonidos vocálicos: Vocal A mujer 2 membrana suelta. a. t=25 ms, b. t=
50 ms, c. t=250 ms, d. t= 400 ms.
a.
d.
b.
e.
c.
f.
Figura 11. Ejemplos de respuesta a sonidos vocálicos: Vocal E hombre 1 membrana sostenida. a. t=50ms, b.
t=75 ms, c. t=120ms d. t= 150 ms, e. t= 175 ms, f. t=400ms.
23
Para visualizar mejor los cambios en amplitud en la respuesta de la membrana y regiones
de mayor excitación durante el intervalo de tiempo, se graficó en escala de grises el rango
de la respuesta en cada nodo, para esto se partió el espacio en hexágonos, de tal forma que
cada nodo fuera el centro de un hexágono y así colorear todo el hexágono del valor que
toma el rango en el nodo que corresponde a su centro, de esta manera:
Zoom:
Figura 12. Partición en hexágonos de la región de solución.
24
Los triángulos originales son los que están dibujados con líneas azules, los hexágonos en
los que se partió la región son los que están coloreados de azul más claro, los triángulos
amarillos “sobraron” al hacer la partición en hexágonos, estos se colorearán del promedio
de los rangos en los nodos del triangulo original en el que está inscrito cada triangulo
amarillo.
Esta partición se hizo con el fin de perder la menor cantidad de información con respecto a
los cambios en la respuesta de la membrana, tratando de no suavizar tanto la imagen. Al
graficar el logaritmo del rango en escala de grises, para excitaciones sinusoidales, se
obtienen respuestas como las siguientes:
c. excitación: sin (30000t)
a. excitación: sin (1000t)
b excitación: sin (10000t)
d. excitación: sin (70000t)
25
e. excitación: sin (100000t)
Figura 13. Respuesta a sinusoides, escala de grises.
Las gráficas con sinusoides muestran que para frecuencias bajas hay mayor excitación al
final de la membrana (blanco es máximo y negro es mínimo) y para frecuencias altas solo
se notan cambios significativos hacia el inicio de la membrana. Ahora, sonidos vocálicos:
Membrana sostenida:
Vocales de Mujer
b. Vocal A Mujer 2
a.
Vocal A Mujer 1
26
c.
Vocal I Mujer 2
g.
Vocal O Mujer 2
d. Vocal I Mujer 1
h. Vocal U Mujer 2
e.
Vocal E Mujer 2
i.
Vocal U Mujer 1
f.
Vocal E Mujer 1
j.
Vocal O Mujer 1
27
Vocales de Hombre
k. Vocal A Hombre 2
o.
l.
p. Vocal I Hombre 1
Vocal A Hombre 1
m. Vocal E Hombre 1
n. Vocal E Hombre 2
Vocal I Hombre 2
q. Vocal O Hombre 2
r.
Vocal O hombre 1
28
s.
Vocal U Hombre 1
t.
Vocal U Hombre 2
Figura 14. Respuesta a sonidos vocálicos, escala de grises, membrana sostenida
Membrana libre:
Vocales de Mujer
a.
Vocal A Mujer 2
c.
b. Vocal A Mujer 1
Vocal E Mujer 2
d. Vocal E Mujer 1
29
e.
Vocal I Mujer 2
f.
Vocal I Mujer 1
i.
Vocal U Mujer 2
j.
Vocal U Mujer 1
Vocales de Hombre
g.
Vocal O Mujer 2
k. Vocal A Hombre 2
h. Vocal O Mujer 1
l.
Vocal A Hombre 1
30
m. Vocal E Hombre 2
n. Vocal E Hombre 1
o.
Vocal I Hombre 2
q. Vocal O Hombre 2
r.
Vocal O Hombre 1
s.
Vocal U Hombre 2
t.
Vocal U Hombre 1
p. Vocal I Hombre 1
Figura 15. Respuesta a sonidos vocálicos, escala de grises, membrana suelta
31
Para identificar más fácilmente los cambios entre respuestas se hicieron videos (se pueden
ver ejemplos en el CD) con las imágenes obtenidas. Con estas graficas es fácilmente
identificable la voz de un hombre de la de una mujer en el caso de la membrana sostenida,
la de los hombres se proyecta mucho más clara durante toda la membrana, en cambio la de
las mujeres es oscura en casi toda la región. Con estas graficas aún no es posible diferenciar
claramente una vocal de otra.
Para identificar las vocales se trabajó únicamente con la membrana sostenida, para ello se
utilizó la media en cambio del rango, aunque aún no es tan refinada la selección se puede
decir que las aes tienden a ser mas claras en toda la región, las úes mantienen un nivel
intermedio y se les marca más claramente unas líneas oscuras verticales, las ies son oscuras
en casi toda la región, las oes son mucho mas oscuras en la parte central que las ues y se
alcanzan a notar las líneas verticales. Las es son claras en casi toda la membrana al igual
que las aes, no se alcanza a notar una diferencia clara entre a y e con éste análisis. A
continuación se muestran algunos ejemplos de las imágenes obtenidas:
a . Vocal U Hombre 2
b. Vocal U Mujer 1
32
c. Vocal O Hombre 1
e. Vocal A Mujer 1
f. Vocal I Hombre 1
d. Vocal O Mujer 1
h. Vocal I Mujer 2
d. Vocal A Hombre 1
33
Figura 16. Respuesta a sonidos vocálicos, escala de grises, promedio.
APENDICE: Códigos en Matlab
A continuación se presentan los códigos básicos en matlab que se utilizaron durante el
trabajo, para algunas pruebas se variaron parámetros y nombres de archivos dentro de ellos.
Las matrices y figuras a las que hace referencia se encuentran almacenadas en el CD.
1.
Programa para solucionar la ecuación diferencial.
function pdemodel
[pde_fig,ax]=pdeinit;
pdetool('appl_cb',1);
set(ax,'DataAspectRatio',[1 0.11250000000000002 1]);
set(ax,'PlotBoxAspectRatio',[13.333333333333332 8.8888888888888875 6.6666666666666661]);
set(ax,'XLim',[0 4]);
set(ax,'YLim',[0.14999999999999999 0.45000000000000001]);
set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');
% Geometry description:
pdepoly([ 0.11908396946564881,...
0.11908396946564881,...
3.4900763358778626,...
3.4900763358778626,...
],...
[ 0.32610687022900764,...
0.27458015267175573,...
0.16603053435114498,...
0.43122137404580152,...
],...
'P1');
set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','P1')
% Boundary conditions:
pdetool('changemode',0)
pdesetbd(4,...
'dir',...
1,...
'1',...
'sin(110000*t)')
pdesetbd(3,...
'dir',...
1,...
'1',...
'sin(110000*t)')
pdesetbd(2,...
'dir',...
1,...
'1',...
'sin(110000*t)')
pdesetbd(1,...
'dir',...
34
1,...
'1',...
'sin(110000*t)')
% Mesh generation:
setuprop(pde_fig,'trisize',0.90000000000000002);
setuprop(pde_fig,'Hgrad',1.9990000000000001);
setuprop(pde_fig,'refinemethod','regular');
pdetool('initmesh')
pdetool('refine')
pdetool('refine')
pdetool('refine')
% PDE coefficients:
pdeseteq(3,...
'x.*exp(x)',...
'0',...
'0',...
'1',...
'linspace(0,0.3999,100)',...
'1./x',...
'0',...
'[0 100]')
setuprop(pde_fig,'currparam',...
['x.*exp(x)';...
'0
';...
'0
';...
'1
'])
% Solve parameters:
setuprop(pde_fig,'solveparam',...
str2mat('0','1000','10','pdeadworst',...
'0.5','longest','0','1E-4','','fixed','Inf'))
% Plotflags and user data strings:
setuprop(pde_fig,'plotflags',[1 1 1 1 1 1 1 1 0 0 0 100 1 0 1 0 0 1]);
setuprop(pde_fig,'colstring','');
setuprop(pde_fig,'arrowstring','');
setuprop(pde_fig,'deformstring','');
setuprop(pde_fig,'heightstring','');
2.
Programa para generar videos con particion en hexágonos (escala de grises)
function hexa(a1,a2,a3,a4,e1,e2,e3,e4,i1,i2,i3,i4,o1,o2,o3,o4,u1,u2,u3,u4,p,H)
%(a1,a2,a3,a4,e1,e2,e3,e4,i1,i2,i3,i4,o1,o2,o3,o4,u1,u2,u3,u4,p);
N1=10; %numero de frames vocales
N2=15; %numero de frames personas
R=5; %numero de repeticiones
%p= coordenadas de los nodos
%entran matrices de solucion: a,a,a,a e,e,e,e i,i,i,i o,o,o,o u,u,u,u... vector p: coordenadas x e y
%de los nodos de cada triangulo.
%para sostenida:
hexa(uAcaro,uAerick,uAleo,uAivan,uEcaro,uEerick,uEleo,uEivan,uIcaro,uIerick,uIleo,uIivan,uOcaro,uOerick,uOleo
,uOivan,uUcaro,uUerick,uUleo,uUivan,p,hexagonos);
%para libre:
hexa(Acarolina,Aerick,Aleonor,Aivan,Ecarolina,Eerick,Eleonor,Eivan,Icarolina,Ierick,Ileonor,Iivan,Ocarolina,Oeric
k,Oleonor,Oivan,Ucarolina,Uerick,Uleonor,Uivan,p,hexagonos);
%para
sostenida:hexa(Acaros,Aerick,Aleonor,Aivan,Ecaro,Eerick,Eleonor,Eivan,Icaro,Ierick,Ileonor,Iivan,Ocaro,Oerick,Ol
eonor,Oivan,Ucaro,Uerick,Uleonor,Uivan,p,hexagonos);
[c1 f1]=size(a1);
35
em=10;
for i=1:369
rango1(i)=log((max(a1(i,em:f1)))-(min(a1(i,em:f1))));
rango2(i)=log((max(a2(i,em:f1)))-(min(a2(i,em:f1))));
rango3(i)=log((max(a3(i,em:f1)))-(min(a3(i,em:f1))));
rango4(i)=log((max(a4(i,em:f1)))-(min(a4(i,em:f1))));
rango5(i)=log((max(e1(i,em:f1)))-(min(e1(i,em:f1))));
rango6(i)=log((max(e2(i,em:f1)))-(min(e2(i,em:f1))));
rango7(i)=log((max(e3(i,em:f1)))-(min(e3(i,em:f1))));
rango8(i)=log((max(e4(i,em:f1)))-(min(e4(i,em:f1))));
rango9(i)=log((max(i1(i,em:f1)))-(min(i1(i,em:f1))));
rango10(i)=log((max(i2(i,em:f1)))-(min(i2(i,em:f1))));
rango11(i)=log((max(i3(i,em:f1)))-(min(i3(i,em:f1))));
rango12(i)=log((max(i4(i,em:f1)))-(min(i4(i,em:f1))));
rango13(i)=log((max(o1(i,em:f1)))-(min(o1(i,em:f1))));
rango14(i)=log((max(o2(i,em:f1)))-(min(o2(i,em:f1))));
rango15(i)=log((max(o3(i,em:f1)))-(min(o3(i,em:f1))));
rango16(i)=log((max(o4(i,em:f1)))-(min(o4(i,em:f1))));
rango17(i)=log((max(u1(i,em:f1)))-(min(u1(i,em:f1))));
rango18(i)=log((max(u2(i,em:f1)))-(min(u2(i,em:f1))));
rango19(i)=log((max(u3(i,em:f1)))-(min(u3(i,em:f1))));
rango20(i)=log((max(u4(i,em:f1)))-(min(u4(i,em:f1))));
end
max1=max(max(rango1));
max2=max(max(rango2));
max3=max(max(rango3));
max4=max(max(rango4));
max5=max(max(rango5));
max6=max(max(rango6));
max7=max(max(rango7));
max8=max(max(rango8));
max9=max(max(rango9));
max10=max(max(rango10));
max11=max(max(rango11));
max12=max(max(rango12));
max13=max(max(rango13));
max14=max(max(rango14));
max15=max(max(rango15));
max16=max(max(rango16));
max17=max(max(rango17));
max18=max(max(rango18));
max19=max(max(rango19));
max20=max(max(rango20));
ord=vert(p);
AA=ordenar1(p);
%se llena la matriz de cada imagen deacuerdo con la muestra H
for i=1:467
for j=1:698
if H(i,j)==765 | H(i,j)==0
I1(i,j)=max1;
I2(i,j)=max2;
I3(i,j)=max3;
I4(i,j)=max4;
I5(i,j)=max5;
I6(i,j)=max6;
I7(i,j)=max7;
I8(i,j)=max8;
I9(i,j)=max9;
I10(i,j)=max10;
I11(i,j)=max11;
I12(i,j)=max12;
36
I13(i,j)=max13;
I14(i,j)=max14;
I15(i,j)=max15;
I16(i,j)=max16;
I17(i,j)=max17;
I18(i,j)=max18;
I19(i,j)=max19;
I20(i,j)=max20;
else
if H(i,j)>0
col=H(i,j);
ind=AA(3,col);
I1(i,j)=rango1(ind);
I2(i,j)=rango2(ind);
I3(i,j)=rango3(ind);
I4(i,j)=rango4(ind);
I5(i,j)=rango5(ind);
I6(i,j)=rango6(ind);
I7(i,j)=rango7(ind);
I8(i,j)=rango8(ind);
I9(i,j)=rango9(ind);
I10(i,j)=rango10(ind);
I11(i,j)=rango11(ind);
I12(i,j)=rango12(ind);
I13(i,j)=rango13(ind);
I14(i,j)=rango14(ind);
I15(i,j)=rango15(ind);
I16(i,j)=rango16(ind);
I17(i,j)=rango17(ind);
I18(i,j)=rango18(ind);
I19(i,j)=rango19(ind);
I20(i,j)=rango20(ind);
end
if H(i,j)< 0
ind=abs(H(i,j));
r1=ord(ind,1);
r2=ord(ind,2);
r3=ord(ind,3);
vec(1)=rango1(r1);
vec(2)=rango1(r2);
vec(3)=rango1(r3);
I1(i,j)=mean(vec);
vec(1)=rango2(r1);
vec(2)=rango2(r2);
vec(3)=rango2(r3);
I2(i,j)=mean(vec);
vec(1)=rango3(r1);
vec(2)=rango3(r2);
vec(3)=rango3(r3);
I3(i,j)=mean(vec);
vec(1)=rango4(r1);
vec(2)=rango4(r2);
vec(3)=rango4(r3);
I4(i,j)=mean(vec);
vec(1)=rango5(r1);
vec(2)=rango5(r2);
37
vec(3)=rango5(r3);
I5(i,j)=mean(vec);
vec(1)=rango6(r1);
vec(2)=rango6(r2);
vec(3)=rango6(r3);
I6(i,j)=mean(vec);
vec(1)=rango7(r1);
vec(2)=rango7(r2);
vec(3)=rango7(r3);
I7(i,j)=mean(vec);
vec(1)=rango8(r1);
vec(2)=rango8(r2);
vec(3)=rango8(r3);
I8(i,j)=mean(vec);
vec(1)=rango9(r1);
vec(2)=rango9(r2);
vec(3)=rango9(r3);
I9(i,j)=mean(vec);
vec(1)=rango10(r1);
vec(2)=rango10(r2);
vec(3)=rango10(r3);
I10(i,j)=mean(vec);
vec(1)=rango11(r1);
vec(2)=rango11(r2);
vec(3)=rango11(r3);
I11(i,j)=mean(vec);
vec(1)=rango12(r1);
vec(2)=rango12(r2);
vec(3)=rango12(r3);
I12(i,j)=mean(vec);
vec(1)=rango13(r1);
vec(2)=rango13(r2);
vec(3)=rango13(r3);
I13(i,j)=mean(vec);
vec(1)=rango14(r1);
vec(2)=rango14(r2);
vec(3)=rango14(r3);
I14(i,j)=mean(vec);
vec(1)=rango15(r1);
vec(2)=rango15(r2);
vec(3)=rango15(r3);
I15(i,j)=mean(vec);
vec(1)=rango16(r1);
vec(2)=rango16(r2);
vec(3)=rango16(r3);
I16(i,j)=mean(vec);
vec(1)=rango17(r1);
vec(2)=rango17(r2);
vec(3)=rango17(r3);
38
I17(i,j)=mean(vec);
vec(1)=rango18(r1);
vec(2)=rango18(r2);
vec(3)=rango18(r3);
I18(i,j)=mean(vec);
vec(1)=rango19(r1);
vec(2)=rango19(r2);
vec(3)=rango19(r3);
I19(i,j)=mean(vec);
vec(1)=rango20(r1);
vec(2)=rango20(r2);
vec(3)=rango20(r3);
I20(i,j)=mean(vec);
end
end
end
end
%Vocal A
figure;
mov4= avifile('Asteschex.avi')
for v=1:R
imagesc(I1)
colormap(gray);
F(1) = getframe;
for i=1:N1
mov4=addframe(mov4,F(1));
end
imagesc(I2)
colormap(gray);
F(2) = getframe;
for i=1:N1
mov4=addframe(mov4,F(2));
end
imagesc(I3)
colormap(gray);
F(3) = getframe;
for i=1:N1
mov4=addframe(mov4,F(3));
end
imagesc(I4)
colormap(gray);
F(4) = getframe;
for i=1:N1
mov4=addframe(mov4,F(4));
end
end
39
mov4=close(mov4);
%Vocal E
figure;
mov5= avifile('Esteschex.avi')
for v=1:R
imagesc(I5)
colormap(gray);
F(1) = getframe;
for i=1:N1
mov5=addframe(mov5,F(1));
end
imagesc(I6)
colormap(gray);
F(2) = getframe;
for i=1:N1
mov5=addframe(mov5,F(2));
end
imagesc(I7)
colormap(gray);
F(3) = getframe;
for i=1:N1
mov5=addframe(mov5,F(3));
end
imagesc(I8)
colormap(gray);
F(4) = getframe;
for i=1:N1
mov5=addframe(mov5,F(4));
end
end
mov5=close(mov5);
%Vocal I
figure;
mov6= avifile('Isteschex.avi')
for v=1:R
imagesc(I9)
colormap(gray);
F(1) = getframe;
for i=1:N1
mov6=addframe(mov6,F(1));
end
imagesc(I10)
colormap(gray);
F(2) = getframe;
for i=1:N1
mov6=addframe(mov6,F(2));
40
end
imagesc(I11)
colormap(gray);
F(3) = getframe;
for i=1:N1
mov6=addframe(mov6,F(3));
end
imagesc(I12)
colormap(gray);
F(4) = getframe;
for i=1:N1
mov6=addframe(mov6,F(4));
end
end
mov6=close(mov6);
%Vocal O
figure;
mov7= avifile('Osteschex.avi')
for v=1:R
imagesc(I13)
colormap(gray);
F(1) = getframe;
for i=1:N1
mov7=addframe(mov7,F(1));
end
imagesc(I14)
colormap(gray);
F(2) = getframe;
for i=1:N1
mov7=addframe(mov7,F(2));
end
imagesc(I15)
colormap(gray);
F(3) = getframe;
for i=1:N1
mov7=addframe(mov7,F(3));
end
imagesc(I16)
colormap(gray);
F(4) = getframe;
for i=1:N1
mov7=addframe(mov7,F(4));
end
end
mov7=close(mov7);
%Vocal U
41
figure;
mov8= avifile('Usteschex.avi')
for v=1:R
imagesc(I17)
colormap(gray);
F(1) = getframe;
for i=1:N1
mov8=addframe(mov8,F(1));
end
imagesc(I18)
colormap(gray);
F(2) = getframe;
for i=1:N1
mov8=addframe(mov8,F(2));
end
imagesc(I19)
colormap(gray);
F(3) = getframe;
for i=1:N1
mov8=addframe(mov8,F(3));
end
imagesc(I20)
colormap(gray);
F(4) = getframe;
for i=1:N1
mov8=addframe(mov8,F(4));
end
end
mov8=close(mov8);
%genera video vocales mias
figure;
mov = avifile('Vocalesmiasteschex.avi')
for v=1:R
imagesc(I1)
colormap(gray);
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
imagesc(I5)
colormap(gray);
F(2) = getframe;
for i=1:N2
mov=addframe(mov,F(2));
end
imagesc(I9)
42
colormap(gray);
F(3) = getframe;
for i=1:N2
mov=addframe(mov,F(3));
end
imagesc(I13)
colormap(gray);
F(4) = getframe;
for i=1:N2
mov=addframe(mov,F(4));
end
imagesc(I17)
colormap(gray);
v=[0 (max17/5)];
F(5) = getframe;
for i=1:N2
mov=addframe(mov,F(5));
end
end
mov=close(mov);
%genera video vocales ivan:
figure;
mov = avifile('Vocalesivanteschex.avi')
for v=1:R
imagesc(I4)
colormap(gray);
v=[0 (max4/5)];
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
imagesc(I8)
colormap(gray);
F(2) = getframe;
for i=1:N2
mov=addframe(mov,F(2));
end
imagesc(I12)
colormap(gray);
F(3) = getframe;
for i=1:N2
mov=addframe(mov,F(3));
end
imagesc(I16)
colormap(gray);
43
F(4) = getframe;
for i=1:N2
mov=addframe(mov,F(4));
end
imagesc(I20)
colormap(gray);
F(5) = getframe;
for i=1:N2
mov=addframe(mov,F(5));
end
end
mov=close(mov);
%genera video vocales Leo:
figure;
mov = avifile('VocalesLeoteschex.avi')
for v=1:R
imagesc(I3)
colormap(gray);
v=[0 (max3/5)];
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
imagesc(I7)
colormap(gray);
F(2) = getframe;
for i=1:N2
mov=addframe(mov,F(2));
end
imagesc(I11)
colormap(gray);
F(3) = getframe;
for i=1:N2
mov=addframe(mov,F(3));
end
imagesc(I15)
colormap(gray);
F(4) = getframe;
for i=1:N2
mov=addframe(mov,F(4));
end
imagesc(I19)
colormap(gray);
F(5) = getframe;
44
for i=1:N2
mov=addframe(mov,F(5));
end
end
mov=close(mov);
%genera video vocales Erick:
figure;
mov = avifile('VocalesErickteschex.avi')
for v=1:R
imagesc(I2)
colormap(gray);
v=[0 (max2/5)];
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
imagesc(I6)
colormap(gray);
F(2) = getframe;
for i=1:N2
mov=addframe(mov,F(2));
end
imagesc(I10)
colormap(gray);
F(3) = getframe;
for i=1:N2
mov=addframe(mov,F(3));
end
imagesc(I14)
colormap(gray);
F(4) = getframe;
for i=1:N2
mov=addframe(mov,F(4));
end
imagesc(I18)
colormap(gray);
F(5) = getframe;
for i=1:N2
mov=addframe(mov,F(5));
end
end
mov=close(mov);
figure;
imagesc(I1);
colormap(gray);
title('A caro');
figure;
45
imagesc(I2);
colormap(gray);
title('A erick');
figure;
imagesc(I3);
colormap(gray);
title('A leonor');
figure;
imagesc(I4);
colormap(gray);
title('A ivan');figure;
imagesc(I5);
colormap(gray);
title('E caro');
figure;
imagesc(I6);
colormap(gray);
title('E erick');
figure;
imagesc(I7);
colormap(gray);
title('E leonor');
figure;
imagesc(I8);
colormap(gray);
title('E ivan');
figure;
imagesc(I9);
colormap(gray);
title('I caro');
figure;
imagesc(I10);
colormap(gray);
title('I erick');
figure;
imagesc(I11);
colormap(gray);
title('I leonor');
figure;
imagesc(I12);
colormap(gray);
title('I ivan');
figure;
imagesc(I13);
colormap(gray);
title('O caro');
figure;
imagesc(I14);
colormap(gray);
title('O erick');
figure;
imagesc(I15);
colormap(gray);
title('O leonor');
figure;
imagesc(I16);
colormap(gray);
title('O ivan');
figure;
imagesc(I17);
colormap(gray);
46
title('U caro');
figure;
imagesc(I18);
colormap(gray);
title('U erick');
figure;
imagesc(I19);
colormap(gray);
title('U leonor');
figure;
imagesc(I20);
colormap(gray);
title('U ivan');
3.
Videos de sinusoides
function sinu(a1,a2,a3,a4,e1,p,H)
%(a1,a2,a3,a4,e1,e2,e3,e4,i1,i2,i3,i4,o1,o2,o3,o4,u1,u2,u3,u4,p);
N1=10; %numero de frames vocales
N2=15; %numero de frames personas
R=5; %numero de repeticiones
%para sinulibre: sinu(sin1000,sin10000,sin40000,sin70000,sin100000,p,hexagonos);
[c1 f1]=size(a1);
em=10;
for i=1:369
rango1(i)=max(a1(i,em:f1))-min(a1(i,em:f1));
rango2(i)=max(a2(i,em:f1))-min(a2(i,em:f1));
rango3(i)=max(a3(i,em:f1))-min(a3(i,em:f1));
rango4(i)=max(a4(i,em:f1))-min(a4(i,em:f1));
rango5(i)=max(e1(i,em:f1))-min(e1(i,em:f1));
end
max1=max(max(rango1));
max2=max(max(rango2));
max3=max(max(rango3));
max4=max(max(rango4));
max5=max(max(rango5));
ord=vert(p);
AA=ordenar1(p);
%se llena la matriz de cada imagen deacuerdo con la muestra H
for i=1:467
for j=1:698
if H(i,j)==765 | H(i,j)==0
I1(i,j)=max1;
I2(i,j)=max2;
I3(i,j)=max3;
I4(i,j)=max4;
I5(i,j)=max5;
else
if H(i,j)>0
col=H(i,j);
ind=AA(3,col);
I1(i,j)=rango1(ind);
I2(i,j)=rango2(ind);
I3(i,j)=rango3(ind);
I4(i,j)=rango4(ind);
I5(i,j)=rango5(ind);
end
47
if H(i,j)< 0
ind=abs(H(i,j));
r1=ord(ind,1);
r2=ord(ind,2);
r3=ord(ind,3);
vec(1)=rango1(r1);
vec(2)=rango1(r2);
vec(3)=rango1(r3);
I1(i,j)=mean(vec);
vec(1)=rango2(r1);
vec(2)=rango2(r2);
vec(3)=rango2(r3);
I2(i,j)=mean(vec);
vec(1)=rango3(r1);
vec(2)=rango3(r2);
vec(3)=rango3(r3);
I3(i,j)=mean(vec);
vec(1)=rango4(r1);
vec(2)=rango4(r2);
vec(3)=rango4(r3);
I4(i,j)=mean(vec);
vec(1)=rango5(r1);
vec(2)=rango5(r2);
vec(3)=rango5(r3);
I5(i,j)=mean(vec);
end
end
end
end
%Vocal A
figure;
mov4= avifile('sinusoidesorig.avi')
for v=1:R
imagesc(I1)
colormap(gray);
F(1) = getframe;
for i=1:N1
mov4=addframe(mov4,F(1));
end
imagesc(I2)
colormap(gray);
F(2) = getframe;
for i=1:N1
mov4=addframe(mov4,F(2));
end
imagesc(I3)
colormap(gray);
F(3) = getframe;
for i=1:N1
mov4=addframe(mov4,F(3));
end
48
imagesc(I4)
colormap(gray);
F(4) = getframe;
for i=1:N1
mov4=addframe(mov4,F(4));
end
imagesc(I5)
colormap(gray);
F(5) = getframe;
for i=1:N1
mov4=addframe(mov4,F(5));
end
end
mov4=close(mov4);
%genera videos
figure;
mov = avifile('sin1000orig.avi')
for v=1:R
imagesc(I1)
colormap(gray);
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
end
mov=close(mov);
%genera video vocales ivan:
figure;
mov = avifile('sin10000orig.avi')
for v=1:R
imagesc(I2)
colormap(gray);
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
end
mov=close(mov);
%genera video vocales Leo:
figure;
mov = avifile('sin40000orig.avi')
for v=1:R
imagesc(I3)
colormap(gray);
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
end
49
mov=close(mov);
%genera video vocales Erick:
figure;
mov = avifile('sin70000orig.avi')
for v=1:R
imagesc(I4)
colormap(gray);
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
end
mov=close(mov);
%genera video vocales Erick:
figure;
mov = avifile('sin100000orig.avi')
for v=1:R
imagesc(I5)
colormap(gray);
F(1) = getframe;
for i=1:N2
mov=addframe(mov,F(1));
end
end
mov=close(mov);
4.
Programa para generar animación de vibracion de la membrana:
R=1;
N1=10;
mov4= avifile('sin100000sost.avi')
for v=1:R
(open('005.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(1) = getframe;
for i=1:N1
mov4=addframe(mov4,F(1));
end
(open('010.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(2) = getframe;
for i=1:N1
mov4=addframe(mov4,F(2));
end
(open('015.fig'));
50
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(3) = getframe;
for i=1:N1
mov4=addframe(mov4,F(3));
end
(open('020.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(4) = getframe;
for i=1:N1
mov4=addframe(mov4,F(4));
end
(open('025.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(5) = getframe;
for i=1:N1
mov4=addframe(mov4,F(5));
end
(open('030.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(6) = getframe;
for i=1:N1
mov4=addframe(mov4,F(6));
end
(open('035.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(7) = getframe;
for i=1:N1
mov4=addframe(mov4,F(7));
end
(open('040.fig'));
AXIS([0 4 0 0.5 -20 20 -20 20]);
set(gca,'ZTick',-20:5:20);
set(gca,'ZTickLabel',{'-20','-15','-10','-5','0','5','10','15','20'});
title('');
grid;
F(8) = getframe;
for i=1:N1
mov4=addframe(mov4,F(8));
end
end
mov4=close(mov4);
5.
Funciones:
51
function SAL=fon1(t)
B=NaN;
format long
mya=t;
switch mya
case NaN
B=NaN;
otherwise
mya=abs(mya);
kio=wavread('eCs');
if mya < 0.4
c=round(11022.5*t) +1;
B=kio(c);
end
end
SAL=B;
function o=ordenar (vec)
v=vec(1,:);
v1=vec(2,:);
[a,b]=size(v);
for i=1:b
[m,s]=min(v);
o1(i)=m;
v(s)=max(v)+1;
o2(i)=v1(1,s);
o3(i)=s;
end
o(1,:)=o1;
o(2,:)=o2;
o(3,:)=o3;
function A=ordenar1 (p)
vec=ordenar(p);
v=vec(2,:);
v1=vec(3,:);
B=0;
C=0;
for j=0:9:360
for l=1:9
t(l)=v(l+j);
t1(l)=v1(l+j);
end
for i=j+1:j+9
[m,s]=min(t);
o1(i-j)=m;
t(s)=max(t)+1;
o2(i-j)=t1(s);
end
B=[B o1];
C=[C o2];
end
for i=1:369
A(1,i)=vec(1,i);
A(2,i)=B(i+1);
A(3,i)=C(i+1);
end
%en la matriz A(3X369) quedan: fila 1: Xs ordenados, fila 2: Ys
%correspondientes a xs ordenados, fila 3: posicion que le corresponde a
52
%ese punto en el vector de rango.
function sinDC
arch=input(' Ingrese el nombre del archivo original .wav \n\n ','s');
nuevo=input(' Ingrese el nombre del archivo destino (sin DC) .wav \n\n ','s');
[y,f,n]=wavread(arch);
a=fft(y);
a(1)=0;
b=ifft(a);
wavwrite(b,f,n,nuevo);
53
CONCLUSIONES Y TRABAJOS FUTUROS
Este modelo de membrana arroja buenos resultados en la diferenciación de frecuencias de
sinusoides, aunque no es tan refinado y por lo tanto aun no está listo para reconocer
fonemas. Se puede decir que se logró imitar en alguna medida el comportamiento real de la
membrana basilar aún estando lejos de sus especificaciones reales de tensión y densidad
(que son desconocidas). Es claro que la membrana simulada responde selectivamente a
diferentes frecuencias lo que hace que se puedan diferenciar fácilmente
las voces
femeninas de las masculinas, luego como sistema para reconocer fonemas, se puede decir
que ésta es una primera etapa de su desarrollo.
El modelo actual no tiene en cuenta muchos factores anatómicos y fisiológicos de la
membrana como el líquido ni la forma real de excitación del sistema la cuál se hace a
través del él por la ventana oval, su espesor, su posición enrollada y muchos otros factores
que deben influir radicalmente en la respuesta de la membrana.
Se comprobó que es posible mediante un sistema no lineal desarrollar un método que
permita diferenciar sonidos, en éste trabajo se exploraron tan solo algunas de las muchas
posibilidades que ofrece la ecuación de onda, la membrana, las condiciones de frontera y en
general todos los parámetros de solución de la ecuación diferencial que hacen que el
problema pueda ser solucionado de muchas maneras diferentes y seguramente habrá
54
forma de optimizar la solución mediante la variación de la tensión, la densidad, la forma de
la membrana, la triangulación de la región, la tolerancia al error, las condiciones iniciales o
las de frontera .
Los mayores inconvenientes presentados durante el desarrollo de este trabajo están en el
tiempo de ejecución del algoritmo que resuelve la ecuación diferencial ya que en algunos
casos toma hasta 12 minutos para arrojar la respuesta de la membrana a una señal de voz, el
tiempo de ejecución depende entre otras cosas de la tasa de muestreo de la señal, la
tolerancia al error, el tamaño de la región de solución, el número de triángulos y el número
de nodos.
Los trabajos futuros basados en la simulación de la membrana deberían dirigirse hacia la
búsqueda de un algoritmo o un programa
que sea más eficiente que el utilizado
actualmente para luego facilitar la búsqueda de tensión y densidad adecuadas para una
mejor caracterización de sonidos y un campo de prueba más amplio, es decir trabajar con
señales provenientes de mas de cuatro personas. También el desarrollo de un método para
comparar respuestas de la membrana, enfocado en dos aminos: diferenciar un fonema de
otro y diferenciar una fonema de una persona del mismo fonema de otra persona.
Los resultados de este trabajo son una buena base para seguir explorando un sistema que
inspirado en el funcionamiento del oído humano pretende reconocer sonidos porque estos
muestran que existe una alternativa diferente del análisis de Fourier en el tratamiento de
señales de voz para hacer análisis en frecuencia y que es posible ajustar un modelo para
55
este fin, también son una base para desarrollar un modelo de la cóclea (que en ningún
momento se pretendió en este trabajo) que no esté basado en bancos de filtros o
resonadores selectivos sintonizados en una frecuencia específica sino en la exploración de
métodos y sistemas no lineales.
56
REFERENCIAS
ƒ
http://www.bcm.tmc.edu/oto/research/cochlea/Hearing/ Fecha de consulta: 24 de
Agosto de 2003, Tema general: Cochlear Biophysics Laboratory
ƒ
http://psych.athabascau.ca/html/Psych402/Biotutorials/25/part1.html Fecha de
consulta: 24 de Agosto de 2003, Tema general: The Human Ear
ƒ
George, G. Somjen. (1986), Neuro Fisiología. Buenos Aires. ED. Panamericana.
ƒ
Crawford Jr., Frank S. 1971 Berkeley Physics Course v.3. Barcelona. Reverte, S. A
ƒ
Burden, Richard L. 2002. Análisis numérico. México, D.F. Thomson Learning.
ƒ
COMSOL AB. 2002. Partial Differential Equation Toolbox User’s Guide version 1.
Natick, MA 01760-2098. The Mathworks
ƒ
Lyon, R., Shamma, S., Sultan .Auditory Representations of Timbre and Pitch,
Auditory Computation,, p. 221-232
57
Descargar