You are on page 1of 110

EVALUACION AUTOMATICA DE METRICAS ACUSTICAS PARA LA DETECCION DE HIPERNASALIDAD

JONNY ALEXANDER URIBE

UNIVERSIDAD DE ANTIOQUIA FACULTAD DE INGENIERA DEPARTAMENTO DE INGENIERA ELECTRNICA MEDELLN 2009

EVALUACION AUTOMATICA DE METRICAS ACUSTICAS PARA LA DETECCION DE HIPERNASALIDAD

JONNY ALEXANDER URIBE

Trabajo de tesis para optar al ttulo de Ingeniero Electrnico

Asesor: NATALIA GAVIRIA GOMEZ Ph.D.

UNIVERSIDAD DE ANTIOQUIA FACULTAD DE INGENIERA DEPARTAMENTO DE INGENIERA ELECTRNICA MEDELLN 2009

Nota de aceptacin

________________ ________________ ________________

________________ Presidente del Jurado

________________ Jurado

________________ Jurado

Medelln 23 de marzo de 2009

AGRADECIMIENTOS

Quiero agradecer a la asesora de este trabajo, la Prof. Natalia Gaviria, por su continuo apoyo y soporte. Sus comentarios e indicaciones fueron siempre certeros y no hubiera terminado este trabajo sin su invaluable ayuda. Al Prof. Carlos Henry Mendoza por sus valiosos consejos y apreciaciones. Su capacidad para observar los problemas de manera clara y razonada, asi como su ayuda continua y desinteresada, lo convirtieron en un invaluable gua a lo largo de todo el trabajo. Al Prof. Germn Castellanos quien generosamente accedi a compartir la base de datos necesaria para cumplir los objetivos de esta tesis. Su trabajo incansable en el tema de deteccin de hipernasalidad es un ejemplo de constancia y tenacidad. Al Ingeniero Franklin Seplveda por su amabilidad y ayuda desinteresada. Quisiera agradecer especialmente al Comit para el Desarrollo de la Investigacin, CODI, por los recursos fsicos que me concedieron. Para mi fue una grata noticia saber que mi trabajo inspiraba la colaboracin de esta entidad. El apoyo brindado por ellos a la investigacin ennoblece su labor y los ubica como gestores de progreso en la Universidad de Antioquia. Por ltimo agradezco a todos aquellos que con sus aportes y consejos me ayudaron a completar este trabajo. Les pido me perdonen por no recordar sus nombres pero quiero que sepan que este logro tambin es suyo.

CONTENIDO
LISTA DE TABLAS ..................................................................................................................7 LISTA DE FIGURAS ................................................................................................................8 RESUMEN...............................................................................................................................10 1 INTRODUCCION ................................................................................................................11 1.1. PLANTEAMIENTO DEL PROBLEMA ..................................................................................11 1.2. OBJETIVO GENERAL.......................................................................................................11 1.3. ORGANIZACIN DE LA TESIS ...........................................................................................11 2 MARCO TEORICO Y ESTADO DEL ARTE.....................................................................12 2.1. LABIO Y/O PALADAR HENDIDO (LPH)............................................................................12 2.2. IMPLICACIONES EN EL HABLA DEL LPH..........................................................................12 2.3. TRATAMIENTO FONOAUDIOLOGICO DEL LPH..................................................................14 2.4. PRODUCCIN DE VOZ ....................................................................................................15 2.5. RASTREADORES DE FORMANTES ..................................................................................16 2.6. HIPERNASALIDAD Y SU MEDIDA .....................................................................................17 2.7. PARMETROS FRECUENCIALES INDICATIVOS DE NASALIZACIN ...................................17 2.8. REVISIN BIBLIOGRFICA ..............................................................................................18 3 HERRAMIENTAS Y METODOLOGIA ..............................................................................22 3.1. SOFTWARE PARA EL PROCESAMIENTO SEALES DE VOZ..............................................22 3.2. BASE DE DATOS DE VOZ SANA Y VOZ HIPERNASAL ......................................................24 3.2.1. Preliminares .......................................................................................................24 3.2.2. Recurso Disponible ..........................................................................................25 3.2.3 Extraccin de Vocales Usando Grabaciones de Palabras..........................25 3.2.4. Descripcin de la Base de datos con Sonidos Voclicos .........................27 4 PARAMETROS ACUSTICOS SELECCIONADOS .........................................................29 4.1. SUSTENTACION Y METODOLOGA ...................................................................................29 4.1.1 Rastreador de Formantes ..................................................................................29 4.1.2. Detector de Picos...............................................................................................32 4.1.3. Disminucin de la Amplitud del Primer Formante ......................................32 4.1.3.1 A1 H1 .........................................................................................................32 4.1.4. Polos Extras a Bajas Frecuencias..................................................................35 4.1.4.1 A1 P0 y A1 P1........................................................................................35 4.1.4.2. CTEO............................................................................................................38 4.1.4.3 P250v y P250m ............................................................................................45 4.1.5. Incremento en el Ancho de Banda del Primer Formante ...........................53 4.1.5.1. F1BW............................................................................................................53 5 RESULTADOS....................................................................................................................54 5.1. DESCRIPCIN DEL TRATAMIENTO ESTADSTICO ............................................................54 5.2. RESULTADOS MTRICA A1 H1...................................................................................55 5.3. RESULTADOS MTRICA A1 P0 ...................................................................................60 5.4. RESULTADOS MTRICA A1 P1 ..................................................................................63 5.5. RESULTADOS MTRICA P250V ......................................................................................67 5.6. RESULTADOS MTRICA P250M .....................................................................................69 5.7. RESULTADOS MTRICA CTEO .....................................................................................72 5.8. RESULTADOS MTRICA F1BW......................................................................................75 5.9. COMPARACIN DE MTRICAS ........................................................................................78 6 CONCLUSIONES Y TRABAJO FUTURO........................................................................81 APENDICES............................................................................................................................83 A. PRAAT: SOFTWARE PARA EL ANLISIS DE SEALES DE VOZ...........................................83

B. SCRIPTS Y FUNCIONES IMPLEMENTADOS EN MATLAB ......................................................87 C. SCRIPTS IMPLEMENTADOS EN PRAAT ............................................................................105 BIBLIOGRAFIA ....................................................................................................................109

LISTA DE TABLAS
Tabla 2.1 Autores y mtricas propuestas ..................................................... 21 Tabla 3.1 Estructura de la base de datos a nivel de directorio................... 27 Tabla 3.2 Calificacin subjetiva de la base de datos segn nio............... 28 Tabla 3.3 Ejemplo de los nombres de las grabaciones disponibles .......... 28 Tabla 4.1 Mtricas acsticas seleccionadas ................................................. 29 Tabla 4.2. Seleccin de alfa y gama como equilibrio entre intereses opuestos........................................................................................................... 50 Tabla 5.1. ANOVA mtrica A1 H1 toda la base de datos ........................ 57 Tabla 5.2. Interpretacin de medias e intervalos de confianza A1 H1 ... 58 Tabla 5.3. Evaluacin mtrica A1 H1 segn nio..................................... 58 Tabla 5.4. ANOVA mtrica A1 P0 toda la base de datos ........................ 61 Tabla 5.5. ANOVA mtrica A1 P0 solo vocal o ...................................... 63 Tabla 5.6. ANOVA mtrica A1 P1 .............................................................. 65 Tabla 5.7. ANOVA para A1 P1 solo vocal e ........................................... 66 Tabla 5.8. ANOVA para P250v...................................................................... 68 Tabla 5.9. ANOVA para P250m..................................................................... 70 Tabla 5.10. ANOVA para P250m sin considerar la vocal i....................... 71 Tabla 5.11. ANOVA para CTEO.................................................................... 74 Tabla 5.12. ANOVA para CTEO slo vocales e y o ............................... 75 Tabla 5.13. ANOVA para F1BW .................................................................... 77 Tabla 5.14. Comparacin de mtricas .......................................................... 78 Tabla 7.1. Conjunto de operaciones para calcular el TEO ......................... 86

LISTA DE FIGURAS
Fig. 2.1 Diferentes grados de labio y paladar hendido ................................. 12 Fig. 2.2 Posicin del velo dentro del sistema fonador................................... 13 Fig. 2.3 Modelo simplificado del sistema fonador humano........................... 15 Fig. 2.4 Modulacin o filtrado de la seal fundamental desde la glotis........ 15 Fig. 2.5 Espectro LPC de la vocal /a/ y sus formantes ................................. 16 Fig. 3.1 Extraccin manual de un tramo voclico ........................................ 26 Fig. 4.1 Respuesta del rastreador de formantes en Praat para A9_F1_N.. 30 Fig. 4.2 Respuesta del rastreador de formantes en Praat para A3_F2_H 30 Fig. 4.3 Diagrama LPC y ubicacin de F1 y F2 para un frame de A10_F1_H (stereo).......................................................................................... 31 Fig. 4.4 Diagrama LPC y ubicacin de F1 y F2 para un frame de A10_F1_H (monofnico) ................................................................................ 31 Fig. 4.5 Prueba del detector de picos ........................................................... 32 Fig. 4.6 Espectro sin aplicar prenfasis y diagrama LPC ........................... 33 Fig. 4.7 Espectro luego de aplicar prenfasis y diagrama LPC.................. 33 Fig. 4.8 Espectro antes y despus de aplicar enventanado ....................... 34 Fig. 4.9 Deteccin del primer armnico ........................................................ 35 Fig. 4.10. A1 H1 para las grabaciones A10_F1_N y A10_F1_H............. 35 Fig. 4.11. Deteccin de P0 y P1 en un frame de voz hipernasal ............... 37 Fig. 4.12. Deteccin de P0 y P1 en un frame de voz sana......................... 37 Fig. 4.13. Mtrica A1 P0 para las grabaciones A10_F1_N y A10_F1_H37 Fig. 4.14. Mtrica A1 P1 para las grabaciones A10_F1_N y A10_F1_H38 Fig. 4.15. Perfil Teager de seales sinusoidales puras............................... 42 Fig. 4.16. Perfil Teager de seales sinusoidales contaminadas con ruido42 Fig. 4.17. Perfil Teager de seales sinusoidales contaminadas con ruido filtrado a 3khz .................................................................................................. 42 Fig. 4.18. Perfil Teager de seales sinusoidales contaminadas con ruido filtrado a 1khz .................................................................................................. 43 Fig. 4.19. Perfil TEO, ventana a 30 ms, Sound A10_F1_N a los 68ms, filtro perfil 0-100Hz (izq), 0-500Hz (centro), 0-1000Hz (der). ..................... 43 Fig. 4.20. Consistencia perfil TEO a lo largo de una grabacin ................. 43 Fig. 4.21. Perfiles Teager para seales pasabajas y pasabanda .............. 44 Fig. 4.22. CTEO para grabaciones A10_F1_N y A10F1_H ........................ 44 Fig. 4.23. MDF en un frame de una vocal sinttica ..................................... 47 Fig. 4.24. MDF en un frame de A2_M2_N y A3_M1_H............................... 47 Fig. 4.25 MDF a lo largo de A_13_M1_N ..................................................... 47 Fig. 4.26 Gama = 0.9 Alfa = 0.7 0. 8 0.9 0.98 -> (negro, rojo, verde, azul) (A11_F2_H)............................................................................................ 48 Fig. 4.27 Gama = 0.9 Alfa = 0.7 0. 6 0.5 0.4 -> (negro, rojo, verde, azul) (A11_F2_H)............................................................................................ 48 Fig. 4.28. Gama = 0.9 Alfa = 0.7 0. 8 0.9 0.98 -> (negro, rojo, verde, azul) (A10_F1_N)............................................................................................ 49 Fig. 4.29. Gama = 0.9 Alfa = 0.6 0.5 0.4 -> (negro, rojo, verde)(A10_F1_N) .......................................................................................... 50 Fig. 4.30. MDF frame de A10_F1_N y A11_F2_H....................................... 51 Fig. 4.31. MDF a lo largo de las grabaciones A10_F1N y A11_F2_H....... 51 Fig. 4.32. Mtrica P250v a lo largo de A11_F2_H y A10_F1_N ................ 52 8

Fig. 5.1 Hiptesis de normalidad A1 H1 .................................................... 56 Fig. 5.2 Contraste entre vocales A1 H1 voz normal ................................. 56 Fig. 5.3 Contraste entre vocales A1 H1 voz hipernasal........................... 56 Fig. 5.4 Mtrica A1 H1 en toda la base de datos...................................... 57 Fig. 5.5 Comaracin grfica de medias e intervalo de confianza A1 H1 58 Fig. 5.6 Mtrica A1 H1 luego de retiriar grabaciones de mala calidad ... 59 Fig. 5.7 Mtrica A1 H1 vocales a,e y o .............................................. 59 Fig. 5.8 ANOVA de A1 H1 sobre subespacio ........................................... 59 Fig. 5.9 Hiptesis de normalidad A1 P0 .................................................... 60 Fig. 5.10. Contraste entre vocales A1 P0 voz normal .............................. 60 Fig. 5.11. Contraste entre vocales A1 P0 voz hipernasal........................ 61 Fig. 5.12. Mtrica A1 P0 en toda la base de datos................................... 61 Fig. 5.13. Comparacin grfica de medias A1P0 ...................................... 62 Fig. 5.14. A1 P0 solo vocal o.................................................................... 62 Fig. 5.15. Comparacin grafica de medias A1 P0 solo vocal o ............ 63 Fig. 5.16. Hiptesis de normalidad A1 P1 ................................................. 63 Fig. 5.17. Contraste entre vocales A1 P1 voz normal .............................. 64 Fig. 5.18. Contraste entre vocales A1 P0 voz hipernasal........................ 64 Fig. 5.19. Diagrama de cajas y bigotes mtrica A1 P1 ............................ 65 Fig. 5.20. Comparacin grafica de Medias A1 P1 .................................... 65 Fig. 5.21. Diagrama cajas y bigotes A1 P1 solo la voal e ..................... 66 Fig. 5.22. Comparacin grafica de Medias e intervalo de confianza A1 P1 solo vocal e.............................................................................................. 66 Fig. 5.23. Hiptesis normalidad mtrica P25v.............................................. 67 Fig. 5.24. Hiptesis distribucin exponencial mtrica P250v...................... 67 Fig. 5.25. Diagrama cajas y bigotes P250v .................................................. 68 Fig. 5.26. Comparacin grafica de medias P250v....................................... 68 Fig. 5.27. Hiptesis de normalidad P250m................................................... 69 Fig. 5.28. Hiptesis distribucin exponencial mtrica P250m .................... 69 Fig. 5.29. Contraste entre vocales voz sana e hipernasal mtrica P250m70 Fig. 5.30. Diagrama de cajas y bigotes mtrica P250m.............................. 70 Fig. 5.31 Comparacin grafica de medias P250m....................................... 71 Fig. 5.32. Diagrama cajas y bigotes para P250m sin la vocal i ............... 71 Fig. 5.33. Comparacin grafica de medias P20m sin considerar vocal i 72 Fig. 5.34. Hiptesis de normalidad CTEO todos los datos ......................... 72 Fig. 5.35. Hiptesis de normalidad CTEO sin datos nulos ......................... 73 Fig. 5.36. Contraste entre vocales voz sana e hipernasal mtrica CTEO. 73 Fig. 5.37. Diagrama de cajas y bigotes CTEO............................................. 74 Fig. 5.38. Comparacin Grfica de medias CTEO ...................................... 74 Fig. 5.39. Diagrama cajas y bigotes CTEO vocales e y o...................... 75 Fig. 5.40. Comparacin Grfica de Medias CTEO slo vocales e y o . 75 Fig. 5.41. Hiptesis de normalidad F1BW .................................................... 75 Fig. 5.42tesis distribucin exponencial mtrica F1BW.............................. 76 Fig. 5.43traste entre vocales voz sana e hipernasal mtrica F1BW.......... 76 Fig. 5.44 Diagrama cajas y bigotes F1BW ................................................... 77 Fig. 5.45. Comparacin Grfica de medias F1BW ...................................... 77 Fig. 5.46. Comparacin de F-ratios............................................................... 78 Fig. 7.1 Ventanas en Praat ............................................................................ 83 Fig. 7.2 LPC de O5_M1_N a los 90ms ......................................................... 85

RESUMEN

El objetivo de este trabajo es evaluar un conjunto de mtricas acsticas que tienen el potencial de discriminar voces sanas de voces hipernasales. La hipernasalidad es una patologa de voz recurrente en nios con Labio y/o paladar hendido. Esta caracterstica dota sus voces de un tono desagradable que interfiere con la comunicacin fluida y desempeo normal en su entorno social. Detectar la hipernasalidad por medio del anlisis de la seal de voz, dotara al especialista con una herramienta en el diagnstico y terapia de estos nios. Este recurso tendra la ventaja de ser no invasivo y potenciara un registro objetivo de la evolucin que el tratamiento fontico sigue en los nios. Como un primer para paso para lograr el diagnstico automtico de la hipernasalidad esta tesis explora el desempeo de seis mtricas acsticas sobre la seal de voz. Su seleccin se bas en una exploracin detallada de la literatura actual. Los algoritmos y procedimientos especficos para calcular estas mtricas fueron implementados y documentados de manera completa. El desempeo de estos seis parmetros fue evaluado estadsticamente sobre la base de datos disponible y se subrayaron aquellos con el potencial de ser usadas en un sistema automtico de reconocimiento de voz hipernasal.

10

Captulo 1 INTRODUCCION
1.1. Planteamiento del Problema Una de las reas fundamentales para el buen desarrollo psicolgico y social del individuo es el lenguaje. En nios que nacen con LPH (Labio y/o Paladar Hendido) la capacidad para articular correctamente los sonidos del habla se ve altamente afectada. Una de las principales caractersticas de su voz anmala es el alto grado de hipernasalidad. Este puede ser tal que el oyente puede perder conciencia del mensaje y simplemente centrarse en la escucha del defecto. Incluso aunque la nasalizacin sea leve, los nios pueden padecer de discriminacin social, burla y rechazo por que su voz resulta desagradable al odo. Una medida cuantitativa de este problema ayudara a decidir objetivamente la pertinencia y grado de una posible intervencin quirrgica, adems de dar pautas concretas sobre el enfoque que el tratamiento fontico debe seguir [1, pp. 2]. Obtener esta mtrica con base en el procesamiento digital de seales, resultara en un mtodo gil, eficaz y econmico que podra complementar el diagnstico fonoaudiologico en pacientes con LPH, adems de ofrecer un mecanismo no invasivo de evaluacin que facilitara el tratamiento con los nios. 1.2. Objetivo General El propsito de esta tesis fue evaluar algunas mtricas acsticas que, con base en la revisin bibliogrfica, mostraban potencial en la discriminacin de voces sanas e hipernasales. Los algoritmos y procedimientos para su clculo fueron desarrollados usando diferentes lenguajes y se implementaron los programas que automticamente evaluaban estos parmetros. Los resultados de estos experimentos se expresan estadsticamente y se indica como este conocimiento podra ser usado para crear sistemas de identificacin automtica de voz hipernasal. Para evaluar las mtricas utilizamos sonidos voclicos provenientes de nios con voz sana y voz hipernasal. 1.3. Organizacin de la Tesis El Capitulo 1 introduce el problema y plantea el objetivo general. En el Capitulo 2 se presenta el marco teorico y se hace una revisin de la bibliografa. El Capitulo 3 presenta las herramietas de software utilizadas y la base de datos disponible para evaluar las mtricas. En el Capitulo 4 se listan las mtricas seleccionadas, se explica su origen y se detallan los mtodos utilizados para calcularlas. El Capitulo 5 presenta los resultados obtenidos para cada mtrica particular desde un punto de vista estadstico. Se comparan las mtricas y se resaltan las mejores. El Capitulo 6 presenta las conclusiones y trabajo futuro. 11

Captulo 2 MARCO TEORICO Y ESTADO DEL ARTE


2.1. Labio y/o Paladar Hendido (LPH) Labio hendido es un defecto congnito en el cual hay un espacio abierto entre la cavidad nasal y el labio, debido una falla del tejido blando y los huesos en esa rea para fusionarse apropiadamente durante el desarrollo embriolgico. Con el paladar hendido hay una falla del paladar duro y/o blando para fusionarse, resultando en una fisura en el paladar que comunica la cavidad oral con la nasal [2, pp. 182]. La Fig. 2.1 ilustra diferentes grados de hendidura en labio y paladar.

Fig. 2.1 Diferentes grados de labio y paladar hendido

De acuerdo con la Organizacin Mundial de la Salud, Colombia report 21.014 nacimientos y 34 casos de labio y/o paladar hendido durante los aos 2001 a 2003, lo cual arroja un 0.16% de incidencia de esta malformacin durante dicho periodo. Es decir de cada 625 nios nacidos vivos uno de ellos sufre de LPH en nuestro pas [3]. 2.2. Implicaciones en el Habla del LPH De acuerdo con especialistas de la Clnica Noel, las principales alteraciones del habla que deben ser trabajadas en nios con LPH son la hipernasalidad, la hiponasalidad y las dislalias [4]. En este proyecto nos centraremos exclusivamente en la hipernasalidad. La hipernasalidad es el resultado de la incapacidad del esfnter velo farngeo para lograr un cierre suficiente que evite la resonancia nasal de los sonidos orales. La voz se oye diferente y con intensidad disminuida, puede escucharse el soplo nasal, el predominio de los fonemas /m/, /n/, //, y la distorsin, omisin o 12

sustitucin de los dems sonidos. En condiciones normales las cavidades oral y nasal son comunicadas o aisladas por la accin del esfnter velofarngeo. Este rgano se encuentra fijado al paladar blando y tiene el potencial de replegarse para permitir que el aire alcance la cavidad nasal o de extenderse acoplndose con la pared de la faringe y obligando a que todo el aire salga por la cavidad oral. El siguiente esquema, Fig. 2.2, ilustra la posicin de este rgano dentro del sistema fonador humano.

Fig. 2.2 Posicin del velo dentro del sistema fonador

El velo del paladar acta pues como una compuerta que comunica ambas cavidades. Las posiciones intermedias del velo son tambin posibles. Esta apertura variable confiere al habla una caracterstica particular conocida como nasalizacin. Entre ms amplia sea la separacin entre el velo y la faringe ms nasalizados sern los sonidos. En espaol los fonemas voclicos solo son nasalizados si se encuentran justo antes de una consonante nasal como /m/ o /n/. Idiomas como el francs, o el hind requieren la nasalizacin leve de ciertos sonidos para distinguirlos fonticamente [5]. La hipernasalidad puede alterar de tal forma el fonema voclico que puede ser difcil entender el mensaje. En personas con paladar hendido la accin del velo es, en general, insuficiente. Muchos pacientes con LPH carecen de este rgano o lo poseen atrofiado. Adems al presentar el paladar una perforacin intrnseca resulta imposible aislar la cavidad oral de la nasal y la voz adquiere caractersticas hipernasales. Si el paciente ha sido intervenido quirrgicamente y el paladar duro ha sido cerrado aun persiste la insuficiencia velofaringea debido al estado incompleto del paladar blando. Cirugas posteriores para reconstruir el paladar blando son muchas veces requeridas en pro de mejorar la capacidad articulatoria y brindar al paciente la oportunidad de corregir su pronunciacin [4, pp. 20].

13

2.3. Tratamiento Fonoaudiologico del LPH El tratamiento llevado a cabo en los nios con LPH involucra muchos profesionales. Uno de ellos es el fonoaudilogo encargado de la atencin auditiva y fontica del nio. La mayora de nios con LPH tienen tambin problemas de audicin que complican la adquisicin del lenguaje. El medico realiza siempre una evaluacin especifica de cada paciente. Los rganos articulatorios y parmetros como la respiracin, la resonancia, la fonacin, la prosodia etc., son revisados detalladamente y conforman un cuadro general que permite enfocar la terapia. El tratamiento fontico depende tambin de la edad que el nio posee y de su ubicacin geogrfica. En trminos generales puede decirse que esta terapia atraviesa los siguientes niveles de trabajo: imitacin, direccin y transferencia [4, pp. 25]. Durante la imitacin el medico intenta por medio de preguntas apropiadas localizar los puntos especficos en los que el nio requiere ayuda. Se trata de una bsqueda de los fonemas alterados y de una caracterizacin del error (como hiponasal, hipernasal, dislalia, etc). La direccin implica que se realicen una serie de ejercicios en los que el nio debe repetir los fonemas buscando mejorar su pronunciacin. Esta etapa en si misma comprende un escalado continuo en complejidad: silaba, palabra, frase, silaba inversa, oraciones, trabalenguas, rimas, retahlas, etc. No todos los ejercicios involucran la pronunciacin de palabras, dependiendo la necesidad particular pueden emplearse ejercicios de absorcinsorbicin, soplos, masajes velares, educacin en la respiracin, ejercicios auditivos, etc. En la fase de transferencia se aborda una conversacin fluida con el nio buscando afinar los ltimos detalles en pronunciacin. Entre los retos del tratamiento fontico encontramos que la valoracin del habla es perceptual, y por tanto subjetiva. La confiabilidad de sus resultados depende fuertemente del nivel de entrenamiento y de la experiencia del especialista. El uso de tcnicas de procesamiento digital de seales en la valoracin objetiva del habla, o en la cuantificacin de la severidad de sus alteraciones, complementara el tratamiento fontico del nio al brindar al medico la posibilidad de comparar resultados entre diferentes sesiones y enfocar la terapia de manera ms acertada.

14

2.4. Produccin de Voz Podemos modelar el tracto vocal de un hablante como muestra la Fig 2.3.

Fig. 2.3 Modelo simplificado del sistema fonador humano

Los pulmones actan como fuente de energa e impulsan el aire a travs de la faringe. La glotis, al estar en su camino, oscila y produce una seal peridica compuesta por una frecuencia fundamental F0 y sus armnicos. La cavidad oral y nasal, adems de todos los articuladores (lengua, labios, etc.), actan como moduladores y filtran la seal cambiando las caractersticas espectrales de esta. En la Fig. 2.4 mostramos como la seal de voz atraviesa estas etapas. En a) acaba de atravesar la glotis. Esta seal peridica tiene un espectro compuesto bsicamente por F0 y sus armnicos (mostrado en b). La cavidad oral y nasal, la lengua, los dientes, los labios, etc., actan de manera dinmica permitiendo la resonancia o exclusin de diferentes bandas frecuenciales en esta seal. En c) podemos observar un ejemplo de cmo el tracto puede pensarse como un filtro con una determinada respuesta en frecuencia que acta sobre la seal en b) para producir la salida en d).

Fig. 2.4 Modulacin o filtrado de la seal fundamental desde la glotis

15

Los sonidos producidos de esta manera se conocen como sonoros en contraste con aquella situacin en la que las cuerdas vocales no oscilan y se producen sonidos sordos (por ejemplo /s/, /k/). Todos los sonidos voclicos son sonoros y presentan el mayor nmero de vibraciones en las cuerdas vocales por unidad de tiempo. En trminos frecuenciales esta caracterstica confiere a su espectro un contenido armnico ms completo. El tracto vocal filtra esta seal excluyendo o reforzando ciertas bandas de armnicos. Para cada vocal el filtro es distinto y los puntos de resonancia varan. Los mximos en la funcin de transferencia se definen como formantes de la seal. La grafica siguiente, Fig. 2.5, muestra la respuesta del filtro obtenida para la vocal /a/ y los formantes asociados:

Fig. 2.5 Espectro LPC de la vocal /a/ y sus formantes

2.5. Rastreadores de Formantes Aunque los formantes definen el tipo de sonido voclico siendo pronunciado su ubicacin y caractersticas frecuenciales presentan gran variabilidad. En muchas situaciones puede ser conveniente hallar de manera automtica la ubicacin de los formantes y, aunque para un humano es fcil identificar los formantes como los picos del LPC, los algoritmos de rastreo automtico de formantes enfrentan muchas dificultades dado que en ocasiones los picos se aplanan, desplazan o desaparecen. Una revisin detallada de los problemas y desafios que enfrenta un rastreador de formantes puede ser consultada en el capitulo 11 del Springer Handbook of Speech Processing [6].

16

2.6. Hipernasalidad y su Medida Los nios que nacen con LPH presentan una voz con calidad reducida. Entre las principales caractersticas encontramos que posee un alto grado de nasalidad. Los procedimientos para medir la hipernasalidad pueden ser clasificados en invasivos o no invasivos. Los mtodos invasivos se basan en instrumentos mdicos que se introducen en la boca del paciente y permiten evaluar el comportamiento de los rganos articuladores (en particular el velo del paladar). Los mtodos no invasivos, por su parte, pueden ser divididos en dos: aquellos que utilizan la evaluacin subjetiva de personal experimentado y aquellos que se apoyan en tcnicas de procesamiento de seales [1, pp. 1-2]. Utilizar la seal de voz para detectar la nasalizacin es un problema difcil porque esta seal es sumamente variable. Encontrar parmetros en la voz que sean consistentes entre personas, estados de animo, condiciones de ruido, diferentes palabras, etc., es un desafi vigente que ha durado dcadas. No obstante, gracias al esfuerzo de observacin y analisis llevado a cabo durante aos, los investigadores han logrado detectar algunas caractersticas recurrentes en la seal de voz que pueden ser usadas como indicativas de nasalizacin. 2.7. Parmetros Frecuenciales Indicativos de Nasalizacin Los cambios acsticos introducidos por la nasalizacin repercuten en el espectro de la seal de voz. Algunas de estas manifestaciones, indicativas de nasalizacin y con el potencial de ser medidas, se listan a continuacin. Las diferencias se refieren a la comparacin con los sonidos exclusivamente orales (o no nasales): La introduccin de polos y ceros extras en todo el espectro, principalmente en la regin del primer formante constituye un invariante en las voces nasalizadas. La amplitud del primer formante se ve disminuida en los sonidos nasales. El ancho de banda del primer y segundo formante se incrementa. El espectro es en general ms plano principalmente en las bajas frecuencias. El centro de gravedad del espectro se desplaza a una frecuencia mayor.

Estas alteraciones pueden ser explicadas tericamente utilizando modelos del tracto vocal [7]. Aunque la hipernasalidad tambin altera caractersticas en la parte alta del espectro estos cambios han mostrado ser menos consistentes que los ocurridos a bajas frecuencias [7, pp. 37].

17

2.8. Revisin Bibliogrfica Utilizando las variaciones en el espectro, diferentes investigadores han propuesto estrategias para discriminar los sonidos nasales de los orales: Chen [5] propuso utilizar la diferencia entre la amplitud del primer formante, A1, y la amplitud del polo extra P0 anterior al formante, y la diferencia entre A1 y la amplitud del polo extra P1 posterior al primer formante. Buscaba as estimar la disminucin en la amplitud del primer formante y su incremento en el ancho de banda. Utiliz un sintetizador de formantes para crear 10 vocales con sus versiones oral y nasal de una voz masculina. La evaluacin fue llevada a cabo de manera perceptiva por 8 oyentes humanos. Aunque la autora no realiz una evaluacin automtica de estos parmetros encontr que la introduccin de los polos extras en el espectro confera a la voz caractersticas nasales que podan ser detectadas perceptivamente por los evaluadores. Cairns [8] utiliz un operador no lineal llamado Teager Energy. Su trabajo se basa en el hecho de que la voz normal esta compuesta slo de formantes mientras que la voz hipernasal contiene formantes, antiformantes y ceros. Por ello un filtrado pasabajas apropiado sobre la voz normal extraera el primer formante, en tanto que este mismo filtro aplicado sobre la voz hipernasal extraera el primer formante y un conjunto de componentes asociados a los antiformantes y a los ceros extras. Sin embargo si se efecta un filtrado pasabandas alrededor del primer formante se extraera slo este en ambos casos. Esta naturaleza multicomponente de la voz hipernasal fue aprovechada utilizando el operador Teager. Los coeficientes de autocorrelacion entre los registros del operador Teager de las seales filtradas pasabajas y pasabanda fueron utilizados como medida de hipernasalidad. Una baja correlacin se interpreta como indicativo de nasalizacin. Cairns emple las grabaciones de 11 hablantes ingleses que pronunciaban muestras orales como /pat/ o /p t/ y muestras nasales como /min/ o /nin/. El xito en la discriminacin de vocal oral o nasal fue de 97.4% para las vocales /a/ e /i/. No obstante el sistema presenta el inconveniente de ser dependiente del hablante y requerir ajuste de los parmetros acorde con la vocal pronunciada. El trabajo de Vijayalakshmi et al.[1] apunta a un invariante en las voces con problemas de hipernasalidad: la presencia de un pico frecuencial a 250Hz ausente en las voces normales. En su trabajo los autores modifican las grabaciones de 30 hablantes normales para introducir formantes extras a diferentes frecuencias. Encuentran que la presencia del formante a 250Hz es crucial en la determinacin perceptual de una voz como hipernasal. Una de las principales dificultades en la determinacin de polos cercanos al primer formante radica en la resolucin pobre en frecuencia que ofrecen los mtodos tradicionales de obtencin del espectro. Utilizando funciones de retraso [9-12], y enfocando su anlisis a las bajas frecuencias, 18

logran incrementar la resolucin alrededor del primer formante. Comparando la amplitud del pico extra logran discriminar voces normales de hipernasalizadas empleando las muestras de 48 pacientes con LPH. Utiliz las vocales /a/, /i/ y /u/, obteniendo porcentajes de xito del 100%, 88.15% y 80.25%, respectivamente. No obstante la discriminacin es dependiente de la vocal particular y ofrece dificultades con los pacientes postoperados en los que la nasalizacin es menor. En estos casos la amplitud del pico extra no es intensa y puede confundirse con un componente armnico inocuo. Youyi [13] utiliz los MFCCs (Mel-Frequency Cepstral Coefficients) como sistema extractor de caractersticas. Empleo 19 sentencias distintas, cada una pensada alrededor de un fonema distinto, y provenientes de 9 pacientes con LPH. Dos sistemas clasificadores fueron entrenados para detectar voces normales de patolgicas. Las muestras normales las obtuvo de bases de datos que contenan grabaciones de nios sanos de habla inglesa. Uno de los clasificadores implementaba una SVM (Support Vector Machine) y el otro un sistema GMM (Gaussian Mixture Model). La tarea de discriminacin de voces sanas o enfermas tuvo porcentajes de xito del 94.85%. Posteriormente intent una valoracin cuantitativa de hipernasalidad con base a la utilizacin de clases definidas como nasal, explosivas, fricativas y laterales. La definicin de estas clases estuvo basada en los fonemas particulares que eran pronunciados en las frases de muestra. Para validar sus resultados el autor utiliz las lecturas de un nasmetro. Por su parte, Pruthi [7] postula nueve parmetros acsticos que relacionan los formantes con otras caractersticas espectrales de la voz y que son indicativos de la nasalizacin voclica. Para seleccionar estos parmetros utiliz un modelo fsico-matemtico de produccin de voz. Paulatinamente iba complicando el modelo para introducir la contribucin de las fosas nasales asimtricas, los senos paranasales y la apertura regulada del esfnter velofarngeo. Las caractersticas espectrales de las voces nasalizadas aparecen de manera natural al ajustar el modelo a la contribucin completa de la cavidad nasal. Utilizando estos resultados justifica la utilizacin de parmetros acsticos previamente empleados por otros investigadores y sugiere algunos nuevos, entre ellos el conteo de picos para considerar la introduccin de polos extras en el espectro, la medida del centro de masa, el ancho de banda alrededor del primer formante, y otros ms. Sus resultados aparecen como los ms precisos al evaluar su sistema en las bases de datos StoryDB, TIMIT y WS96/97, obteniendo porcentajes de xito de 96.28%, 77.9% y 69.58%, respectivamente. Es destacado que el trabajo de Pruthi intenta detectar la nasalizacin voclica y no slo la hipernasalidad. Las vocales previas a consonantes nasales como /m/ o /n/ son nasalizadas en el habla normal en un grado pequeo que no constituye un defecto. Esta nasalizacin leve implica una complejidad mayor de deteccin por un sistema automtico de reconocimiento. El autor emplea un sistema clasificador SVM (Support Vector Machine) para la deteccin. Adems 19

prueba el sistema con voces del idioma Hind para validar sus resultados. La respuesta positiva de su sistema lo inclina a creer que los nueve parmetros utilizados en conjunto pueden brindar una estrategia fiable para medir la nasalizacin de manera objetiva. En nuestro medio, se destaca el trabajo de investigacin realizado por Castellanos et al [14]. El Sistema Interactivo de Anlisis Automatizado de Voz, Mirla, fue diseado por ellos como asistente en el diagnstico de voz anmala en el Hospital de LPH de Manizales. El sistema utiliza un espacio controlado para el diagnstico de voces anmalas por medio del registro sonoro y visual del paciente (lectura de labios). En el trabajo citado utilizaron 119 muestras de voz provenientes de nios con LPH. Los pacientes grababan las vocales y algunas palabras en una cabina subamortiguada diseada especficamente para el proyecto. Con las muestras se hizo una extraccin de caractersticas extensa que inclua: la determinacin del pitch, el jitter, frecuencias y ancho de banda de los primeros formantes, coeficientes Mel, coeficientes LPC, etc. Resultando en un total de 460 caractersticas acsticas. Utilizaron estrategias de reduccin de dimensionalidad para escoger los parmetros mas prometedores (en la tabla 1 se listan algunos de los seleccionados). Inicialmente utilizaron las clases distintas voz anmala y voz normal para entrenar un clasificador Bayesiano y una SVM (Support Vector Machine), y automatizaron la tarea de decisin. Posterior a esto definieron las clases hipernasal, hiponasal, golpe glotico y soplo respiratorio, y probaron los sistemas clasificadores para estas. Personal mdico del hospital realiz la clasificacin de las muestras segn su clase para fines de entrenamiento y prueba de los sistemas de reconocimiento. La tabla 2.1 resume la revisin bibliogrfica llevada a cabo.

20

Tabla 2.1 Autores y mtricas propuestas

21

Captulo 3 HERRAMIENTAS Y METODOLOGIA


3.1. Software para el Procesamiento Seales de Voz La evaluacin automtica de las mtricas acsticas implicaba la utilizacin de software apropiado. Existen varios programas especializados en anlisis de voz y de acceso libre: WaveSurfer [15]: Es una herramienta Open Source para la visualizacin y anlisis de seales de voz. Posee una interfaz intuitiva y puede ser extendido utilizando plugins. Los plugins permitiran incrementar las capacidades del programa pero deben ser creados utilizando el lenguaje TCL. La ltima versin del programa (WaveSurfer 1.8.5), fue liberada en Noviembre de 2005. En la pgina existe un foro activo donde los usuarios pueden realizar y responder preguntas. ESPS/WAVES [16]: Este software fue creado por Entropic para sistemas Unix y durante aos fue el nico software completo y sofisticado para el anlisis de voz [17, pp. 3]. Consiste en un conjunto de libreras C para el anlisis, procesamiento y visualizacin de seales de voz. Est dividido en dos partes, una de ellas soporta el procesamiento (ESPS) y la otra la visualizacin (WAVES). Entropic distribuy y di soporte al paquete hasta su adquisicin por Microsoft en 1999. En [16] an es posible descargar el cdigo fuente de las libreras para procesamiento pero el modulo WAVES fue intencionalmente desarticulado. De esta forma, si uno desea utilizar ESPS, debe compilar el cdigo y usar slo la interfaz de comandos. Nosotros realizamos la compilacin y probamos algunos comandos pero al no existir ayuda o manuales de ningn tipo pronto abandonamos su uso. Praat [18]: Es un software libre y de cdigo abierto creado y mantenido por dos profesores de la Universidad de msterdam en Pases bajos. La herramienta es multiplataforma pudiendo usarse en Windows, Linux, MacOs, Solaris y Unix. Es posible descargar una versin para instalacin u obtener directamente el cdigo fuente. Posee herramientas de anlisis y sntesis de voz, facilidades para creacin de experimentos donde el usuario escucha diferentes sonidos y puede calificarlos, mdulos para etiquetado y aprendizaje usando redes neuronales, rutinas de estadstica y manipulacin de voz, etc. Para extenderlo es posible usar dos aproximaciones: Por una parte el programa trae una herramienta de edicin de scripts que permite automatizar tareas; si la modificacin es sustancial puede usarse el cdigo fuente y aadir la nueva funcionalidad en cdigo C. El software es continuamente actualizado y los autores ofrecen soporte en la pgina. Existe tambin un foro activo donde se resuelven preguntas. 22

Nosotros escogimos Praat para realizar varios de nuestros anlisis. Aunque las ventajas de este paquete son muchas tambin tiene sus desventajas. A continuacin listamos las ms relevantes de ambas: Ventajas: Al ser un software especializado en el anlisis de seales de voz, muchas de las rutinas requeridas por nosotros para obtener las mtricas estaban ya construidas. Un ejemplo de estas se lista a continuacin: o El rastreo de formantes era natural en Praat. Para utilizarlo bastaba crear un objeto pulsando un botn (o llamando un comando). o Rutinas como calcular el ancho de banda u obtener el cepstrum de una seal eran fcilmente realizadas. o Leer una grabacin y modificarla (extraer parte de ella, remuestrear, convertir a monofnico, etc) eran tareas triviales en Praat. El software es de libre distribucin, no era preciso pagar ninguna licencia ni nada por el estilo. Fcil de instalar, en Windows bastaba hacer doble clic en el ejecutable. Interfaz grfica amigable, las ventanas de edicin y visualizacin de las seales eran intuitivas y fciles de usar. Existe una ayuda incorporada al programa y accesible tambin en Internet.

Desventajas: Algunas de las desventajas y puntos a mejorar en Praat (segn nuestras apreciaciones) se listan a continuacin: Aunque Praat posee herramientas para graficar resultados (una ventana y comandos asociados) esta es todava muy rudimentaria y difcil de utilizar. La creacin de etiquetas en los grficos, manejo de ejes, zoom, etc., deja mucho que desear. Esta falta de flexibilidad fue un problema durante el desarrollo de la tesis y una de las principales razones para buscar complemento en otros programas. Aunque el scripting es una herramienta poderosa que permite extender el programa tiene todava muchas falencias: o Su uso es complicado y requiere una curva de aprendizaje empinada. o El entorno para creacin de scripts es muy rudimentario y complicado de utilizar. o Los comandos y su manejo de argumentos no siempre son intuitivos y ralentiza la programacin.

23

o El entorno es poco robusto y algo tan sutil como un espacio adicional al final de un comando puede acarrear errores que son difciles de detectar. o No existe herramienta de depuracin. o No se consideran tipos de datos importantes como los vectores ni estructuras como las funciones. o La identacin es difcil de aplicar. Algunas herramientas tpicas para el anlisis de voz son difciles de configurar: o La creacin de espectros con la FFT ofrece dificultades en su configuracin. Por ejemplo cambiar parmetros como el orden es difcil y no es claro como debe hacerse. o Los diagramas LPC para toda una grabacin son difciles de crear y visualizar.

Inclinados por las desventajas previas decidimos utilizar un software que supliera estas falencias y nos permitiera complementar los resultados. Escogimos a Matlab y utilizamos la versin licenciada por la Universidad de Antioquia. Matlab nos permiti complementar Praat al ofrecer: Un entorno de programacin sofisticado y fcil de utilizar. Herramientas de despliegue de informacin flexibles, intuitivas y casi ilimitadas.

Como conclusin: Utilizamos Praat en aquellas tareas de procesamiento de seales de voz en las que se mostraba ms adecuado. Los resultados que arrojaba eran retomados por Matlab para terminar el procesamiento y desplegar los resultados. Aun con sus inconvenientes Praat mostr ser una herramienta poderosa en el anlisis de seales de voz. En el apndice A se presenta una evaluacin ms detallada de este recurso. Tambin se comparten all algunos tips tiles resultado de nuestra experiencia al trabajar con el programa. 3.2. Base de Datos de Voz Sana y Voz Hipernasal 3.2.1. Preliminares En el anteproyecto de esta tesis se postulaba la utilizacin de dos posibles fuentes para la base de datos: 1. Una de las fuentes podra provenir del desarrollo del proyecto Plataforma para creacin, anlisis y gestin de un archivo sonoro de pacientes con LPH en la Clnica Noel de Medelln. Para ese entonces el proyecto se encontraba pendiente por aprobacin CODI. Desafortunadamente el proyecto no fue aprobado y los recursos

24

para crear la base de datos propia usando pacientes de la clnica Noel no pudo concretarse. 2. Otra posible fuente para la adquisicin de la base de datos descansaba en la colaboracin del grupo de Control y Procesamiento Digital de Seales de la Universidad Nacional, sede Manizales. El profesor Germn Castellanos fue coinvestigador en el proyecto realizado all en 2005 [14] y cordialmente comparti parte de las grabaciones que haban tomado. Este recurso fue el utilizado para elaborar la tesis y a continuacin se describe de manera ms detallada. 3.2.2. Recurso Disponible Encontrar una base de datos en espaol que recoja muestras de nios con voz hipernasal y nios con voz sana no es una tarea sencilla. El autor de esta tesis tuvo la fortuna de recibir este recurso del grupo de Control y Procesamiento Digital de Seales de la Universidad Nacional, sede Manizales. Las caractersticas de lo obtenido se listan a continuacin: Recibimos inicialmente grabaciones provenientes de 10 nios: 5 sanos (2 nias y 3 nios) y 5 hipernasales (3 nias y 2 nios). Para cada nio se tenan las grabaciones de ocho palabras aisladas (por ejemplo: bola,chuzo, coco, etc.) y un archivo llamado palabras donde los nios decan de manera continua entre 15 y 25 palabras (incluidas las que estaban aisladas). La clasificacin de las muestras como normal e hipernasal fue realizada en la clnica de Manizales en el marco del proyecto: Acstica de la voz en pacientes de la Fundacin Sonrisa y Clnica de LPH de Manizales [14]. Nuestro objetivo inicialmente era trabajar con vocales sostenidas pero este recurso no estaba disponible en esta entrega. Tampoco existan etiquetas que permitieran extraer automticamente los tramos voclicos. As que nos pusimos la tarea de extraer en un archivo distinto cada sonido voclico que fuera claro. 3.2.3 Extraccin de Vocales Usando Grabaciones de Palabras Dado que el recurso obtenido de Manizales no tena grabaciones de vocales aisladas fue preciso obtener estas usando las grabaciones de palabras. El procedimiento seguido utilizando Praat fue este: Cargamos como un long Sound el archivo "palabras.wav". En este se encontraban dichas de manera continua todas las palabras que pronunciaron los nios. No todos decan el mismo nmero de palabras, habiendo entre 15 y 25 palabras por nio. Algunos ejemplos de las palabras son: coco, gol, cocacola, queso, gato, agua, jugo, ojo, baln, abeja, cola, susi, cielo, mano, choza, yoyo, llama. En trminos voclicos las muestras no estaban igualmente 25

distribuidas y sonidos como "a" y "o" eran ms privilegiados que "i", "u" y "e". Numricamente se obtuvieron por nio de 10 a 14 sonidos tipo "o" y "a", en tanto que para los dems vocales se obtuvieron de 1 a 4 sonidos. Luego de cargar el long Sound visualizamos tramos de este para identificar las vocales. Para ello nos auxiliamos del espectrograma. Una vez el sonido voclico era identificado extraamos este en un Sound aparte. Tpicamente obtuvimos sonidos desde 100ms hasta 300ms. 100ms es en realidad un valor muy pequeo. En ese caso cuando se extraen los formantes las ventanas tiles son pocas. Adems en los extremos de cada sonido (inicio y final) no es posible realizar anlisis. Por ello las vocales fueron extradas con un pequeo margen adicional en los bordes. Esto con la esperanza de aumentar el nmero de frames tiles. Guardamos el Sound como un .wav.

Un pantallazo del proceso para extraer una vocal se muestra el la Fig. 3.1

Fig. 3.1 Extraccin manual de un tramo voclico

La parte superior de la figura muestra la seal en el tiempo de la palabra gato. La parte inferior es el espectrograma para esta seal. La parte seleccionada corresponde a la vocal a. Luego de seleccionarla guardbamos la vocal como una grabacin individual. El proceso era repetido para todas las dems vocales. El objetivo de separar los sonidos voclicos era contar con material adecuado para probar las mtricas acsticas. El anteproyecto de la tesis propona inicialmente la utilizacin de sonidos voclicos sostenidos. Dado que estos no fueron obtenidos nos vimos abocados a trabajar con las grabaciones disponibles. Si estas hubieran estado etiquetadas se hubiera facilitado el trabajo pero no fue el caso. Se percibi que en general las vocales de los nios hipernasales eran un poco ms largas que las correspondientes a nios sanos. Entre ms 26

hipernasalidad ms largo el sonido. En algunos nios sanos la duracin de la vocal no superaba los 100ms. En nios hipernasales poda alcanzar los 300ms. Aunque no es una regla exacta la duracin extendida del sonido voclico en voces hipernasales se mostr como una caracterstica recurrente en estas muestras. 3.2.4. Descripcin de la Base de datos con Sonidos Voclicos Luego de extraer los tramos voclicos de las grabaciones de palabras quedamos con los siguientes archivos: 10 carpetas con sonidos voclicos provenientes de 5 nios sanos (2 nias, 3 nios) y 5 hipernasales (3 nias, 2 nios). Cada carpeta tiene alrededor de 30 grabaciones de vocales. Como explique antes los sonidos "a" y "o" son los mas abundantes (cada uno representando un 40% de las muestras). Los sonidos "e","i" y "u" son escasos y slo se obtuvieron entre 1 y 4 muestras por nio. Para efectos de referencia incluyo aqu los nombres que dimos a los archivos de la base de datos. Cada carpeta con las muestras de un nio fue nombrada con la siguiente regla: TipoNio_Sexo_Num_V TipoNio: C H, indica si este nio es normal o tiene voz hipernasal. Sex: nino nina, indica si el paciente es nio o nia Num: Consecutivo para numerar los nios segn sexo V: Letra V para indicar que la carpeta contiene vocales La tabla 3.1 muestra los nombres de las carpetas en la base de datos. Base de Datos H_nina_01_V C_nina_01_V H_nina_02_V C_nina_02_V H_nina_03_V C_nino_01_V H_nino_01_V C_nino_02_V H_nino_02_V C_nino_03_V
Tabla 3.1 Estructura de la base de datos a nivel de directorio

En el material obtenido de Manizales no exista una calificacin objetiva de los niveles de hipernasalidad de las muestras. Nosotros, con el nimo de identificar las muestras ms prometedoras, hicimos una clasificacin subjetiva de las grabaciones disponibles. Las muestras hipernasales fueron clasificadas segn el nivel de hipernasalidad subjetivamente sensado. Las muestras normales fueron clasificadas segn la percepcin de su claridad. La tabla 3.2 muestra esta clasificacin. Para obtener esta calificacin escuchamos las grabaciones donde los nios dicen todas las palabras de manera continua.

27

HIPERNASAL ID sujeto Hipernasalidad H_nina_01 Media H_nina_02 Alta H_nina_03 Baja H_nino_01 Baja H_nino_02 Media

NORMAL ID sujeto Claridad C_nina_01 Alta C_nina_02 Baja C_nino_01 Media C_nino_02 Baja C_nino_03 Media

Tabla 3.2 Calificacin subjetiva de la base de datos segn nio

Dentro de la carpeta de cada nio se tena el conjunto de grabaciones voclicas que haban sido aisladas. El nombre de cada uno de estos archivos obedeci la siguiente regla de formacin: NombreVocalNum_IdNio_TipoVoz NombreVocal: A, E, I, O U Num: Consecutivo para numerar cada muestra de un tipo de vocal IdNio: M: nio, F: nia, y numeral; este es el identificador del nio que pronuci las vocales TipoVoz: N para voz normal, H para voz hipernasal La tabla 3.3 presenta ejemplos de los nombres de algunas grabaciones voclicas.

Una tabla ejemplo, con el nombre de algunas grabaciones para el primer nio con voz normal, se muestra a continuacin:

Una tabla ejemplo, con el nombre de algunas grabaciones para la segunda nia hipernasal, se muestra a continuacin:

C_nino_01 A1_M1_N A2_M1_N E1_M1_N U1_M1_N

H_nina_02 A1_F2_H A2_F2_H E1_F2_H U1_F2_H

Tabla 3.3 Ejemplo de los nombres de las grabaciones disponibles

La razn para incluir esta informacin aqu es que en la metodologa haremos referencia a algunas grabaciones en particular donde fue evaluado determinado parmetro. All nos referiremos a la grabacin segn la nomenclatura antes presentada.

28

Captulo 4 PARAMETROS ACUSTICOS SELECCIONADOS

Con base en la revisin bibliogrfica escogimos seis mtricas acsticas que pensamos tienen el potencial para diferenciar voces sanas de hipernasales. La tabla 4.1 muestra un compendio de estas.

Tabla 4.1 Mtricas acsticas seleccionadas

Estas mtricas tratan de capturar algunas de las variaciones frecuenciales que la nasalidad introduce en el espectro. Un anlisis de su naturaleza as como detalles de su extraccin se ofrece en la siguiente sesin. Tambin se encuentra all una descripcin de las herramientas necesarias para su clculo. 4.1. Sustentacion y Metodologa 4.1.1 Rastreador de Formantes Varias de las mtricas escogidas requeran la deteccin de los formantes a lo largo de toda la muestra. Nosotros utilizamos Praat para obtener un estimado de los cuatro primeros formantes en toda la base de datos. Praat utiliza el diagrama LPC para obtener un estimado de la ubicacin de los formantes. Un ejemplo de lo obtenido para la grabacin A9_F1_N se muestra en la grfica 4.1. En este ejemplo los dos primeros formantes son identificados de manera consistente a lo largo de todo el sonido. Aunque el tercer y cuarto formante son un tanto errticos ninguna de nuestras mtricas requiere su ubicacin precisa. La razn para calcularlos es que Praat sugiere computar al menos 29

dos formantes ms de los necesarios y as aumentar la precisin en la ubicacin de los requeridos.


5000

Formant frequency (Hz)

4000

3000

2000

1000

0 0 Time (s) 0.09

Fig. 4.1 Respuesta del rastreador de formantes en Praat para A9_F1_N

Si la calidad de la grabacin es muy defectuosa Praat puede fallar en tramos de la seal y no obtener los formantes de manera correcta. Es decir F1 y F2 pueden no ser hallados para un tramo de la vocal. Un ejemplo se presenta en la Fig. 4.2 donde se ha analizado la grabacin A3_F2_H.
5000

Formant frequency (Hz)

4000

3000

2000

1000

0 0 Time (s) 0.17

Fig. 4.2 Respuesta del rastreador de formantes en Praat para A3_F2_H

En este caso F1 est ausente en un tramo de la seal y presenta valores errticos en otros tramos. En nuestros algoritmos nosotros controlamos estos casos dando valores adecuados a los formantes no hallados. Es decir se asignaron lmites inferiores y superiores a los valores de F1 y F2. Tambin encontramos que para obtener un buen objeto formantes con Praat era preciso convertir la grabacin a monofnico y remuestrear. La importancia de este procedimiento se patenta en las Fig. 4.3. y Fig. 4.4. En la primera de ellas no convertimos a monofnico ni remuestreamos (el sonido usado fue uno de los frames de A10_F1_H). Se aprecia que en la Fig. 4.3 el estimativo para F1 es correcto. El primer pico en la respuesta es un polo extra debido a hipernasalidad. F1 est a los 800Hz aproximadamente. Para la vocal /a/ se espera F2 alrededor de 30

1500Hz en voces infantiles. Praat no sabe que esta es una /a/ y estima erradamente que F2 esta en los 2500Hz. Por observacin un humano puede detectar que en realidad F2 esta alrededor de los 1300Hz y es el pico siguiente a F1.
4 -10 F1 F2

-15

-20

-25

-30

-35 0 500 1000 1500 2000 2500 3000 3500 4000

Fig. 4.3 Diagrama LPC y ubicacin de F1 y F2 para un frame de A10_F1_H (stereo)

Si aplicamos en Praat una conversin a monofnico y remuestreamos hasta 8Khz el estimado para los formantes es como aparece en la Fig. 4.4.
4 -10 F1 F2

-15

-20

-25

-30

-35

500

1000

1500

2000

2500

3000

3500

4000

Fig. 4.4 Diagrama LPC y ubicacin de F1 y F2 para un frame de A10_F1_H (monofnico)

En este caso la posicin para F2 es ms precisa auque F1 ha tenido que pagar por ello. La razn es que el rastreador vacila entre los dos primeros picos y por razones de continuidad entre frames escoge un valor intermedio. No obstante su inclinacin al valor real es apreciable. Nosotros convertimos inicialmente todas las grabaciones a monofnico y remuestreamos a 8khz. Luego obtuvimos los objetos formantes usando los siguientes parmetros en la ventana de configuracin de Praat: Max. Number of formants: 5 Maximum formant(Hz): 8000 Window length: 0.015 Pre-emphasis from(Hz): 50 Esto significa que buscbamos hasta 5 formantes en el rango 0 8KHz con ventana de 30ms (doble de valor 15ms) y aplicando un pre-nfasis desde los 50 Hz.

31

4.1.2. Detector de Picos Otra de las herramientas necesarias en el clculo de varias mtricas fue un detector de picos. Nosotros usamos un detector programado en Matlab y compartido por su creador en [19]. Una prueba de este programa usando datos ejemplo se muestra en la Fig. 4.5.

Fig. 4.5 Prueba del detector de picos

El algoritmo usa el cruce por cero de la derivada suavizada del conjunto de datos. Tiene cuatro parmetros que pueden ser ajustados para cumplir requerimientos especficos. Tiene tambin la opcin de retirar ruido de fondo de la seal. Para cada pico hallado devuelve su amplitud, ubicacin y ancho de banda. 4.1.3. Disminucin de la Amplitud del Primer Formante 4.1.3.1 A1 H1 En las voces hipernasales la amplitud del primer formante A1, disminuye con relacin a su amplitud en las voces sanas. Una forma de medir esta disminucin es calcular su diferencia con relacin al primer armnico cuya amplitud es la misma en ambos tipos de voces [7, pp. 115]. Para estimar la amplitud del primer armnico H1, utilizamos el espectro obtenido con la funcin fft de Matlab. Para que este espectro fuera claro fue preciso realizar un filtro de preenfasis y un enventanado adecuado en cada frame. Filtro de Preenfasis: Este filtro es motivado por el hecho de que el espectro de la seal de voz decae 6db/dec [6, pp. 221]. As para que el espectro sea ms plano las componentes altas se privilegian con un filtro de la forma 1 - az-1. Nosotros escogimos a = 0.97. Enventanado de la seal: Para realizar el anlisis en la seal de voz se utilizan pequeos tramos de ella del orden de 30ms. Para 32

disminuir el efecto en los bordes se utiliz una ventana de Hamming. Normalizacin de Frames: Para que los resultados de las mtricas consideren de manera coherente la forma relativa de la seal mas que sus variaciones de amplitud entre frames se normaliza cada frame con relacin al valor ms alto en l.

Vamos a patentar la importancia del preenfasis usando uno de los frames de voz hipernasal. En la Fig. 4.6 aparece en la parte superior el espectro de A10_F1_H en uno de sus frames sin aplicar el filtro de preenfasis. Abajo est el diagrama LPC de la misma seal. En este aparece un pico alto aproximadamente a 250Hz (un polo nasal) que afecta la deteccin de los formantes orales a 900Hz y 1250Hz aproximadamente. Los formantes orales aparecen con amplitud disminuida con relacin al pico extra a 250Hz.
40 20 0 -20 -40

500

1000

1500

2000

2500

3000

3500

4000

10 0 -10 -20 -30 -40 0 500 1000 1500 2000 2500 3000 3500 4000

Fig. 4.6 Espectro sin aplicar prenfasis y diagrama LPC

Si aplicamos un filtro de preenfasis con a = 0.97 obtenemos para el mismo frame lo mostrado en la Fig. 4.7.
30 20 10 0 -10 -20 0 500 1000 1500 2000 2500 3000 3500 4000

0 -10 -20 -30 -40

500

1000

1500

2000

2500

3000

3500

4000

Fig. 4.7 Espectro luego de aplicar prenfasis y diagrama LPC

33

En este caso todo el espectro se ha aplanado y ahora las amplitudes de F1 y F2, los dos formantes orales, y la amplitud del pico extra a 250Hz son comparables. De esta forma el rastreador de formantes tendra una oportunidad mayor de hallar los formantes orales. En el problema actual de hallar H1, el prenfasis beneficia la discriminacin de los formantes orales de todos los picos debidos al contenido armnico de la seal. Para reconocer la utilidad del enventanado consideremos el ejemplo, obtenido de A10_F1_N, usando un frame de 15ms de longitud.
40 20 0 -20 -40

500

1000

1500

2000

2500

3000

3500

4000

20

-20

-40

500

1000

1500

2000

2500

3000

3500

4000

Fig. 4.8 Espectro antes y despus de aplicar enventanado

En la parte superior de la Fig. 4.8., aparece el espectro usando una ventana rectangular. En la grfica inferior hemos usado una ventana de hamming para extraer el frame y luego calcular su espectro. Determinar el primer armnico en la primera grfica es muy complicado dado el excesivo nmero de picos. En la segunda grfica el contenido armnico es ms claro y obtener H1 puede ser ms sencillo. Utilizamos 3 criterios para escoger H1 en el espectro: 1. Frecuencia: Puesto que los armnicos representan el pitch se espera que H1, para la voz de un nio, sea superior a 150Hz y menor a 400Hz. 2. Amplitud: Es posible que existan picos espurios debidos al enventanado o al ruido. Para evitar una falsa deteccin se impone un lmite a la amplitud esperada de H1. Analizando varias grabaciones escogimos el valor tentativo de -25 db. 3. Ancho de banda: Se espera que el primer armnico sea un pico representativo. Al analizar varias grabaciones escogimos el lmite inferior para el ancho de banda como 40 Hz. 34

Un ejemplo de la localizacin de H1 se muestra en la Fig. 4.9., la grabacin analizada fue O8_M2_H.


11 30 20 10 0 -10 -20 -30 -40 -50

H1

500

1000

1500

2000

2500

3000

3500

4000

Fig. 4.9 Deteccin del primer armnico

Observe que aunque existen dos picos previos a H1 estos no representan el primer armnico. Las razones son: su baja amplitud, su baja frecuencia y su bajo ancho de banda. Un ejemplo de la evaluacin de A1 H1 para las grabaciones A10_F1_N y A10_F1_H se muestra en la Fig. 4.10.
35

30

25

20

15

10

-5

-10

10

15

20

25

Fig. 4.10. A1 H1 para las grabaciones A10_F1_N y A10_F1_H

La grfica azul son los valores de la mtrica para la voz sana. La curva roja son los correspondientes para la voz hipernasal. Como se esperaba en general los valores de A1 H1 son mayores en la voz sana, donde el primer armnico es casi siempre mucho menor que el primer formante. En la voz hipernasal H1 es a menudo comparable a A1. 4.1.4. Polos Extras a Bajas Frecuencias 4.1.4.1 A1 P0 y A1 P1 Debido al acople con los senos paranasales se espera la aparicin de un pico extra previo al primer formante [7, pp. 96]. La amplitud P0 de este 35

pico con relacin a la amplitud A1 del primer formante se postula como una mtrica de nasalizacin [5,7]. Debido tambin al acople con la cavidad nasal se espera la aparicin de un pico extra posterior al primer formante [7, pp. 96]. Esto sugiere la utilizacin de la mtrica A1 P1, siendo P1 la amplitud de este pico extra. En nuestras exploraciones de estos picos extras encontramos que su aparicin y amplitud es en extremo imprecisa. La deteccin de P0 y P1 requiere un algoritmo que de cuenta de este comportamiento no recurrente. En su tesis Pruthi [7] postula un algoritmo que puede ser usado para detectar estos dos picos. Nosotros implementamos en Matlab este cdigo y lo probamos en nuestra base de datos. El algoritmo de Pruthi [7, pp. 189], se presenta a continuacin en una etapa previa de pseudo cdigo para visualizarlo mejor: Algoritmo de Pruthi simplificado: 1. 2. 3. 4. 5. 6. Obtener F1 y F2 del rastreador de formantes. Asignar lmites e inicializar valores de variables locales (P0, P1). Ajustar calculo F1 a pico mas cercano. Ajustar calculo F2 a pico mas cercano. Si hay un pico previo a F1 este es P0. Si no hay picos entre F1 y F2: a. Si hay mas picos en el espectro P1 es el pico siguiente a F2 7. Si solo hay un pico entre F1 y F2: a. Si no ha hallado P0 este pico es P0 y P1 es el pico siguiente a F2 b. Si ya hall P0 este pico es P1 8. Si hay mas de un pico entre F1 y F2: a. Si no ha hallado P0 pico siguiente a F1 es P0 y P1 es el pico siguiente a P0 b. Si ya hall P0 pico siguiente a F1 es P1 9. Calcular A1 P0 y A1 P1 El objetivo del algoritmo es etiquetar los picos F1, F2, P0 y P1, es decir formantes primero y segundo, y los dos picos extras principales alrededor de F1. El algoritmo recibe los valores de F1 y F2 devueltos por rastreador de formantes y los usa como punto de partida para mejorar su ubicacin, escogiendo mejor los picos ms cercanos a estos (en tanto se encuentren en el rango adecuado). Nosotros implementamos el algoritmo de Pruthi en Matlab; la Fig. 4.11 es una prueba sobre uno de los frames de A10_F1_H.

36

4 -10 -15 -20 -25 -30 -35 0 500 1000 1500 2000 2500 3000 3500 4000 P1 P0
F2 F1

F1 F2

Fig. 4.11. Deteccin de P0 y P1 en un frame de voz hipernasal

La lnea vertical azul es el estimado del primer formante devuelto por Praat, la linea verde es el estimado para F2. Esta es una muestra hipernasal y segn la grfica uno podra esperar que el valor absoluto de A1 P0 sea mayor a 0. Similarmente el valor absoluto de A1 P1 sera superior a 0 en voces hipernasales. La Fig. 4.12., muestra el resultado de hacer la prueba sobre un frame de A10_F1_N, una grabacin de voz sana.
1 -15 -20 -25 -30 -35 0
F1 F2

P0 P1

F1 F2

500

1000

1500

2000

2500

3000

3500

4000

Fig. 4.12. Deteccin de P0 y P1 en un frame de voz sana

En este caso las mtricas A1 P0 y A1 P1 arrojaran cero al estar ausentes los picos extras. Calculamos la mtrica A1 P0 para todos los frames de las grabaciones A10_F1_N y A10_F1_H, la respuesta obtenida se muestra en la Fig. 4.13.
8 6

-2

-4

10

15

20

25

Fig. 4.13. Mtrica A1 P0 para las grabaciones A10_F1_N y A10_F1_H

La lnea azul son los valores para voz sana y la roja los valores para voz hipernasal. La diferencia fue calculada usando los valores en decibeles 37

del espectro LPC. Segn este grfico en la muestra sana la amplitud de F1 es siempre mayor o igual que la amplitud del pico extra previo. En la muestra hipernasal la amplitud de F1 es casi siempre igual o menor a la amplitud del pico extra previo. Segn el anlisis previo usando slo los frames se esperaba A1 P0 nulo en la voz sana y diferente de cero en la voz hipernasal. La razn para el desacuerdo es que, aun en voces sanas, aparece un pico extra previo a F1. En el sonido oral analizado este pico extra resulto casi siempre muy pequeo lo que elevo el valor de A1 P0. En la voz hipernasal el pico extra previo a F1 fue casi siempre mayor al primer formante lo que volvi negativa la mtrica A1 P0. Por su parte la mtrica A1 P1 sobre las 2 grabaciones consideradas tuvo la respuesta mostrada en la Fig. 4.14.
8 7

-1

-2 0

10

15

20

25

Fig. 4.14. Mtrica A1 P1 para las grabaciones A10_F1_N y A10_F1_H

Esto significa que la muestra sana no tuvo pico extra posterior a F1 en ninguno de sus frames. La muestra hipernasal contiene un pico extra posterior a F1 que casi siempre es menor a la amplitud del primer formante. 4.1.4.2. CTEO La correlacin sobre perfiles Teager de seales pasabajas y pasabanda, es una mtrica sugerida por Cairns [8] como detector de los polos extras presentes en el espectro de la voz hipernasal. Para comprender esta mtrica conviene que revisemos en que consisten los perfiles Teager y como hallarlos en una seal de voz. Los perfiles Teager son el resultado de obtener la energa Teager sobre una seal. La energa Teager es un concepto muy interesante que fue expuesto por primera vez de manera clara por Kaiser en [20]. En su paper lo primero que hace el autor es patentar que la energa en un sistema mecnico oscilatorio es proporcional al cuadrado de la amplitud por la frecuencia y no slo al cuadrado de la amplitud como se utiliza habitualmente en procesamiento de seales. 38

En smbolos: Si se tiene una seal oscilatoria dada por:

x(t ) = A cos(t + )
La energa responsable de producir la oscilacin es:

EA2 2
Si se utiliza la versin muestreada de x(t) tenemos:

x(n) = A cos(n + )
Siendo
= f fs

Donde f es la frecuencia anloga de la seal en Hertz y f s es la frecuencia de muestreo. Existen 3 incgnitas en x(n): A, y . Por tanto se requieren 3 ecuaciones para resolverlas. Si se considera la funcin en tres tiempos distintos, digamos n, n 1 y n + 1, podemos obtener tres ecuaciones dadas por x(n), x(n - 1) y x(n + 1). La motivacin en esto es encontrar una funcin que sea proporcional a A22 y por tanto sirva como medida de la energa necesaria para producir la oscilacin. Luego de realizar algunas operaciones trigonomtricas sobre las 3 ecuaciones x(n), x(n - 1) y x(n + 1) se deduce la relacin:
A2 sin 2 () = x( n) 2 x (n + 1) x( n 1)

En este punto es preciso usar una aproximacin, a saber x sin(x) para valores pequeos de x. Con ello se obtiene finalmente:
A2 2 = x(n ) 2 x( n + 1) x (n 1)

La aproximacin es valida, con un 11% o menos de error, si


= f 1 fs 8

39

Luego es preciso que fs > 8f, es decir la frecuencia de muestreo debe ser ocho veces la frecuencia anloga de la seal. Con base en lo anterior la Energa Teager de una seal se defini como:

En este punto uno podra pensar que basta garantizar fs mayor a 8 veces la mxima frecuencia contenida en la seal para calcular de manera segura la energia Teager; por ejemplo en voz, considerando 5Khz como lmite de frecuencias tiles, entonces bastara muestrear la seal a 40Khz. Desafortunadamente no es el caso ya que la energa Teager tiene varios inconvenientes. El ms serio es que no se cumple el principio de superposicin. As si se tiene la suma de 2 seales sinusoidales de amplitudes A1 y A2 y frecuencias 1 y 2 respectivamente, la energa Teager no ser simplemente la suma de energas de cada seal, en vez de ello se obtendr:
2 2 E12 = A121 + A2 2 + (Trminos cruzados) 2

Para minimizar el efecto de los trminos cruzados Kaiser [20] sugiere utilizar un banco de filtros, calcular la energa Teager a la salida de cada uno y luego sumar los resultados. En el tema particular de deteccin de hipernasalidad encontramos que la aproximacin de Cairns fue completamente distinta, ya que l piensa que los trminos cruzados pueden ayudar a cuantificar la patologa. Por ello en vez de filtrarlos los espera ansioso en el perfil. La manera precisa en que aparecen no es analizada en su trabajo, l simplemente espera que la funcin de correlacin mida su presencia [8, pp. 2]. Para comprender esto esbocemos de manera precisa las ideas de Cairns: La seal obtenida de voz normal contiene slo formantes, podemos representar esto como:
S NORMAL = F ( )

Donde F() representa los formantes orales. Por su parte la voz hipernasal contiene formantes, antiformantes y formantes nasales:
S NASAL = F ( ) AF ( ) + NF ( )

Aqu AF() representan los antiformantes (el signo menos da cuenta de que los antiformantes aparecen como valles en el espectro) y NF() son los formantes extras nasales. 40

Si se filtra la voz normal con un pasabajas apropiado podemos extraer el primer formante:

S NORMAL LPF ( ) = F1 ( )
Aplicar el mismo filtro a la voz hipernasal dejara trminos adicionales a F1, a saber algunos antiformantes y algunos formantes nasales:
S NASAL LPF ( ) = F1 ( ) A' F ( ) + N ' F ( )

Si en vez de utilizar un pasabajas usamos un pasabanda alrededor de F1 obtendremos slo el primer formante tanto para la voz normal como para la voz hipernasal:
S NORMAL BPF ( ) = F1 ( ) S NASAL BPF ( ) = F1 ( )

Con el nimo de explotar esta asimetra la energa Teager es calculada sobre las seales filtradas, tanto pasabajas como pasabanda, y luego se mide la correlacin en las respuestas. Dado que el filtrado pasabajas sobre la voz hipernasal dejar una seal multicomponente, la energa Teager tendr una contribucin importante de trminos cruzados. Es decir los perfiles Teager de la seal pasabajas y pasabanda sobre la voz hipernasal sern sustancialmente distintos. Por su parte se espera que en la voz normal la energa Teager tenga un perfil similar tanto para la seal pasabajas como para la seal pasabanda, por tanto la correlacin en este caso tendr un valor cercano a 1. De esta forma entre ms bajo el valor de correlacin para los perfiles Teager de las seales pasabajas y pasabanda entonces ms hipernasal ser la seal. Volviendo al artculo de Kaiser [20] otra de sus sugerencias fue filtrar el perfil TEO. La razn es que una desventaja de la Energa Teager es su sensibilidad al ruido. Por tanto se espera que el perfil contenga muchos picos resultado de esta caracterstica. Nosotros chequeamos esta sensibilidad al ruido usando un sonido de prueba. Este consista en la concatenacin de 3 sinusoidales a frecuencias 1.2KHz, 500Hz y 2KHz con duracin de 25ms y amplitud constante 0.5; el perfil de esta seal se muestra en la Fig. 4.15.

41

Fig. 4.15. Perfil Teager de seales sinusoidales puras

Este grfico corresponde a lo esperado (E 2). Si modificamos las seales aadiendo ruido Gaussinano de amplitud 0.05 (10% de la amplitud) se obtiene lo mostrado en la Fig. 4.16.

Fig. 4.16. Perfil Teager de seales sinusoidales contaminadas con ruido

El perfil TEO (Teager Energy Operador) es absolutamente ilegible. Si filtramos con un pasabajas hasta 3Khz se obtiene lo mostrado en la Fig. 4.17.

Fig. 4.17. Perfil Teager de seales sinusoidales contaminadas con ruido filtrado a 3khz

Aqu es posible discernir, aunque con dificultad, los 3 niveles de energa. La Fig. 4.18 muestra el resultado luego de filtrar con un pasabajas hasta 1Khz.

42

Fig. 4.18. Perfil Teager de seales sinusoidales contaminadas con ruido filtrado a 1khz

Aunque existe una mejora apreciable queda claro que el operador es muy vulnerable al ruido. Esta desventaja plantea una alerta en su uso sobre seales de voz, donde inevitablemente, algn nivel de ruido esta presente. Ante lo observado se vuelve imperativo filtrar el perfil antes de hacer cualquier uso de l. Ajustar los parmetros para obtener un perfil Teager consistente a lo largo de un sonido voclico mostr ser una actividad difcil. Nosotros probamos cambiando el ancho de ventana con valores 10, 20 y 30ms. Obtuvimos el mejor resultado usando 30ms. Tambin variamos el filtro pasabajas aplicado al perfil y obtuvimos el mejor resultado filtrando hasta 500Hz. Algunos ejemplos de lo obtenido se muestran en las Fig. 4.19.
5.30310-6

1.39710-5

2.17510-5

3.26710-8 0 Time (s) 0.03

0 -4.47810-7 0 Time (s) 0.03

0 -8.81210-7 0 Time (s) 0.03

Fig. 4.19. Perfil TEO, ventana a 30 ms, Sound A10_F1_N a los 68ms, filtro perfil 0100Hz (izq), 0-500Hz (centro), 0-1000Hz (der).

Utilizando un filtro para el perfil de 0 500Hz, obtuvimos las respuestas ms consistentes a lo largo de todo un sonido. Un ejemplo sobre diferentes frames de la grabacin A10_F1_N, con paso de 5ms, se muestra en la Fig. 4.20
1.39710 -5

1.22910-5 1.72710

1.81410 -5

0 -4.47810 -7 0 Time (s ) 1.90210 -5 0.03

0 -5.1110 -2.73210 -7

0 Time (s)

0.03

0 -2.50210 -7 0 Time (s) 0.03

1.58510 -5 1.64110

1.37210 -5

0 -3.04610 -7 0 Time (s ) 0.03

-4.92210 -7 -1.63910 0

0 -1.2510 -7

0 Time (s)

0.03

0 Time (s)

0.03

Fig. 4.20. Consistencia perfil TEO a lo largo de una grabacin

43

Cuando calculamos el perfil Teager de las versiones pasabajas y pasabanda de diferentes seales obtuvimos casi siempre respuestas muy similares. Un ejemplo se muestra en la Fig. 4.21.
1.2

0.8

0.6

0.4

0.2

-0.2

50

100

150

200

250

Fig. 4.21. Perfiles Teager para seales pasabajas y pasabanda

La grfica a la izquierda son los perfiles Teager en un frame de una muestra hipernasal (A10_F1_H), los de la derecha son los correspondientes para una voz sana (A10_F1_N). Las curvas rojas son los perfiles TEO de la seal pasabajas. Los azules de la seal pasabandas. Aunque perceptivamente la diferencia es mayor en la voz hipernasal la correlacin cruzada arrojaba en general valores muy altos. Hemos usado los valores mximos del vector devuelto por xcorr en Matlab. En el ejemplo mostrado los valores obtenidos estuvieron en ambos casos por encima de 0.9. La Fig. 4.22 muestra la respuesta CTEO (Correlation Teager Energy Operator) para todos los frames de A10_F1_N y A10_F1_H.
1 0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

10

15

20

25

30

Fig. 4.22. CTEO para grabaciones A10_F1_N y A10F1_H

Aunque en general la curva azul, correspondiente al CTEO para la voz sana, est por encima de aquella correspondiente a la voz hipernasal la diferencia es muy pequea. Una razn para ello es que el algoritmo de correlacin es un procedimiento muy robusto. De hecho es capaz de detectar una seal cuando est fuertemente contaminada por ruido y desplazada con respecto a la original. En nuestros perfiles las diferencias son pequeas y el algoritmo de correlacin cruzada devuelve un valor alto. Una posible solucin sera usar un algoritmo ms sensible a pequeos cambios o de manera equivalente uno menos bueno en detectar seales distorsionadas.

44

4.1.4.3 P250v y P250m Vijayalakshmi et al. [1] postulan en su trabajo que el espectro de las voces hipernasales contiene un pico pronunciado a 250Hz que est ausente en las voces normales. En nuestras exploraciones de las grabaciones encontramos a menudo la presencia de este pico aunque no siempre con una amplitud considerable. Ahora, para detectar de manera confiable este pico, los autores sugieren utilizar el espectro obtenido con las funciones de retraso modificadas. La razn de utilizar un mtodo nuevo de anlisis espectral es que las tcnicas clsicas, como el LPC, pueden fundir picos que estn muy cercanos entre si. Las funciones de retraso poseen la propiedad de superposicin en frecuencia que las habilita para discriminar de manera ms fcil picos cercanos en el dominio frecuencial. Esto es, se adquiere un incremento en resolucin al utilizar estas funciones. Para entender porque estas funciones obedecen la superposicin en frecuencia miremos con ms detalle su formulacin [9-12]: Sea x(n) una seal en el tiempo con transformada de Fourier X(). X() es una funcin compleja que puede ser expresada en trminos de su magnitud y fase:
X ( ) = X ( ) e j ( )

Donde () es la funcin fase, o simplemente fase del espectro. Ntese que si X() es una seal multicomponente entonces es el producto de cada contribucin. Si, por ejemplo, X() = X1()X2() se cumple que:
X ( ) = X 1 ( ) X 2 ( ) e j ( 1 ( ) + 2 ( ))

En la expresin anterior se aprecia que las funciones fase se suman en tanto que las magnitudes se multiplican. Si se definiera una funcin lineal en trminos de la fase se podra argumentar que para una seal multicomponente la respuesta es la suma de las contribuciones individuales. Esto es, se cumplira el principio de superposicin para la funcin lineal que involucra la fase. Volvamos a la transformada de Fourier expresada en magnitud y fase:
X ( ) = X ( ) e j ( )

Con el nimo de aislar la fase podemos tomar el log a ambos lados:


Log ( X ( )) = Log ( X ( ) ) + j ( )

45

Por conveniencia se define la funcin de retraso como:

T ( ) =

d ( ) d

Recuerde que la derivada de la transformada de Fourier X() esta relacionada con la funcin en el tiempo x(n) as:
F{nx(n )} = dX ( ) d

Con este recurso es posible encontrar una expresin para calcular T() usando la funcin x(n), dicha expresin es:

T ( ) =

X R ( )YR ( ) + X ( ) I Y ( ) I X ( )2

Donde los subndices R e I estn por parte real e imaginaria, y donde

y(n) = nx(n)
La funcin T(), llamada funcin de retraso, es muy sensible al ruido presente en x(n) y a la distorsin producida por el enventanado. T() es ruidosa y llena de picos. Para solventar este inconveniente Murthy et al en [11], sugieren una modificacin al clculo de estas funciones. El algoritmo propuesto por ellos es el siguiente: 1. Sea x(n) las muestras objetivo 2. Calcule: a. F{x(n)} = X() b. F{nx(n)} =Y() 3. Calcular el Cepstral Smooth de X() y llamarlo S()

X ( )YR ( ) + X ( ) I Y ( ) I 4. Computar: Tx ( ) = R S ( )2 5. Ajustar manualmente y , ambos son valores menores que 1.


La funcin Tx() se conoce como funcin de retraso modificada (MDF). Nosotros implementamos en Praat el algoritmo que calcula estas funciones y lo probamos con una vocal sinttica. La Fig. 4.23 muestra el resultado.

46

Fig. 4.23. MDF en un frame de una vocal sinttica

La grafica roja es el LPC de orden 24 sobre un frame de la vocal. La grafica negra corresponde a la respuesta de las MDF (Modified Delay Function) en el mismo rango de frecuencia. El incremento en resolucin es apreciable, apareciendo los formantes ms fcilmente discernibles. Para aumentar aun ms la resolucin a bajas frecuencias Vijayalaskmhi [1, pp. 625] sugiere filtrar con un pasabajas hasta el primer formante. Nosotros utilizamos el rastreador de formantes de Praat para obtener un lmite para el fitro y empleamos ventanas de 30ms. Una de las grficas obtenidas usando A2_M2_N y A3_M1_H se muestra en la Fig. 4.24

Fig. 4.24. MDF en un frame de A2_M2_N y A3_M1_H

La grfica roja corresponde a las MDF de la voz hipernasal, la azul son las funciones correspondientes para la voz normal. Aunque el pico a 250Hz no es muy pronunciado se nota su existencia. Las MDF mostraron ser muy consistentes a lo largo de todo un sonido. La Fig. 4.25 muestra las MDF a lo largo del sound A13_M1_N.

A13-M1-N

Fig. 4.25 MDF a lo largo de A_13_M1_N

47

Para calcularlo usamos frames de 30ms, paso de 5ms, un resample a 8K y alfa = gama = 0.9. Las MDF poseen dos parmetros de ajuste, alfa y gama, que permiten refinar el anlisis dada una aplicacin particular. Nosotros hicimos varios experimentos tratando de encontrar los valores apropiados de estos parmetros. Experimento 1: Muestra Hipernasal A11_F2_H, 43ms, ancho ventana 30ms, filtro 100-1k

Gama 0.9

Alfa 0.7 negro 0. 8 rojo 0.9 verde 0.98 azul

Fig. 4.26 Gama = 0.9 Alfa = 0.7 0. 8 0.9 0.98 -> (negro, rojo, verde, azul) (A11_F2_H)

Como se muestra en la Fig. 4.26 incrementar alfa hace que el pico a 250Hz disminuya. Puesto que nuestro deseo es contrario creamos una nueva variacin ilustrada en la Fig. 4.27.

Gama 0.9

Alfa 0.7 negro 0. 6 rojo 0.5 verde 0.4 azul

Fig. 4.27 Gama = 0.9 Alfa = 0.7 0. 6 0.5 0.4 -> (negro, rojo, verde, azul) (A11_F2_H)

En este caso se aprecia que el pico a 250Hz se incrementa cuando alfa disminuye pero los picos adyacentes tambin aumentan lo que podra

48

complicar la deteccin de F1 (El pico ms alto de todos). Disminuir ms a alfa deteriora la respuesta. Si se realiza la variacin de gama mientras alfa esta fijo se puede argumetar que a medida que gama aumenta el pico a 250Hz baja. A medida que gama disminuye el primer formante baja en tanto que el pico a 250Hz no sube ms. Conclusiones experimento 1, alfa y gama en voz hipernasal: Pensamos que un punto optimo de Gama esta entre 0.7 y 0.8. Si gama es menor a 0.7 F1 baja mucho y el pico a 250Hz no sube ms. Si gama es mayor a 0.8 el pico a 250Hz es muy pequeo en tanto que F1 permanece constante en amplitud. En cuanto a alfa un valor ptimo estara entre 0.5 y 0.6. Si alfa es menor a 0.5 los picos intermedios crecen mucho y la respuesta pronto se deteriora. Si alfa es mayor a 0.6 el pico a 250Hz es un poco ms bajo. No obstante an en 0.6 los picos intermedios son altos. Si hubiera algn problema detectando el pico a 250Hz por la presencia de estos picos secundarios convendra elevar el valor de alfa. En cuanto a F1 fue completamente insensible a las variaciones de alfa. Intentar analizar una variacin ms fina (por ejemplo gama = 0.72, 0. 74, 0.76, etc) es innecesario dado que en realidad solo estamos usando un frame de una grabacin de un conjunto de grabaciones. Considerando la naturaleza variable de las muestras de voz estos valores se escogen como estimativos vlidos y constituyen slo un buen punto de partida.

Experimento 2: Muestra Normal A10_F1_N, 43ms, ancho ventana 30ms, filtro 100-1k Gama Alfa 0.7 Negro 0. 8 Rojo 0.9 0.9 Verde 0.98 Azul

Fig. 4.28. Gama = 0.9 Alfa = 0.7 0. 8 0.9 0.98 -> (negro, rojo, verde, azul) (A10_F1_N)

La Fig. 4.28 muestra que los picos secundarios disminuyen levemente cuando alfa aumenta.

49

Gama 0.9

Alfa 0.6 Negro 0. 5 Rojo 0.4 Verde

Fig. 4.29. Gama = 0.9 Alfa = 0.6 0.5 0.4 -> (negro, rojo, verde)(A10_F1_N)

La Fig. 4.29 muestra que la salida se deteriora cuando alfa disminuye. Similarmente variar gama nos muestra que en general los picos secundarios disminuyen si el parmetro aumenta. Si gama aumenta la inclinacin de los picos secundarios tambin disminuye, excepto cuando gama es muy cercano a uno momento en el que surgen picos secundarios extras despus de F1. Conclusiones, voz normal: Para que la respuesta MDF de voz normal sea limpia (Esto es F1 claro y picos secundarios bajos y montonos) se recomienda alfa y gama alrededor de 0.9. En general valores altos de estos parmetros mejoran la respuesta. Ahora es evidente que existen intereses opuestos entre la respuesta de las MDF para la voz hipernasal y la voz normal. En el experimento 1, con voz hipernasal, obtuvimos que un valor de alfa entre 0.5 y 0.6 con un valor de gama entre 0.7 y 0.8 beneficiaba la respuesta al incrementar el pico a 250Hz. No obstante en la voz normal estos valores crean una respuesta donde los picos secundarios son altos e inclinados. La voz normal prefiere valores de alfa y gama altos. Fue preciso encontrar un punto de equilibrio entre ambas intenciones, la tabla 4.2 muestra la seleccin de alfa y gama. Voz hipernasal 0.6 0.7 Equilibrio 0.8 0.85 Voz normal 0.9 0.9

Alfa Gama

Tabla 4.2. Seleccin de alfa y gama como equilibrio entre intereses opuestos

Los valores alfa = 0.8 y gama = 0.85 se escogen privilegiando un poco la respuesta clara en la voz normal. La Fig. 4.30 muestra las respuestas MDF al usar los parmetros previos sobre un frame de las grabaciones que hemos estado analizando.

50

Fig. 4.30. MDF frame de A10_F1_N y A11_F2_H

La grfica roja representa las MDF para A11_F2_H y la azul la correspondiente para A10_F1_N, ambas en el frame 43ms con filtro 1001k, alfa = 0.8 y gama = 0.85. Otra forma de visualizar el pico extra consiste en graficar conjuntamente las MDF en cada frame a lo largo de toda una grabacin. Si graficamos esto para las dos grabaciones A10_F1_N y A11_F2_H obtenemos (paso 5ms, ventana 30ms, alfa = 0.8, gama = 0.85) lo mostrado en la Fig. 4.31. Las graficas rojas corresponden a las MDF para la voz hipernasal. Ntese que los extremos del sound no deben ser considerados para el clculo de la mtrica. Por ejemplo la respuesta de la voz hipernasal tarda alrededor de 5 frames en estabilizarse. De manera similar los ltimos 3 frames no son confiables para detectar el pico extra.

Fig. 4.31. MDF a lo largo de las grabaciones A10_F1N y A11_F2_H

Revisemos ahora el algoritmo y la mtrica propuesta por Vijayalaksmhi et al [1, pp. 626] para detectar y medir el pico extra a 250Hz: 1. Dadas las MDF calcular la amplitud de todos los picos 2. Escoger los dos mayores 3. Entre estos dos al que est ms a la izquierda nombrarlo F1 al otro F2 4. Calcular P250v = t(F1)/t(F2), siendo t la amplitud del pico 51

5. Valores grandes se interpretan como provenientes de voz hipernasal, valores pequeos provenientes de voz normal En el algoritmo previo no se hace referencia explicita al pico a 250Hz, la razn que los autores dan es que la frecuencia de los picos no es lo suficientemente confiable y, por ejemplo, los armnicos surgen tambin alrededor de 250Hz. Nosotros en todas las grabaciones que analizamos encontramos que el pico a 250Hz se mostr lo suficientemente consistente para confiar en su aparicin. Se sugiere entonces el siguiente algoritmo para medir la amplitud relativa del pico extra: 1. 2. 3. 4. 5. Dadas las MDF calcular la amplitud de los picos Al pico ms cercano a 250Hz llamarlo F1 Escoger el pico ms alto excluyendo a F1 y llamarlo F2 Calcular P250m = t(F1)/t(F2), siendo t la amplitud de los picos Valores grandes se interpretan como provenientes de voz hipernasal, valores pequeos voz normal

Justificacin: En la voz hipernasal F1 (segn nomenclatura previa, no el primer formante) ser alto, algunas veces mayor o igual que el siguiente pico ms alto y en todo caso mayor a los armnicos. En la voz normal F1 ser casi siempre un armnico y por lo tanto mucho menor al pico ms alto hallado. As se espera que nuestra mtrica est cercana a uno o mayor que uno para voces hipernasales y ser siempre una fraccin en la voz normal. En la presentacin de resultados, capitulo 5, probamos ambas mtricas con todas las grabaciones disponibles y comparamos los resultados. Por ahora podemos observar el valor de la mtrica P250v con las grabaciones A11_F2_H y A10_F1_N, en la Fig. 4.32.
2.2 2

1.8

1.6

1.4

1.2

0.8

0.6

0.4

0.2

10

15

20

25

Fig. 4.32. Mtrica P250v a lo largo de A11_F2_H y A10_F1_N

La curva azul son los valores de la mtrica sobre la voz normal usando el algoritmo sugerido por Vijayalaksmhi [1]. La roja los correspondientes para la voz hipernasal.

52

4.1.5. Incremento en el Ancho de Banda del Primer Formante 4.1.5.1. F1BW Varios investigadores [5,7] han sugerido que la nasalizacin de sonidos voclicos aumenta el ancho de banda del primer formante. Nosotros usamos inicialmente a Praat para obtener directamente este parmetro. Los resultados obtenidos por este mtodo fueron tan desalentadores que terminamos usando una aproximacin distinta. Lo que hicimos fue usar el rastreador de formantes de Praat para obtener un estimado de la ubicacin del primer formante, luego usamos la funcin que rastrea picos en Matlab, y descrita en 4.1.1., para obtener F1BW. Para ello calculamos el LPC de bajo orden (10), obtuvimos el pico ms cercano al F1 sugerido por Praat y usamos el ancho de banda devuelto por la funcin que detectaba los picos. En el capitulo 5 Resultados, se presenta el comportamiento estadstico de esta mtrica calculada sobre toda la base de datos.

53

Captulo 5 RESULTADOS
5.1. Descripcin del Tratamiento Estadstico Este captulo presenta los resultados del anlisis estadstico para cada mtrica evaluada. La estructura seguida para analizar los datos se presenta a continuacin: 1. Para cada mtrica considerada sus valores fueron calculados sobre todos los frames de cada grabacin en la base de datos. 2. Test de Normalidad: a. Los datos fueron analizados para determinar si seguan una distribucin normal. b. Si la distribucin normal no era conveniente se probaba otra distribucin ms ajustada. En particular la distribucin exponencial apareci en varias mtricas analizadas. c. Para probar la normalidad se usaron las funciones normplot y ttest2 de Matlab. d. Para probar el ajuste a una distribucin exponencial se uso el comando probplot con el argumento exponential. 3. Contraste Entre Vocales: a. Se presentan diagramas de cajas y bigotes para el valor de la mtrica en cada tipo de voz. En ellos los valores de la mtrica son desplegados segn vocal. Esto para determinar si existen vocales que son ms sensibles a evaluar con la mtrica dada. b. Los diagramas de cajas y bigotes fueron obtenidos usando el comando boxplot de Matlab. 4. Anlisis de la Mtrica en Toda la Base de Datos a. Se grafican diagramas de cajas y bigotes para la mtrica evaluada en toda la base de datos. b. Se utiliza el anlisis de varianza ANOVA para determinar el desempeo de la mtrica sobre toda la base de datos. c. Se obtienen intervalos de confianza para la media de la mtrica en la poblacin y para cada tipo de voz. d. Se presentan las medias para cada tipo de voz y sus errores estndar. e. Se comparan las medias y sus intervalos de confianza grficamente para determinar su capacidad discriminante entre voz sana y voz hipernasal. f. Para realizar el anlisis de varianza se usa la funcin anova1 en el caso de una distribucin normal y kruskallwallis en el caso de una distribucin exponencial. g. La funcin multcompare de Matlab permiti comparar las medias de la mtrica grficamente para cada tipo de voz. 5. En el caso de que la mtrica hubiera tenido un comportamiento sesgado entre las vocales con el nimo de evaluar su 54

desempeo en una subpoblacin, se definieron subespacios para algunas mtricas donde era posible: a. Escoger un conjunto limitado de nios b. Escoger slo algunas vocales 6. Sobre estos espacios reducidos se realizaron anlisis de varianza para determinar si la mtrica en cuestin podra ofrecer un valor discriminante al ser aplicada de manera limitada. Para comparar entre mtricas se utiliza el estadstico F devuelto por ANOVA. Este cociente, cuya magnitud mide la capacidad discriminante de la mtrica, es normalizado con base en los grados de libertad obtenidos. Cuando fue preciso aplicar el test Kruskall-Wallis usamos el estadstico Chi-sq normalizado como medida del xito de la mtrica. Nuestra hiptesis nula para todas las mtricas tiene la siguiente estructura: H0: Las medias de la mtrica calculada sobre las muestras de voz sana y voz hipernasal son esencialmente las mismas. Para todos los anlisis usamos un valor de significancia del 5%. Esto es, estbamos dispuestos a rechazar errneamente la hiptesis nula con una probabilidad de error del 5%. El anlisis ANOVA nos mostr que, para cada mtrica, y con una certeza del 95%, podamos rechazar la hiptesis nula y acoger la hiptesis alternativa que dictaba: Ha: Las medias de la mtrica calculada sobre las muestras de voz sana y voz hipernasal son significativamente distintas. Algunas mtricas rechazaron la hiptesis nula con mrgenes ms amplios de confianza. Al final del capitulo presentamos una comparacin entre todas ellas. 5.2. Resultados Mtrica A1 H1 A1 H1 Contraste Hiptesis Distribucin Normal La funcin normplot nos permite validar si la asuncin de que los valores de la mtrica siguen una distribucin normal es justificada. Esta rutina despliega los datos versus su probabilidad de aparicin. Entre ms ajustados a la lnea roja estn los datos ms puede confiarse en que estos obedecen una distribucin normal. La Fig. 5.1 muestra estos grficos para la mtrica A1 H1 evaluada sobre la voz normal (izq) y sobre la voz hipernasal (der).

55

Normal P robabi lity P lot

Normal Probabili ty Plot

0.999 0.997 0.99 0.98 0.95 0.90

0.999 0.997 0.99 0.98 0.95 0.90

0.75 Probability -20 -10 0 10 Data 20 30 40 Probability

0.75

0.50

0.50

0.25

0.25

0.10 0.05 0.02 0.01 0.003 0.001

0.10 0.05 0.02 0.01 0.003 0.001

-20

-10

10 Data

20

30

40

50

Fig. 5.1 Hiptesis de normalidad A1 H1

Aunque no todos los datos se cien rgidamente a la lnea gran parte de ellos lo hacen. Podemos entonces confiar que los valores obtenidos de la mtrica A1 H1 siguen una distribucin normal. A1 H1 Contraste Entre Vocales Si calculamos la mtrica A1 H1 en todas las muestras normales discriminamos segn vocal se obtiene lo mostrado en la Fig. 5.2.
40

30

20

Values

10

-10

-20

A_N

E_N

I_N

O_N

U_N

Fig. 5.2 Contraste entre vocales A1 H1 voz normal

Esto muestra que la mtrica es consistente para las vocales a e y o en la voz normal. Las vocales i y u tienen los valores ms pequeos para esta mtrica. Cuando realizamos el grfico correspondiente para las muestras de voz hipernasal se obtiene la Fig. 5.3.
50

40

30

20 Values 10 0 -10 -20

A_H

E_H

I_H

O_H

U_H

Fig. 5.3 Contraste entre vocales A1 H1 voz hipernasal

56

La mtrica se muestra consistente para las vocales a e y o en la voz hipernasal. El anlisis previo sugiere que las vocales i y u deberan ser tratadas de manera distinta. Tanto para la voz normal como para la voz hipernasal estas dos vocales presentan valores apreciablemente menores para A1 H1 que los obtenidos para a, e y o. La razn para ello es que el primer formante para i y u est a frecuencias ms bajas (alrededor de 500Hz) que para las dems vocales (mayor a 700Hz). Por ello H1 estar en el espectro ms cerca de F1 para i y u. Debido a la naturaleza armnica del espectro la proximidad de estos dos picos implica que sus amplitudes contrastan de forma menos definida. A1 H1 en Toda la Base de Datos Para calculara la mtrica en cada grabacin de la base de datos usamos ventanas de 15ms con paso de 2.5ms. El cdigo empleado se adjunta en el apndice B. Si calculamos la mtrica A1 H1 para todas las grabaciones de todos los nios y distinguimos entre voz sana y voz hipernasal se obtiene la Fig. 5.4.
50

40

30

20 Values 10 0 -10 -20

Normal

Hipernasal

Fig. 5.4 Mtrica A1 H1 en toda la base de datos

Como se presuma el valor de la mtrica es ligeramente mayor en las voces sanas que en las voces hipernasales. Un anlisis cuantitativo ms til se obtiene al utilizar ANOVA. A1 H1 ANOVA Base de Datos Completa

Tabla 5.1. ANOVA mtrica A1 H1 toda la base de datos

57

La ltima columna de la tabla 5.1 indica: La probabilidad de que los datos obtenidos de la mtrica A1 H1 para voz sana e hipernasal posean la misma media es cero. Un despliegue grfico de las medias y sus intervalos de confianza se muestra en la Fig. 5.5.

Normal Hipernasal 8.5 9 9.5 10 10.5 11 11.5 12 12.5 The means of groups Normal and Hipernasal are significantly different

Intervalo de confianza 2.8400 3.1693 3.4986

Medias y error estndar 12.1151 0.1254 8.9458 0.1118

Fig. 5.5 Comaracin grfica de medias e intervalo de confianza A1 H1

Felizmente el intervalo de confianza no contiene al cero. Para comprender las cantidades en la Fig. 5.5 la tabla 5.2 puede ser consultada Interpretacin Intervalos de confianza Media mtrica en voz sana 2 = 12.1151 Media mtrica en voz hipernasal 1 = 8.9458 [a b] = [2.84 3.4986] Intervalo de confianza Se asegura con un 95% de certeza 2 -1 esta entra [a b] que 2 - 1 esta en el intervalo [2.84 3.4986] Luego lmite izquierdo de 2 puede 2min = 11.78 ser mnimo 2 = 1 + a 2max = 12.44 Luego lmite derecho de 2 puede ser mximo 2 = 1 + b
Tabla 5.2. Interpretacin de medias e intervalos de confianza A1 H1

A1 H1 Evaluacin en Espacio Reducido Se realiz un anlisis del comportamiento discriminante de la mtrica A1 H1 en la base de datos. La tabla 5.3 muestra una evaluacin de este parmetro sobre todos los nios. HIPERNASAL ID sujeto A1 H1 H_nina_01 Regular H_nina_02 Bueno H_nina_03 Malo H_nino_01 Regular H_nino_02 Malo NORMAL ID sujeto C_nina_01 C_nina_02 C_nino_01 C_nino_02 C_nino_03 58

A1 H1 Bueno Malo Bueno Bueno Regular

Tabla 5.3. Evaluacin mtrica A1 H1 segn nio

Esta tabla guarda similitud en sus calificaciones con la evaluacin general que hicimos de las grabaciones de los nios en la tabla 3.2. Al retirar de la base de datos los dos nios con las grabaciones ms deficientes segn la tabla 5.3 obtenemos para la mtrica A1 H1 lo mostrado en la Fig. 5.6.
50 40

30

20 Values 10 0 -10 -20

Normal

Hipernas al

Fig. 5.6 Mtrica A1 H1 luego de retiriar grabaciones de mala calidad

Si utilizamos solamente las vocales a, e y o en este espacio se obtiene la Fig. 5.7.


50

40

30

20 Values 10 0 -10 -20

Normal

Hipernasal

Fig. 5.7 Mtrica A1 H1 vocales a,e y o

Se aprecia una mejora evidente en la discriminacin del parmetro. Al usar ANOVA en este subespacio se obtiene la Fig. 5.8.

Normal Hipernasal 4 6 8 10 12 14 16 18 The means of groups Normal and Hipernasal are significantly different

Intervalo de confianza 11.5434 11.9520 12.3605

Medias y error estndar 16.6362 0.1476 4.6842 0.1472

Fig. 5.8 ANOVA de A1 H1 sobre subespacio

59

Podemos concluir que la mtrica A1 H1 present una buena capacidad discriminante entre voces normales y voces hipernasales en nuestra base de datos. Esta capacidad puede ser incrementada si se utilizan las grabaciones de mejor calidad y se restringe el anlisis sobre las vocales a, e y o. 5.3. Resultados Mtrica A1 P0 Contraste Hiptesis Distribucin Normal Mtrica A1 P0 Utilizando normplot sobre la voz normal e hipernasal obtenemos la Fig. 5.9.
Normal Probabilit y Plot
Norm al Probability P lot

0.999 0.997 0.99 0.98 0.95 0.90

0.999 0.997 0.99 0.98 0.95 0.90

0.75 Probabili ty
Probabili ty

0.75

0.50

0.50

0.25

0.25

0.10 0.05 0.02 0.01 0.003 0.001

0.10 0.05 0.02 0.01 0.003 0.001

-25

-20

-15

-10

-5

0 Data

10

15

20

25

-20

-15

-10

-5

0 Data

10

15

20

Fig. 5.9 Hiptesis de normalidad A1 P0

Se acepta que los datos estn normalmente distribuidos. A1 P0 Contraste entre Vocales La Fig. 5.10 muestra el resultado de la mtrica A1 P0 sobre voz normal y discriminando segn vocal.
30

20

10

Values

-10

-20

A_N

E_N

I_N

O_N

U_N

Fig. 5.10. Contraste entre vocales A1 P0 voz normal

En este caso la vocal a presenta un mal comportamiento sometida a la evaluacin de la mtrica A1 P0. Por su parte la mtrica en la voz hipernasal arroj la Fig. 5.11.

60

20

15

10

Values

-5

-10

-15

-20

A_H

E_H

I_H

O_H

U_H

Fig. 5.11. Contraste entre vocales A1 P0 voz hipernasal

El comportamiento de la mtrica A1 P0 es aun peor para la a de las voces hipernasales en tanto que la o aparece con el mejor potencial discriminante. A1 P0 ANOVA Base de Datos Completa Para calcular la mtrica A1 P0 en todas las grabaciones de la base de datos usamos ventanas de 10ms y paso de 2.5ms. El cdigo empleado se adjunta en el apndice B. El diagrama de cajas y bigotes para A1 P0 est en la Fig. 5.12.
30

20

10

Values

-10

-20

Normal

Hipernasal

Fig. 5.12. Mtrica A1 P0 en toda la base de datos

Tabla 5.4. ANOVA mtrica A1 P0 toda la base de datos

La tabla 5.4 muestra el resultado de usar ANOVA. En este caso el estadstico F tiene un valor muy pequeo comparado con el obtenido 61

previamente para la mtrica A1 H1. Note adems que la probabilidad de que las medias de la mtrica sean iguales en los dos tipos de voces ya no es cero. La comparacin grfica de medias para A1 P0 se muestra en la Fig. 5.13.
Normal

Hipernasal 1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 The means of groups Normal and Hipernasal are significantly different 2.5

Intervalos de confianza -0.8612 -0.6223 -0.3834

Medias y error estndar 1.6655 0.0907 2.2878 0.0814

Fig. 5.13. Comparacin grfica de medias A1P0

En este caso los intervalos de confianza son ms extensos lo que aumenta las probabilidades de clasificar errneamente una voz como hipernasal siendo normal y viceversa. Aunque el comportamiento de la mtrica A1 P0 no es tan bueno como el obtenido para A1 H1 el anlisis de varianza indica que los datos son significativamente distintos entre los dos tipos de voces. A1 P0 Espacio Reducido: Solo la vocal o Todos los Nios Si consideramos exclusivamente la vocal o es posible mejorar el desempeo de la mtrica A1 P0. Un diagrama de cajas y bigotes se muestra en la Fig. 5.14.
20 15

10

Values

-5

-10

-15

-20

Normal

Hipernasal

Fig. 5.14. A1 P0 solo vocal o

Al realizar el anlisis de varianza encontramos que el estadstico F aumenta considerablemente en este espacio reducido. La Fig. 5.15 y la tabla 5.5 muestra lo obtenido. 62

Tabla 5.5. ANOVA mtrica A1 P0 solo vocal o

Normal Hipernasal 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 The means of groups Normal and Hipernasal are significantly different

Intervalos de Confianza -4.0338 -3.6757 -3.3177

Medias y error estndar 1.2963 0.1360 4.9720 0.1219

Fig. 5.15. Comparacin grafica de medias A1 P0 solo vocal o

Se concluye que la mtrica A1 P0 mejora considerablemente su capacidad discriminante cuando es aplicada slo a las vocales o de nuestra base de datos. 5.4. Resultados Mtrica A1 P1 A1 P1 Contraste Hiptesis Distribucin Normal Aplicando el test de normalidad a los valores de la mtrica A1 P1 obtuvimos que efectivamente los datos estn normalmente distribuidos. La Fig. 5.16 muestra el resultado al usar normplot con voz normal y voz hipernasal.
Normal Probabilit y Plot
Norm al Probability Pl ot

0.999 0.997 0.99 0.98 0.95 0.90

0.999 0.997 0.99 0.98 0.95 0.90

0.75 Probabili ty
Probability

0.75

0.50

0.50

0.25

0.25

0.10 0.05 0.02 0.01 0.003 0.001

0.10 0.05 0.02 0.01 0.003 0.001

-20

-10

0 Data

10

20

30

-20

-10

10 Data

20

30

40

Fig. 5.16. Hiptesis de normalidad A1 P1

A1 P1 Contraste Entre Vocales El resultado de obtener los diagramas de cajas y bigotes usando la mtrica A1 P1 y discriminando entre vocales se muestra en la Fig. 5.17.

63

40

30

20

Values

10

-10

-20 A_N E_N I_N O_N U_N

Fig. 5.17. Contraste entre vocales A1 P1 voz normal

El correspondiente grfico para la voz hipernasal esta en la Fig. 5.18.


40

30

20 Values

10

-10

-20 A_H E_H I_H O_H U_H

Fig. 5.18. Contraste entre vocales A1 P0 voz hipernasal

Al observar los grficos se descubre que la vocal e es la que presenta mayor potencial discriminante. A1 P1 Mtrica en toda la Base de Datos El diagrama de cajas y bigotes para toda la base de datos usando la mtrica A1 P1 se muestra en la Fig. 5.19. El resultado al usar ANOVA esta en la tabla 5.6. La comparacin grfica de medias puede ser observada en la Fig. 5.20. El estadstico F al usar ANOVA es el ms pequeo obtenido hasta ahora. Esto pone de manifiesto que la no consistencia en la ubicacin de P1 ha resultado en un pobre comportamiento de la mtrica.

64

40

30

20

Values

10

-10

-20

Normal

Hipernasal

Fig. 5.19. Diagrama de cajas y bigotes mtrica A1 P1

Tabla 5.6. ANOVA mtrica A1 P1

Normal Hipernasal 5.4 5.5 5.6 5.7 5.8 5.9 6 6.1 6.2 The means of groups Normal and Hipernasal are significantly different

Intervalos de confianza -0.6723 -0.3451 -0.0179

Medias y error estndar 5.6184 0.1242 5.9635 0.1115

Fig. 5.20. Comparacin grafica de Medias A1 P1

Aunque ANOVA indica que las medias de la mtrica A1 P1 son distintas notamos que lo son por un margen muy pequeo. Hasta ahora esta es la mtrica que peor resultado ha presentado. A1 P1 Anlisis en Espacio Reducido: Usando slo la e en Toda la Base de Datos En un intento por mejorar la respuesta de la mtrica A1 P1, consideramos solamente la vocal e en todos los nios. El diagrama de cajas y bigotes se muestra en la Fig. 5.21.

65

30

25

20

15

10 Values

-5

-10

-15

-20 Normal Hipernasal

Fig. 5.21. Diagrama cajas y bigotes A1 P1 solo la voal e

Tabla 5.7. ANOVA para A1 P1 solo vocal e

En este espacio reducido el estadstico F se ha incrementado y la probabilidad de que las medias sean iguales es ahora cero. La Fig. 5.22 muestra una comparacin grfica de medias e intervalos de confianza para este caso. Comparada con la Fig. 5.20 la mejora es apreciable.

Normal Hipernasal

4 5 6 7 8 9 10 11 12 13 The means of groups Normal and Hipernasal are significantly different

Intervalos de confianza -8.3849 -7.3532 -6.3214

Medias y error estndar 4.1979 0.3587 11.5511 0.3853

Fig. 5.22. Comparacin grafica de Medias e intervalo de confianza A1 P1 solo vocal e

Concluimos que la mtrica A1 P1 tiene, en nuestra base de datos, potencial discriminante si es usada solamente con la vocal e. Cuando se usa con las dems vocales esta mtrica no es lo suficientemente consistente para intentar una labor discriminante.

66

5.5. Resultados Mtrica P250v Cuando probamos el test de normalidad para los valores de esta mtrica obtuvimos la Fig. 5.23.
Normal P robabi lity P lot Normal P robabi lity P lot 0.999 0.997 0.99 0.98 0.95 0.90 0.999 0.997 0.99 0.98 0.95 0.90

0.75 Probabili ty Probabili ty 0 1 2 3 Data 4 5 6

0.75

0.50

0.50

0.25

0.25

0.10 0.05 0.02 0.01 0.003 0.001

0.10 0.05 0.02 0.01 0.003 0.001

2 Data

Fig. 5.23. Hiptesis normalidad mtrica P25v

La grfica a la izquierda son los valores obtenidos de la voz sana y a la derecha estn los correspondientes para la voz hipernasal. En este caso es muy difcil sostener que los datos siguen una distribucin normal. No obstante su curvatura nos sugiri que podra tratarse de una distribucin exponencial. Asi que realizamos la prueba usando la funcin probplot de Matlab con el argumento exponential. El resultado se muestra en la Fig. 5.24. A la izquierda estn los datos correspondientes a la voz sana y a la derecha sus contrapartes hipernasales.
Probability plot for Exponential distribution
Probability plot for Exponential distribution

0. 9995

0.999

0.9995

0.999

0.995 Probability

0.99
Probabilit y

0.995

0 .9 9

0.95
0 .9 5

0.9
0.9

0.75
0 .7 5

0.5
0.5

0.25 0.05 0 1 2 3 Data 4 5 6 7

0 .2 5 0 .0 5 0

3 Data

Fig. 5.24. Hiptesis distribucin exponencial mtrica P250v

Con base en lo anterior es fcil argumentar que los valores de la mtrica P250v siguen una distribucin exponencial en ambos tipos de voces. Debido a esto no es posible aplicar ANOVA directamente ya que uno de los supuestos de este mtodo es que los datos estn normalmente distribuidos. Por fortuna es posible utilizar otros mtodos para efectuar la comparacin. Aqu usaremos el test de Kruskall-Wallis. P250v Anlisis en Toda la Base de Datos Para calcular esta mtrica usamos ventanas de 30ms con paso de 5ms. Los diagrams de cajas y bigotes para toda la base de datos se muestran en la Fig. 5.25. La tabla 5.8 muestra el ANOVA para P250v. Utilizamos el test de Kruskall-Wallis para realizarlo.

67

4 Val ues 3 2 1 0 Norm al Hipernasal

Fig. 5.25. Diagrama cajas y bigotes P250v

Kruskall-Wallis ANOVA

Tabla 5.8. ANOVA para P250v

En este caso el estadstico F es reemplazado por Chi-sq. Notamos que para est mtrica su valor es alto. Una comparacin grfica de las medias e intervalos de confianza se muestra en la Fig. 5.26.

Normal Hipernasal

2600 2800 3000 3200 3400 3600 3800 The mean ranks of groups Normal and Hipernasal are significantly different

Intervalos de confianza -1003.4 -912.5 -821.7

Medias y error estndar 2696.4 34.2 3608.9 31.2

Fig. 5.26. Comparacin grafica de medias P250v

Debido al uso del mtodo Kruskall-Wallis los valores considerados ya no son propiamente los calculados con la mtrica sino unos rangos

68

equivalentes. En este espacio de rangos las conclusiones obtenidas sobre los intervalos de confianza y medias siguen siendo legtimas. 5.6. Resultados Mtrica P250m Contraste Hiptesis Distribucin Normal La mtrica P250m tampoco sigue una distribucin normal. Para mostrarlo observemos las grficas obtenidas con normplot en la Fig. 5.27.
Normal Probability Plot Normal Probability Plot

0.999 0.997 0.99 0.98 0.95 0.90 Probability Probability 0 1 2 3 Data 4 5 6 0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

0.999 0.997 0.99 0.98 0.95 0.90 0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001 0 1 2 3 Data 4 5

Fig. 5.27. Hiptesis de normalidad P250m

A la izquierda estn los valores correspondientes a la voz sana y a la derecha los correspondientes a la voz hipernasal. Si efectuamos el test para determinar si P250m sigue una distribucin exponencial obtenemos una respuesta positiva. Para visualizarlo observe la Fig. 5.28.
Probability plot for Exponential distribution
Probability plot for Exponential distribution

0.9995 0.999

0.9995 0.999

Probability

0.995 0.99
Probability

0.995 0.99

0.95 0.9 0.75 0.5 0.25 0.05 0 1 2 3 Data 4 5 6 7

0.95 0.9 0.75 0.5 0.25 0.05 0 1 2 3 Data 4 5 6

Fig. 5.28. Hiptesis distribucin exponencial mtrica P250m

Se concluye que los valores de esta mtrica obedecen una distribucin exponencial. Aunque la mtrica P250m no obedece una distribucin normal podemos usar los diagramas de cajas y bigotes para comparar visualmente el comportamiento del parmetro con relacin a las vocales.

69

La Fig. 5.29 muestra el comportamiento de la mtrica P250m en las vocales de voz normal e hipernasal. A la izquierda estn los valores para la voz normal y a la derecha para la voz hipernasal.
7 6 6 5

5 4 4 Values Values A_N E_N I_N O_N U_N 3

2 2 1

0 A_H E_H I_H O_H U_H

Fig. 5.29. Contraste entre vocales voz sana e hipernasal mtrica P250m

El valor de la mtrica a lo largo de la vocal i parece el ms alejado de los dems en ambos tipos de voz. P250m en Toda la Base de Datos Un diagrama de cajas y bigotes que muestra el comportamiento de la mtrica P250m en toda la base de datos puede ser visto en la Fig. 5.30.
7

4 Values 3 2 1 0 Normal Hipernasal

Fig. 5.30. Diagrama de cajas y bigotes mtrica P250m

En cuanto el test de Kruskall-Wallis ANOVA nos deja con la tabla 5.9.

Tabla 5.9. ANOVA para P250m

El estadstico Chi-sq es mucho ms alto que la contraparte hallada por la mtrica P250v. Pensamos que esto justifica la consideracin de esta mtrica de forma independiente.

70

Una comparacin grafica de medias se ofrece en la Fig. 5.31.


Click on the group you want to test

Normal Hipernasal 2400 2600 2800 3000 3200 3400 3600 3800 The mean ranks of groups Normal and Hipernasal are significantly different

Intervalos de confianza -1286.0 -1195.2 -1104.4

Medias y error estndar 2542.2 34.2 3737.4 31.2

Fig. 5.31 Comparacin grafica de medias P250m

P250m Espacio Reducido sin la vocal i Todos los nios El anlisis de la mtrica P250m en las vocales nos mostr que sus valores diferan especialmente en la vocal i. Para observar el desempeo de est mtrica cuando es excluida esta vocal realizamos el test Kruskall-Wallis en este espacio reducido. La tabla 5.10 muestra los resultados de ANOVA.

Tabla 5.10. ANOVA para P250m sin considerar la vocal i

Se aprecia que el estadstico Chi-sq aumenta en relacin al caso cuando usabamos todas las vocales. El diagrama de cajas y bigotes en este espacio reducido se aprecia en la Fig. 5.32.
5 4.5 4 3.5 Values 3 2.5 2 1.5 1 0.5 0 Normal Hipernasal

Fig. 5.32. Diagrama cajas y bigotes para P250m sin la vocal i

La comparacin grafica de medias en la Fig. 5.33 nos permite notar que la capacidad discriminante de esta mtrica aumenta cuando no es considerada la vocal i.

71

Normal Hipernasal 2000 2200 2400 2600 2800 3000 3200 3400 3600 The mean ranks of groups Normal and Hipernasal are significantly different

Medias y error estndar 2216.9 33.0 3464.7 29.5


Fig. 5.33. Comparacin grafica de medias P20m sin considerar vocal i

5.7. Resultados Mtrica CTEO CTEO Contraste Hiptesis Distribucin Normal Para validar la asuncin de que la mtrica CTEO obedece una distribucin normal se utiliza normplot, las respuestas para voz sana e hipernasal se muestran en la Fig. 5.34.
Normal Probability Plot
Normal Probability Plot

0.999 0.997 0.99 0.98 0.95 0.90 Probability


Probability

0.999 0.997 0.99 0.98 0.95 0.90 0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

0.1

0.2

0.3

0.4

0.5 Data

0.6

0.7

0.8

0.9

0.1

0.2

0.3

0.4

0.5 Data

0.6

0.7

0.8

0.9

Fig. 5.34. Hiptesis de normalidad CTEO todos los datos

Existen algunos valores en cero que afectan la visualizacin de los grficos. Puesto que estos valores no representan a la poblacin (voz normal 0.85%, voz hipernasal 0.3%) sern retirados de esta. Ello con el fin de visualizar de manera ms conveniente el conjunto de datos representativos. Al hacerlo obtenemos para el test de normalidad lo mostrado en la Fig. 5.35., voz normal izquierda y voz hipernasal a la derecha.

72

Normal Probability Plot

Normal Probability Plot

0.999 0.997 0.99 0.98 0.95 0.90 Probability

0.999 0.997 0.99 0.98 0.95 0.90 Probability 0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

0.65

0.7

0.75

0.8 Data

0.85

0.9

0.95

0.55

0.6

0.65

0.7

0.75 0.8 Data

0.85

0.9

0.95

Fig. 5.35. Hiptesis de normalidad CTEO sin datos nulos

Notamos que el grueso de la poblacin se cie a una distribucin normal. CTEO Contraste en Todas las Vocales En la Fig. 5.36 aparecen los valores de la mtrica CTEO discriminados por vocales. A la izquierda estn los datos de la voz sana y a la derecha los correspondientes para voz hipernasal.
1 0.9 0.8 0.7 0.6 Values 0.5 0.4 0.3 0.2 0.1 0 A_N E_N I_N O_N U_N Values 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 A_H E_H I_H O_H U_H

Fig. 5.36. Contraste entre vocales voz sana e hipernasal mtrica CTEO

Las vocales e y o presentan el comportamiento ms prometedor para discriminar las voces si se usa esta mtrica. CTEO en Toda la Base de Datos Al calcular la CTEO para todos los sonidos de la base y obtener el diagrama de cajas y bigotes correspondiente surge la Fig. 5.37. Como se esperaba en general los valores de correlacin son ms altos para la voz sana. En la tabla 5.11 aparece el resultado del anlisis ANOVA y en la Fig. 5.38 esta la comparacin grafica de las medias e intervalos de confianza.

73

1 0.9 0.8 0.7 0.6 Values 0.5 0.4 0.3 0.2 0.1 0 Normal Hipernasal

Fig. 5.37. Diagrama de cajas y bigotes CTEO

Tabla 5.11. ANOVA para CTEO

Normal Hipernasal 0.88 0.885 0.89 0.895 0.9 0.905 0.91 0.915 0.92 0.925 The means of groups Normal and Hipernasal are significantly different

Intervalo de confianza 0.0186 0.0224 0.0262

Medias y error estndar 0.9069 0.0015 0.8844 0.0013

Fig. 5.38. Comparacin Grfica de medias CTEO

Espacio Reducido Vocales e y o en todos los Nios Inclinados por los resultados obtenidos en la comparacin de la mtrica CTEO entre vocales decidimos utilizar solamente algunas de estas. En la Fig. 5.39 aparece el diagrama de cajas y bigotes para este espacio reducido. La tabla 5.12, que muestra el resultado de ANOVA, nos confirma que utilizar este subespacio incrementa el estadstico F y por tanto la capacidad discriminante de la mtrica. De hecho el estadstico F casi se duplica en relacin con el uso de la base de datos completa. Por ultimo la comparacin grafica de medias en la Fig. 5.40 establece de manera visual los resultados.

74

0.9

0.8

0.7

0.6

Values

0.5

0.4

0.3

0.2

0.1

0 Normal Hipernasal

Fig. 5.39. Diagrama cajas y bigotes CTEO vocales e y o

Tabla 5.12. ANOVA para CTEO slo vocales e y o

Normal Hipernasal 0.89 0.9 0.91 0.92 0.93 0.94 The means of groups Normal and Hipernasal are significantly different Fig. 5.40. Comparacin Grfica de Medias CTEO slo vocales e y o 0.88

5.8. Resultados Mtrica F1BW F1BW Hiptesis Distribucin Normal Si utilizamos normplot con los valores obtenidos de la mtrica F1BW obtenemos para la voz sana e hipernasal lo mostrado en la Fig. 5.41.
Normal Probability Plot
Normal Probability Plot

0.999 0.997 0.99 0.98 0.95 0.90 Probability


Probability

0.999 0.997 0.99 0.98 0.95 0.90 0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

0.75 0.50 0.25 0.10 0.05 0.02 0.01 0.003 0.001

200

400

600

800

1000 1200 1400 1600 1800 2000 Data

500

1000

1500 Data

2000

2500

3000

Fig. 5.41. Hiptesis de normalidad F1BW

75

Los datos obtenidos con esta mtrica no obedecen una distribucin normal. F1BW Hiptesis Distribucin Exponencial De hecho los datos obtenidos para la mtrica F1BW se cien mejor a una distribucin exponencial. Para visualizarlo observe la Fig. 5.42.
Probability plot for Exponential distribution 0.9999
Probability plot for Exponential distribution 0.9999

0.9995 0.999 Probability

0.9995 0.999 Probability

0.995 0.99

0.995 0.99

0.95 0.9 0.75 0.5 0.25 0.01

0.95 0.9 0.75 0.5 0.25 0.01 0 500 1000 1500 Data 2000 2500 3000 3500

500

1000 Data

1500

2000

2500

Fig. 5.42tesis distribucin exponencial mtrica F1BW

A la izquierda estn los datos correspondientes a la voz sana y a la derecha los de voz hipernasal. Puesto que los valores de la mtrica F1BW se adjustan bien a la distribucin exponencial usaremos el test de Kruskall-Wallis para realizar su anlisis de varianza. F1BW Contraste entre Vocales La Fig. 5.43 muestra el contraste entre vocales para la mtrica F1BW. A la izquierda estan los datos de voz normal y a la derecha lo de voz hipernasal.
3000
2000

2500

1500

2000 Values

Values

1500

1000

1000
500

500

0 A_N E_N I_N O_N U_N

0 A_H E_H I_H O_H U_H

Fig. 5.43traste entre vocales voz sana e hipernasal mtrica F1BW

En la vocal a los valores de la mtrica son contrarios a lo esperado obtenindose valores ms altos para la voz sana.

76

F1BW en Toda la Base de Datos Al evaluar est mtrica en toda la base de datos se obtiene el diagrama de cajas y bigotes de la Fig. 5.44.
3000

2500

2000 Values

1500

1000

500

0 Normal Hipernasal

Fig. 5.44 Diagrama cajas y bigotes F1BW

Kruskall-Wallis ANOVA Es preciso aplicar el test de Kruskall-Wallis porque los datos no siguen una distribucin normal. La tabla 5.13 muestra los resultados de este test.

Tabla 5.13. ANOVA para F1BW

La comparacin grfica de medias e intervalos de confianza se muestra en la Fig. 5.45. Click on the group you want to test

Normal Hipernasal 5000 5200 5400 5600 5800 6000 6200 6400 6600 The mean ranks of groups Normal and Hipernasal are significantly different

Intervalos de confianza -1446.2 -1323.3 -1200.5

Medias y error estndar 5148.2 46.0 6471.6 42.6

Fig. 5.45. Comparacin Grfica de medias F1BW

Las medias de los datos resultan ser significativamente distintas. 77

5.9. Comparacin de Mtricas Nos proponemos ahora comparar los resultados obtenidos para cada mtrica propuesta. Para hacerlo utilizaremos el estadstico F (o Chi- sq) normalizado con respecto a los grados de libertad que retorna el mtodo ANOVA. La tabla 5.14 contiene los valores del estadstico, los grados de libertad y el cociente F-ratio para cada mtrica. Mtrica
A1 - H1 A1 - P0 A1 - P1 P250v P250m CTEO F1BW

Estadstico Grados de F ( Chi-sq) Libertad

F-ratio
2.934% 0.204% 0.033% 6.074% 10.419% 1.310% 3.802%

355.84 12129 26.07 12765 4.27 12765 387.86 6386 665.37 6386 133.45 10189 445.61 11719 Tabla 5.14. Comparacin de mtricas

Los grados de libertad son el nmero de frames analizados ms uno. Cuando calculamos las MDF, y por tanto las mtricas que detectaban el pico a 250Hz, usamos pasos de 5ms. En los dems casos el paso fue de 2.5ms. Por otra parte no todas las mtricas usaban frames del mismo tamao y tampoco usamos todo el sonido para el anlisis: nosotros recortamos aproximadamente el 20% del inicio y final de la grabacin. Es por ello que se tienen las diferencias en los grados de libertad hallados. Una grfica de los F-ratio para cada mtrica se muestra en la Fig. 5.46.
F-ratio
12% 10% 8% 6% 4% 2% 0% A1 - H1 A1 - P0 A1 - P1 P250v P250m CTEO F1BW

Fig. 5.46. Comparacin de F-ratios

78

Lo primero que puede decirse es que las mtricas A1 P0 y A1 P1 ofrecieron el peor desempeo de todas. Una posible razn es que los picos alrededor del primer formante no son lo suficientemente consistentes. En nuestra exploracin encontramos que P1 apareca a veces y a veces no lo que dificultaba mucho utilizarlo de manera fiable. Otra razn es que la amplitud de estos picos no ofrece informacin completa para analizar la forma del espectro y clasificar la voz como sana o hipernasal. Uno puede sentirse tentado a complementar esto usando las frecuencias especficas en las que aparecen los picos. No obstante esta aproximacin ha sido usada antes y los resultados no han sido lo suficientemente buenos para justificar este esfuerzo [7, pp. 102]. Aunque el algoritmo propuesto por Pruthi en [7, pp. 189] e implementado para esta tesis (compartido en el Apndice B) trata de considerar la no consistencia en la ubicacin de los picos extras, es posible que no sea lo suficientemente robusto para capturar esta variabilidad. Aunque podra intentarse mejorar este algoritmo y esperar con ello una mejora para las mtricas A1 P0 y A1 P1 nosotros nos mostramos escepticos al respecto. Pensamos que la variabilidad observada en estos polos extras (especialmente P1) es tal que una mtrica tan sencilla no puede dar cuenta clara de su aparicin y magnitud para discriminar voces sanas e hipernasales. Nosotros utilizamos el diagrama LPC para hallar estos polos extras. No podemos descartar que un mtodo distinto o ms sofisticado pueda ofrecer mejoras en el comportamiento de estas mtricas. El desempeo de las mtricas A1 H1, CTEO y F1BW son comparables. Todas ellas ofrecen un potencial discriminante valioso y pensamos que con ajustes podran usarse de manera fiable para detectar voces hipernasales. En particular A1 H1 es muy atractiva dado lo sencillo de su calculo y su consistencia. Para nosotros fue una sorpresa encontrar que una medida directa en el espectro poda brindar indicacin de la presencia de hipernasalidad. Basta garantizar un enventanado y prenfasis adecuado para obtener un espectro claro que permita detectar H1. Por otra parte pensamos que el CTEO puede ser sustancialmente mejorado si se utiliza la funcin de correlacin de una manera ms discriminante o si emplea un algoritmo de comparacin menos robusto. La justificacin para este comentario es que hallamos que aunque los perfiles fueran distintos el algoritmo de correlacin calificaba con un valor alto ambas voces. Pienso que la razn de ello es la potencia de este algoritmo y por ello usar una comparacin ms sensible a las diferencias podra ser provechoso. Aunque la mtrica F1BW obtuvo un buen desempeo yo recomiendo usar este parmetro con cuidado. Es preciso escoger de manera razonada el diagrama en el que se calcular este valor. Por ejemplo si se planea usar el LPC el orden debe ser ajustado convenientemente. En varias pruebas nosotros encontramos que el ancho de banda dependa fuertemente del 79

algoritmo usado para calcularlo, por tanto este parmetro podra no ser tan robusto si se descuidan los detalles. Las mtricas P250v y P250m resultaron ser las que mejor desempeo obtuvieron. Luego de haber analizado los frames de muchas grabaciones este resultado no es sorprendente: el pico extra a 250Hz efectivamente aparece de manera consistente en las voces hipernasales. Aunque es preciso probar estas mtricas en bases de datos ms extensas no puede evitarse el pensar que est mtrica es muy prometedora. Las funciones de retraso modificadas mostraron ser una herramienta novedosa y til para detectar el polo extra a 250Hz. Aunque los autores que primero emplearon este mtodo [1] fueron cautelosos y evitaron confiar mucho en la ubicacin precisa de este pico, la modificacin que nosotros hicimos, donde efectivamente buscamos el pico a 250Hz, obtuvo comparativamente los mejores resultados.

80

Captulo 6 CONCLUSIONES Y TRABAJO FUTURO

El objetivo de esta tesis era iniciar el camino para la discriminacin automtica de voces sanas e hipernasales. Para lograrlo nos apoyamos en una revisin extensa de la literatura sobre el tema y tratamos de escoger el camino que ms prometedor pareca. Aunque existen varias aproximaciones al problema pensamos que la solucin vendr de la mano de un conocimiento concreto de las variaciones que la seal de voz sufre al ser nasalizada. Es por ello que la utilizacin de mtricas acsticas, escogidas con la intencin clara de capturar una caracterstica de la nasalizacin, nos pareci la ms conveniente. El trabajo de Pruthi [7] es particularmente valioso en este punto porque intenta obtener el origen de los cambios producidos por la nasalizacin. Pensamos que con este conocimiento las mtricas acsticas poseen una oportunidad mayor de ser utiles. Las seis mtricas seleccionadas apuntaban a capturar de manera concreta como la respuesta frecuencial de la seal haba sido modificada por la nasalizacin. Hallamos que no todas son buenas discriminantes en la base de datos disponible pero en general sentimos que la seleccin fue acertada: varias de ellas poseen el potencial para ser utilizadas en la discriminacin de la patologa. Nosotros empleamos gran esfuerzo en calcular estos parmetros de la manera ms clara y precisa posible. Los apendices son un intento para permitir que este trabajo sea reproducible y pueda ser retomado de manera sencilla. Confiamos en que estudiantes en el futuro puedan reutilizar este material para construir un sistema de reconocimiento de voz hipernasal. El siguiente paso sera pues escoger las mtricas que mejor desempeo obtuvieron y probarlas en una base de datos ms extensa. Hacer los ajustes necesarios y utilizar estos datos para el entrenamiento de un sistema de reconocimiento automtico. Algunas de las actividades especficas que yo recomendara previas a la construccin de este sistema son: La mtrica CTEO puede mejorar su desempeo si se utilizan otras alternativas para la comparacin de los perfiles. Una exploracin ms completa de las MDF permitira obtener diagramas espectrales ms claros. Esto abrira un conjunto de nuevas posiblilidades al contar con un espectro de alta resolucin. Una actividad propuesta sera utilizar un banco de filtros calcular las MDF en cada uno de ellos y observar como se acoplan las respuestas. 81

Tambin es preciso iniciar el esudio de la nasalizacin usando sonidos consonnticos. Este es un desafo ms serio pero permitir complementar el diagnstico de manera certera. Un sistema que pueda analizar de manera contina las voces de los nios y decidir si poseen o no hipernasalidad, sera el objetivo buscado; surgir como complemento del anlisis en los tramos voclicos y su interaccin con las consonantes.

82

Captulo 7
APENDICES
A. Praat: Software para el Anlisis de Seales de Voz El objetivo de esta seccin es presentar de manera general a Praat, el software que nos acompa en el clculo de algunas de las mtricas consideradas en esta tesis. Si el lector esta interesado en usar este recurso para el anlisis de seales de voz, aqu puede encontrar algunos comentarios tiles producto de mi experiencia con el programa. Existen 2 ventanas principales en Praat: La ventana de Objetos y la ventana de Imgenes. Los objetos son la abstraccin del programa para almacenar diferentes resultados. Por ejemplo cuando se carga una grabacin aparece como un objeto tipo Sound en la ventana de objetos. Si se calcula un espectro aparece un objeto tipo Spectrum en esta ventana. La Fig. 7.1 muestra a la izquierda la ventana de objetos con tres objetos distintos.

Fig. 7.1 Ventanas en Praat

Cada objeto habilita un conjunto de botones y operaciones que pueden realizarse con l. Por ejemplo el objeto Sound puede reproducirce, editarse, etc. Para activar los botones y herramientas que pueden modificar un objeto basta seleccionarlo al hacer clic sobre l y el objeto se enmarcar en azul. La ventana de Imgenes se usa para graficar todo tipo de resultados. En la Fig. 7.1. a la derecha aparece la grafica de un objeto tipo formantes. En este caso se muestra el valor de los cuatro primeros formantes a lo largo de todo el Sound.

83

Scripting en Praat El scripting es la forma ms sencilla de extender las capacidades de Praat. Consiste en un lenguaje propio del programa que permite la creacin de variables, objetos y desplegar todo tipo de resultados. En trminos prcticos el scripting permite automatizar tareas e incluirlas en un marco lgico conveniente. Suponga por ejemplo que usted quiere cargar y reproducir en secuencia 30 sonidos de manera consecutiva. Esto podra hacerlo con el Mouse usando los botones y mens adecuados pero sera una tarea larga y montona. Usando un script podra hacerlo todo rpidamente ayudado de un ciclo y los comandos apropiados. El scripting en Praat define un conjunto de reglas sintcticas propias. Al inicio es difcil familiarizarse con esta herramienta pero luego de un tiempo las ventajas de automatizar procesos compensan el tiempo empleado en aprender el lenguaje. Existe tambin una herramienta en el scripting que permite copiar de manera automtica las instrucciones deseadas. Para ello es preciso que todos los comandos requeridos sean accesados en orden para luego ser plasmados en el script. En Praat existen 2 tipos principales de variables: string y numricas. Las variables numricas pueden ser de muchos subtipos (real, entera, etc). Los nombres de las variables string finalizan con el smbolo $. Para extraer el valor de una variable usando su nombre se usan comillas sencillas, as nombreVariable$ extrae el string almacenado en la variable nombreVariable$. Praat despliega por defecto los resultados en una ventana de informacin llamada info. Para almacenar en un archivo es preciso capturar la salida y redireccionarla. Los comentarios se inician con los smbolos #, ! ;. Yo acostumbro usar #. Existen algunas variables predefinidas en Praat. Por ejemplo newline$ y tab$ son strings que resultan tiles en la creacin de archivos de texto. Obtener Diagrama LPC con Praat Para obtener un buen diagrama LPC usando Praat es preciso convertir a monofnica la grabacin a emplear. Cuando se usa el Sound stereo todo el LPC se aplana y es muy difcil discernir formantes en l. Para obtener entonces un buen LPC procedemos: Convertir a monofnico Remuestrear para bajar la frecuencia de muestreo. Esto es preciso porque Praat ejecuta el anlisis hasta la frecuencia de Nyquist. (Por ejemplo si tiene una frecuencia de muestreo de 48 Khz bajela a 16Khz.) Crear objeto LPC. Use autocorrelation con orden 25. Los dems valores por defecto. 84

Un ejemplo de lo obtenido se muestra en la Fig. 7.2., en ella hemos usado el archivo O5_M1_N, a los 0.09 s.

Fig. 7.2 LPC de O5_M1_N a los 90ms

Cuando el orden es muy bajo los picos pierden amplitud y el pico a 0 Hz se vuelve el ms visible. Matrices en Praat Praat interpreta algunos objetos como matrices. Por ejemplo un Sound monofnico puede ser visto como una matriz de una fila donde cada columna es el valor de una muestra. Si el Sound es stereo entonces tendremos dos filas, una para cada canal. En el caso de un objeto Spectrum la primera fila es la parte real y la segunda es la parte imaginaria. Suponga que quiere calcular el perfil TEO de una seal con Praat. Para ello es preciso implementar la formula:

Donde x(n) es la funcin discreta en el tiempo. Con el objetivo de ganar confianza en el uso de matrices realicemos la siguiente prueba: Dado x = 2 3 4 5, calcule el TEO correspondiente a esta secuencia en Praat. Solucin: Se crea la matriz (vector 2, 3, 4, 5) con: New Create simple Matriz Luego la modificamos con la formula: 85

self^2 self[row, col - 1] * self[row, col +1] self es una referencia a la matriz seleccionada. La expresin se calcula sobre todas las filas y columnas disponibles. Si realiza el ejemplo previo encontrar que el resultado es inesperado. Praat modifica las matrices in situ, es decir no crea copia para el clculo. Como consecuencia cada operacin modifica el objeto original de tal forma que, por ejemplo, el self ms a la derecha el ejemplo dado, referencia un objeto distinto al primer self. La solucin es crear una matriz para cada suboperacin obtenindose en nuestro ejemplo el conjunto de operaciones mostrado en la Tabla 7.1. Expresin usada original: 2 3 4 5 cuadrados: 4 9 16 25 sigprev: 0 8 15 0 TEO: 4 1 1 25 x+y Matrix_original[row,col]^2 Matrix_original[row,col+1]* Matrix_original[row,col-1] Matriz_cuadrados[row,col] Matriz_sigprev[row,col]

Tabla 7.1. Conjunto de operaciones para calcular el TEO

Todos los objetos se crean con: Create simple Matrix En el men New. Para generalizar esto y calcular el TEO en los frames de un Sound basta utilizar el objeto Sound y las nuevas matrices asociadas.

86

B. Scripts y Funciones Implementados en Matlab A continuacin se comparte el cdigo implementado en Matlab para calcular las mtricas evaluadas. Este recurso no est optimizado y es claramente digno de mejora. En particular algunos procedimientos eran comunes a diferentes mtricas pero aqu el clculo para cada una de ellas es independiente. La principal razn para incluir este apndice es permitir que los resultados obtenidos fueran fcilmente reproducibles adems de brindar, a quien desee realizar un trabajo semejante, un punto inicial que le ahorre esfuerzo. El diseo de los scripts para calcular cada mtrica se abord de manera modular. El nivel ms alto incluye la funcin que calcula la mtrica en la base de datos. Se espera que esta base tenga la estructura discutida en la sesin 3.2.4. Este nivel hace uso de la funcin que calcula la mtrica en un directorio quien a su vez puede apoyarse en funciones que calculan la mtrica en una grabacin o un frame individual. El cdigo se prob justo antes de transcribirlo en Matlab 7. Bastara copiarlo y utilizar la funcin ms general que calcula la mtrica sobre la base de datos. Si el cdigo va a ser copiado considere que algunas lneas largas puedieron ser divididas en dos al hacer la transcripcin. Como se explic antes el calculo de algunas mtricas requiere el estimado de formantes devuelto por Praat. Las mtricas que usan las funciones de retraso tambin requieren archivos obtenidos con Praat. Los scripts que calculan estos datos se comparten tambin en el apndice C.

A1 H1 Nivel Base de Datos:


% Calcula A1 - H1 en toda la base de datos,version 2 clear all clc % Leer carpeta Padre de la base de datos directoryParent = uigetdir('C:\Documents and Settings\Sirjoy\Escritorio\Tesis\Apoyo Manizales\Vocales'); % Listar los nios ninos = dir(directoryParent); % Vector celdas con todos los valores para metrica A1 - H1, primera fila: % voz sana, segunda fila: voz hipernasal; se espera que la mitad de la base % de datos sea de nios sanos y la otra mitad nios hipernasales mitad = ceil((length(ninos) - 2)/2); A1H1_BD = cell(2,mitad); tipos_A1H1 = cell(2,mitad); k = 1; % Evadir "." y "..": limite inicia en 3 for i = 3:length(ninos) ninoDirName = ninos(i).name; if (ninoDirName(1) == 'C') % Llamar funcion que calcula A1 - H1 en un directorio, se espera voz % sana [A1H1_BD{1,k},tipos_A1H1{1,k}] = A1H1_DirectorioFcn2(cat(2,directoryParent,'\',ninoDirName)); k = k + 1; else % Se espera voz hipernasal

87

[A1H1_BD{2,k - mitad},tipos_A1H1{2,k - mitad}] = A1H1_DirectorioFcn2(cat(2,directoryParent,'\',ninoDirName)); k = k + 1; end end save A1H1_BD A1H1_BD save tipos_A1H1 tipos_A1H1

Nivel Directorio:
Este cdigo obtiene la mtrica A1 H1 a nivel directorio. Requiere los archivos con el estimado de formantes calculado con Praat.
function [A1H1_Directorio,tipoVocalEnDir] = A1H1_DirectorioFcn2(ninoDirName) % Halla A1 - H1 en las muestras de un directorio. N = 1024; % orden fft % Obtener el nombre de todos los archivos en el directorio files = dir(ninoDirName); files = files(3:length(files)); % cuantas grabaciones hay disponibles numArchivos = length(files); % Preallocation mtricas para todos los sound: cada columna contiene A1 - H1 % para un archivo; dada una columna en cada fila estaria A1 - H1 para cada % frame. Dado que se desconoce de antemano el numero de frames disponibles % en cada sound es preciso usar celdas para almacenar vectores de diferente tamao A1H1_Directorio = cell(1,numArchivos); % Ancho frame: anchoFrame = 15e-3; % Parametros funcion que halla picos SlopeT = 1.9e-3; AmpT = -25; SmoothW = 6; FitW = 6; % Coeficiente de Preenfasis a = 0.97; % Limites asociados a identificacion de H1 limFreqInf = 150; limFreqSup = 400; limAmpInf = -25; limBWInf = 40; for l = 1:numArchivos % nombre grabacion nameFile = files(l).name; % Obtener Sound [Sound, Fs, Nbits] = wavread(nameFile); % Obtener valores estimados rastreador de formantes para todos los frames nameFile = nameFile(1:length(nameFile) - 4) % Quitar .wav del nombre datos = importdata(cat(2,nameFile,'_formant.txt')); % Estructura con los formantes e informacion relacionada frameStruct = formantsFromPraat(datos); % Descartar canal sin seal if (~isvector(Sound)) if (max(Sound(:,1)) < max(Sound(:,2))) Sound = Sound(:,2); else Sound = Sound(:,1); end end % Remuestreo a 8k si Fs es 48k Sound = resample(Sound, 1, 6, 20); Fs = Fs/6; % Numero de muestras por frame: NsamplesFrame = floor((Fs)*anchoFrame); % Duracion sonido longSound = length(Sound); % paso de 2.5ms paso = floor((Fs)*2.5e-3); % Enventanado: calculo ventana w1 = window(@hamming,NsamplesFrame + 1); % Limites analisis puntoInicial = floor(0.2*longSound); puntoFinal = floor(0.8*longSound); % Preallocation

88

A1_H1 = zeros(1,floor((puntoFinal - puntoInicial - NsamplesFrame)/paso) + 1); cursor = puntoInicial; count = 0; while (cursor < puntoFinal - NsamplesFrame) count = count + 1; % Extraccion ventana FrameV = w1.*Sound(cursor:cursor + NsamplesFrame); % Paso cursor = cursor + paso; % Normalizar frame FrameV = FrameV/max(FrameV); % Aplicar Preenfasis FrameV = filter([1 -a],1,FrameV); % vector de absisas F = (Fs)*((0:(N/2) - 1)/N); % FFT Ventana X = abs(fft(FrameV,N));% fft fftMag = X(1:N/2);% frecuencias reales if fftMag(1) < 1E-8, fftMag(1) = fftMag(2)/10; end; % avoid log(0) DbMagX = 20*log10(fftMag) ;% magnitud en decibelios % Hallar todos los picos sobre el espectro P = findpeaks(F,DbMagX,SlopeT,AmpT,SmoothW,FitW); sizeP = size(P); % Obtener valores estimados rastreador de formantes % Si no hay suficientes frames formantes use ultimo valor para resto if (count > length(frameStruct)) F1_estimado = frameStruct(length(frameStruct)).formant(1).freq; else F1_estimado = frameStruct(count).formant(1).freq; end % Controlar limites inferiores y superiores de F1 devueltos % por Praat if (F1_estimado < 550) F1_estimado = 550; elseif (F1_estimado > 1000) F1_estimado = 1000; end % Mejorar estimativo F1 % inicializar vector distancia VD_F1 = zeros(1,sizeP(1)); % vector frecuencias todos los picos VP_freq = P(:,2); for k = 1:sizeP(1) VD_F1(k) = abs(F1_estimado - VP_freq(k)); end %[minDist,indexF1] = min(VD_F1); [minDist,indexF1Op1] = min(VD_F1); VD_F1(indexF1Op1) = Inf; [minDist,indexF1Op2] = min(VD_F1); % Escoger entre los 2 picos cercanos a F1_estimado el que es mas alto if P(indexF1Op1,3) > P(indexF1Op2,3) indexF1 = indexF1Op1; else indexF1 = indexF1Op2; end % Busque H1 entre los primeros 4 picos indexH1 = 1; % Primer pico por defecto for i = 1:4 % Si frecuencia en rango: if ((P(i,2) > limFreqInf) && (P(i,2) < limFreqSup)) % si amplitud en rango: if (P(i,3) > limAmpInf) % si ancho de banda en rango if P(i,4) > limBWInf indexH1 = i; end end end end % Obtener H1 H1 = P(indexH1,3); % Obtener A1 A1 = P(indexF1,3); % Calculo mtrica A1_H1(count) = A1 - H1 ; end A1H1_Directorio{l} = A1_H1;

89

end % Creacion de vector de tipos para diferenciar cada vocal k = 1; tipoVocalEnDir = cell(length(cell2mat(A1H1_Directorio)),1); for i = 1:length(files) nombreFile = files(i).name; longName = length(nombreFile); % Longitud nombre tipoVoz = nombreFile(longName - 4);% El tipo es la ultima letra sin .wav switch nombreFile(1) case 'A' for m = 1:length(A1H1_Directorio{i}) tipoVocalEnDir{k} = cat(2,'A','_',tipoVoz); k = k + 1; end case 'E' for m = 1:length(A1H1_Directorio{i}) tipoVocalEnDir{k} = cat(2,'E','_',tipoVoz); k = k + 1; end case 'I' for m = 1:length(A1H1_Directorio{i}) tipoVocalEnDir{k} = cat(2,'I','_',tipoVoz); k = k + 1; end case 'O' for m = 1:length(A1H1_Directorio{i}) tipoVocalEnDir{k} = cat(2,'O','_',tipoVoz); k = k + 1; end case 'U' for m = 1:length(A1H1_Directorio{i}) tipoVocalEnDir{k} = cat(2,'U','_',tipoVoz); k = k + 1; end end end

A1 P0 y A1 P1 Nivel Base de Datos


% Calcula A1 - P0 y A1 - P1 en toda la base de datos clear all clc % Leer carpeta Padre de la base de datos directoryParent = uigetdir('C:\Documents and Settings\Sirjoy\Escritorio\Tesis\Apoyo Manizales\Vocales'); % Listar los nios ninos = dir(directoryParent); % Vectores celdas con todos los valores para metrica A1 - P0 y A1 - P1, % Para cad vector: % Primera fila:voz sana, % Segunda fila: voz hipernasal; se espera que la mitad de la base % de datos sea de nios sanos y la otra mitad nios hipernasales mitad = ceil((length(ninos) - 2)/2); A1P0_BD = cell(2,mitad); A1P1_BD = cell(2,mitad); tipos_A1P0 = cell(2,mitad); tipos_A1P1 = cell(2,mitad); k = 1; % Evadir "." y "..": limite inicia en 3, la base se lee en orden alfabetico for i = 3:length(ninos) ninoDirName = ninos(i).name; pathdir = cat(2,directoryParent,'\',ninoDirName); if (ninoDirName(1) == 'C')% voz sana % Llamar funcion que calcula A1 - P0 y A1 - P1 en un directorio [A1P0_BD{1,k},A1P1_BD{1,k},tipos_A1P0{1,k},tipos_A1P1{1,k}] = A1P0_A1P1_DirectorioFcn2(pathdir); k = k + 1; else% voz hipernasal [A1P0_BD{2,k - mitad},A1P1_BD{2,k - mitad},tipos_A1P0{2,k mitad},tipos_A1P1{2,k - mitad}] = A1P0_A1P1_DirectorioFcn2(pathdir); k = k + 1;

90

end end save save save save A1P0_BD A1P0_BD A1P1_BD A1P1_BD tipos_A1P0 tipos_A1P0 tipos_A1P1 tipos_A1P1

Nivel Directorio
function [A1P0_Directorio,A1P1_Directorio,tipoVocalA1P0,tipoVocalA1P1] = A1P0_A1P1_DirectorioFcn2(ninoDirName) % Calcula la metrica A1 - P0 y A1 - P1 para las grabaciones de un % nio. % Obtener el nombre de todos los archivos en el directorio files = dir(ninoDirName); files = files(3:length(files)); % cuantas grabaciones hay disponibles numArchivos = length(files); % Preallocation mtricas para todos los sound: A1P0_Directorio = cell(1,numArchivos); A1P1_Directorio = cell(1,numArchivos); for l = 1:numArchivos % nombre grabacion nameFile = files(l).name; nameFile = nameFile(1:length(nameFile) - 4) % Quitar .wav del nombre % Llamada a funcion calculo metrica en todo un sound [A1P0_Directorio{l},A1P1_Directorio{l}] = A1P0_A1PI_SoundFcn(nameFile); end % Creacion de vector de tipos para diferenciar cada vocal metrica A1 - P0 k = 1; tipoVocalA1P0 = cell(length(cell2mat(A1P0_Directorio)),1); for i = 1:length(files) nombreFile = files(i).name; longName = length(nombreFile); % Longitud nombre tipoVoz = nombreFile(longName - 4);% El tipo es la ultima letra sin .wav numFrames = length(A1P0_Directorio{i}); switch nombreFile(1) case 'A' for m = 1:numFrames tipoVocalA1P0{k} = cat(2,'A','_',tipoVoz); k = k + 1; end case 'E' for m = 1:numFrames tipoVocalA1P0{k} = cat(2,'E','_',tipoVoz); k = k + 1; end case 'I' for m = 1:numFrames tipoVocalA1P0{k} = cat(2,'I','_',tipoVoz); k = k + 1; end case 'O' for m = 1:numFrames tipoVocalA1P0{k} = cat(2,'O','_',tipoVoz); k = k + 1; end case 'U' for m = 1:numFrames tipoVocalA1P0{k} = cat(2,'U','_',tipoVoz); k = k + 1; end end end % Dado que se usaron el mismo numero de frames para calcular las metricas y % la simetria de calculo los vectores etiquetas son iguales tipoVocalA1P1 = tipoVocalA1P0;

Nivel Grabacin
function [F1_P0,F1_P1] = A1P0_A1PI_SoundFcn(nameFile) % Obtiene metricas A1 - P0 y A1 - P1 para los frames de un sound

91

% Requiere leer archivo de texto con los estimativos de los formantes % % Autor: Jonny uribe % Fecha: marzo de 2009 % Obtener valores estimados rastreador de formantes para todos los frame datos = importdata(cat(2,nameFile,'_formant.txt')); frameStruct = formantsFromPraat(datos); % Obtener sound [Sound, Fs, Nbits] = wavread(nameFile); % Descartar canal sin seal if (~isvector(Sound)) if (max(Sound(:,1)) < max(Sound(:,2))) Sound = Sound(:,2); else Sound = Sound(:,1); end end % Remuestreo a ~8k if (Fs > 40000) factor = 6; else factor = 3; end Sound = resample(Sound, 1, factor, 20); Fs = Fs/factor; % Ancho frame: anchoFrame = 10e-3; % Numero de muestras por frame: NsamplesFrame = floor((Fs)*anchoFrame); % Duracion sonido longSound = length(Sound); % paso de 2.5ms paso = floor((Fs)*2.5e-3); % Coeficiente preenfasis a = 0.97; % Eje de abcisas N = 1024; F = 0.5*(Fs)*((0:(N) - 1)/N); % Limites analisis puntoInicial = floor(0.2*longSound); puntoFinal = floor(0.8*longSound); count = 0; % variable cuenta frames cursor = puntoInicial; % Preallocation vectores mtricas F1_P0 = zeros(1,floor((puntoFinal - puntoInicial - NsamplesFrame)/paso) + 1); F1_P1 = zeros(1,floor((puntoFinal - puntoInicial - NsamplesFrame)/paso) + 1); while (cursor < puntoFinal - NsamplesFrame) count = count + 1; Frame = Sound(cursor:cursor + NsamplesFrame); cursor = cursor + paso; % Normalizar frame Frame = Frame/max(Frame); % Preenfasis Frame = filter([1 -a],1,Frame); % LPC ordenLPC = 22; % numero de coeficientes [coef,er] = lpc(Frame,ordenLPC);% calculo de lpc con funcion propia de matlab [H,W]= freqz(er,coef,N,Fs);% obtencion respuesta en freq del filtro % Obtener valores estimados rastreador de formantes % Si no hay suficientes frames formantes use ultimo valor para resto if (count > length(frameStruct)) F1 = frameStruct(length(frameStruct)).formant(1).freq; F2 = frameStruct(length(frameStruct)).formant(2).freq; else F1 = frameStruct(count).formant(1).freq; F2 = frameStruct(count).formant(2).freq; end % Controlar limites inferiores y superiores de F1 y F2 devueltos % por Praat if (F1 < 550) F1 = 550; elseif (F1 > 1000) F1 = 1000; end if (F2 < 1200) F2 = 1200; elseif (F2 > 2500)

92

F2 = 2500; end [F1_P0(count),F1_P1(count)] = getP0P1Fcn(F,absH_Db,Fs,F1,F2); end

Nivel Frame
function [F1_P0,F1_P1] = getP0P1Fcn(F,lpcDiagrama,Fs,F1_estimado,F2_estimado) % % Obtiene A1 - P0 y A1 - P1 para un frame utilizando el diagrama LPC % % Creador: Jonny Uribe % Fecha: Marzo de 2009 % offset para tener solo valores positivos diaLPC = lpcDiagrama + abs(min(lpcDiagrama)); % Normalizacion diagrama LPC diaLPC = diaLPC/max(diaLPC); % Parametros funcion que halla picos SlopeT = 4e-5; AmpT = 0.25; SmoothW = 2; FitW = 3; % Hallar todos los picos sobre el LPC P = findpeaks(F,diaLPC,SlopeT,AmpT,SmoothW,FitW); % si no se hallan picos if (isempty(P)), msgbox('No puedo hallar picos en LPC','Error','error'); end sizeP = size(P); % Si hay un pico menor a 10Hz eliminelo if (P(1,2) < 10) P = P(2:sizeP(1),:); end N = length(diaLPC); % vector frecuencias todos los picos VP_freq = P(:,2); % Mejorar estimativo F1 y F2 F1 = F1_estimado; % inicializar vectores distancia VD_F1 = zeros(1,sizeP(1)); VD_F2 = VD_F1; for i = 1:sizeP(1) VD_F1(i) = abs(F1_estimado - VP_freq(i)); VD_F2(i) = abs(F2_estimado - VP_freq(i)); end [minDist,indexF1] = min(VD_F1); if (VP_freq(indexF1) < 1200) && (VP_freq(indexF1) > 550) F1 = VP_freq(indexF1); end [minDist,indexF2] = min(VD_F2); % Modifique estimado de F1 solo si tiene sentido: pico hallado en rango % correcto if (F1 > 550 && F1 < 1300) F1_estimado = F1; end % Hallar P0 y P1 % Valores por defecto para P0 y P1 P0 = F1_estimado; P1 = P0; indexP0 = indexF1; indexP1 = indexF1; % Limites P0 y P1 limP0 = 1000; limP0Left = 40; limP1 = 2700; limP1Left = 100; % Si hay un pico previo a F1 este es P0 if (indexF1 > 1) indexP0 = indexF1 - 1; end % Si no hay picos entre F1 y F2 if (indexF2 == (indexF1 + 1)) % Si hay mas picos en el espectro... if (sizeP(1) > indexF2) % ...P1 es el pico siguiente a F2

93

indexP1 = indexF2 +1; end elseif (indexF2 ==(indexF1 + 2)) % Si solo hay un pico entre F1 y F2 % Si no ha hallado P0... if (P0 == F1_estimado) % ...este pico es P0 (intermedio entre F1 y F2) indexP0 = indexF1 + 1; % ... y P1 es el pico siguiente a F2 indexP1 = indexF2 + 1; end elseif (indexF2 > (indexF1 + 2)) % Si hay mas de un pico entre F1 y F2 % Si no ha hallado P0 if (P0 == F1_estimado) % Pico siguiente a F1 es P0 indexP0 = indexF1 + 1; % y P1 es pico siguiente a P0 indexP1 = indexF1 + 2; else % si ya hallo P0 % Pico siguiente a F1 es P1 indexP1 = indexF1 + 1; end end % Si el rastreador de picos no hallo picos lejanos asignar ultimo pico % hallado if indexP0 > length(VP_freq) indexP0 = length(VP_freq); end if indexP1 > length(VP_freq) indexP1 = length(VP_freq); end if (VP_freq(indexP0) < limP0 && VP_freq(indexP0) > limP0Left ) P0 = VP_freq(indexP0); % else % % Asignar nuevamente valor por defecto % indexP0 = indexF1; end if (VP_freq(indexP1) < limP1 && VP_freq(indexP1) > limP1Left) P1 = VP_freq(indexP1); end % Hallar amplitud picos extra A0_absc = floor((N/(Fs/2))*P0); A0 = lpcDiagrama(A0_absc); A1_absc = floor((N/(Fs/2))*P1); A1 = lpcDiagrama(A1_absc); % Devolver valor mtricas para este frame A_absc = floor((N/(Fs/2))*F1); A = lpcDiagrama(A_absc); F1_P0 = A - A0; F1_P1 = A - A1;

P250v y P250m Nivel Base de Datos:


% Calcula P250_vija y P250_me en toda la base de datos clear all clc % Leer carpeta Padre de la base de datos directoryParent = uigetdir('C:\Documents and Settings\Sirjoy\Escritorio\Tesis\Apoyo Manizales\Vocales'); % Listar los nios ninos = dir(directoryParent); % Vectores celdas con todos los valores para metrica P250_vija y P250_me, % Para cad vector: % Primera fila:voz sana, % Segunda fila: voz hipernasal; se espera que la mitad de la base % de datos sea de nios sanos y la otra mitad nios hipernasales mitad = ceil((length(ninos) - 2)/2); P250vija_BD = cell(2,mitad); P250me_BD = cell(2,mitad); tipos_P250vija = cell(2,mitad); tipos_P250me = cell(2,mitad); k = 1; % Evadir "." y "..": limite inicia en 3, la base se lee en orden alfabetico

94

for i = 3:length(ninos) ninoDirName = ninos(i).name; pathdir = cat(2,directoryParent,'\',ninoDirName); if (ninoDirName(1) == 'C')% voz sana % Llamar funcion que calcula metricas en un directorio [P250vija_BD{1,k},P250me_BD{1,k},tipos_P250vija{1,k},tipos_P250me{1,k}] = P250_Directorio2(pathdir); k = k + 1; else % voz hipernasal [P250vija_BD{2,k - mitad},P250me_BD{2,k - mitad},tipos_P250vija{2,k mitad},tipos_P250me{2,k - mitad}] = P250_Directorio2(pathdir); k = k + 1; end end save P250vija08_BD P250vija_BD save P250me08_BD P250me_BD save tipos08_P250me tipos_P250me save tipos08_P250vija tipos_P250vija

Nivel Directorio
function [P250_vija,P250_me,tipos_P250vija,tipos_P250me] = P250_Directorio2(directoryName) % calcula las metricas P250 en un directorio % Obtener el nombre de todos los archivos en el directorio files = dir(directoryName); % Los dos primeros archivos son . y .., obviarlos numArchivos = length(files) - 2; P250_vija = cell(1,numArchivos); P250_me = cell(1,numArchivos); % Leer cada archivo y calcular la metrica, obviar . y .. for i = 3:numArchivos nombreArchivo = files(i).name; % quitar .wav del nombre nombreArchivo = nombreArchivo(1:length(nombreArchivo) - 4) % Importar matriz valores MDF %longFileName = length(nombreArchivo); % importfileMDF(cat(2,directoryName,'\',nombreArchivo)); mdfs = importdata(cat(2,nombreArchivo,'_MDF.txt')); sizeMatriz = size(mdfs); % No usar los extremos del frame en el calculo limInicial = floor(0.2*sizeMatriz(1)); limFinal = floor(0.8*sizeMatriz(1)); matrizValues = mdfs(limInicial:limFinal,:); % Llamar funcion calcula metrica en un sound [P250_vija{i - 2},P250_me{i - 2}] = P250_Sound(matrizValues); end % Creacion de vector de tipos para diferenciar cada vocal files = files(3:length(files)); k = 1; tipos_P250vija = cell(length(cell2mat(P250_vija)),1); for i = 1:length(files) nombreFile = files(i).name; longName = length(nombreFile); % Longitud nombre tipoVoz = nombreFile(longName - 4);% El tipo es la ultima letra sin .wav numFrames = length(P250_vija{i}); switch nombreFile(1) case 'A' for m = 1:numFrames tipos_P250vija{k} = cat(2,'A','_',tipoVoz); k = k + 1; end case 'E' for m = 1:numFrames tipos_P250vija{k} = cat(2,'E','_',tipoVoz); k = k + 1; end case 'I' for m = 1:numFrames tipos_P250vija{k} = cat(2,'I','_',tipoVoz); k = k + 1; end case 'O' for m = 1:numFrames

95

tipos_P250vija{k} = cat(2,'O','_',tipoVoz); k = k + 1; end case 'U' for m = 1:numFrames tipos_P250vija{k} = cat(2,'U','_',tipoVoz); k = k + 1; end end end % Dado que se usaron el mismo numero de frames para calcular las metricas y % la simetria de calculo los vectores etiquetas son iguales tipos_P250me = tipos_P250vija;

Nivel Grabacin
function [P250_vija,P250_me] = P250_Sound(MDF_Matrix) % Calcula la amplitud relativa del pico a 250Hz en todo un Sound. % Usa el algoritmo propuesto por Vijayalahsmi para medir esta amplitud y % una pequea variacion propuesta por me. % % Este codigo trabaja sobre las MDF previamente calculadas % % Autor: Jonny Alexander Uribe % Fecha: Marzo de 2009 sizeMDF = size(MDF_Matrix); Fs = 8000; N = 2*sizeMDF(2); F = (Fs)*((0:(N/2) - 1)/N); % Vector abscisas % Parametros funcion que halla picos SlopeT = 0.096; AmpT = 0.02; SmoothW = 2; FitW = 3; % Preallocation P250_vija = zeros(1,sizeMDF(1)); P250_me = zeros(1,sizeMDF(1)); for i = 1:sizeMDF(1)% Para todos los frames Frame = MDF_Matrix(i,:); % Normalizar Frame Frame = Frame/max(Frame); P = findpeaks(F,Frame,SlopeT,AmpT,SmoothW,FitW); % Informar cuando no se halla al menos 2 picos sizeP = size(P); if (sizeP(1) < 2 ) msgbox('No se hallaron picos suficientes','Error','error'); end %%%%%%%%%% Vija %%%%%%%%%%%%%%%%%%%%%%%%%% % Ordenar filas de P segun amplitud pico de mayor a menor Psort = sortrows(P,-3); if (Psort(1,2) < Psort(2,2)) P250_vija(i) = Psort(1,3)/Psort(2,3); else P250_vija(i) = Psort(2,3)/Psort(1,3); end %%%%%%%%%%%%% Me %%%%%%%%%%%%%%%%%%%%%%%% m = 1; distM = abs(P(m,2) - 250); % Hallar pico mas cercano a 250 for k = 2:sizeP(1) if (abs(P(k,2) - 250) < distM ) m = k; distM = abs(P(m,2) - 250); end end % Amplitud pico a 250 (o mas cercano) P250 = P(m,3); % Obtener el pico mas alto excluyendo P250: P(m,3) = -Inf; % Ordenar filas de P segun amplitud pico de mayor a menor Psort = sortrows(P,-3); P250_me(i) = P250/Psort(1,3); end

96

Mtrica CTEO Nivel Base de Datos:


% Calcula CTEO en toda la base de datos clear all clc % Leer carpeta Padre de la base de datos directoryParent = uigetdir('C:\Documents and Settings\Sirjoy\Escritorio\Tesis\Apoyo Manizales\Vocales'); % Listar los nios ninos = dir(directoryParent); % Vector celdas con todos los valores para metrica CTEO, % Primera fila:voz sana, % Segunda fila: voz hipernasal; se espera que la mitad de la base % de datos sea de nios sanos y la otra mitad nios hipernasales mitad = ceil((length(ninos) - 2)/2); CTEO_BD = cell(2,mitad); tipos_CTEO = cell(2,mitad); k = 1; % Evadir "." y "..": limite inicia en 3, la base se lee en orden alfabetico for i = 3:length(ninos) ninoDirName = ninos(i).name; pathdir = cat(2,directoryParent,'\',ninoDirName); if (ninoDirName(1) == 'C')% voz sana % Llamar funcion que calcula metricas en un directorio [CTEO_BD{1,k},tipos_CTEO{1,k}] = CTEO_DirFcn2(pathdir); k = k + 1; else % voz hipernasal [CTEO_BD{2,k - mitad},tipos_CTEO{2,k - mitad}] = CTEO_DirFcn2(pathdir); k = k + 1; end end save CTEO_BD CTEO_BD save tipos_CTEO tipos_CTEO

Nivel Directorio
function [CTEO_Directorio,tipoVocalCTEO] = CTEO_DirFcn2(ninoDirName) % Calcula CTEO en un directorio, es posible discriminar por vocal % % Autor: Jonny Uribe % Fecha: Marzo de 2009 % Obtener el nombre de todos los archivos en el directorio filesTodos = dir(ninoDirName); files = filesTodos(3:length(filesTodos)); % cuantas grabaciones hay disponibles numArchivos = length(files); % Preallocation mtricas para todos los sound: cada columna contiene CTEO % para un archivo; dada una columna en cada fila estaria CTEO para cada % frame. Dado que se desconoce de antemano el numero de frames disponibles % en cada sound es preciso usar celdas para almacenar vectores de diferente tamao CTEO_Directorio = cell(1,numArchivos); for i = 1:numArchivos % nombre grabacion nameFile = files(i).name % Llamada a funcion que calcula CTEO en un sound CTEO_Directorio{i} = CTEO_Sound(nameFile); end % Creacion de vector de tipos para diferenciar cada frame k = 1; tipoVocalCTEO = cell(length(cell2mat(CTEO_Directorio)),1); for i = 1:length(files) nombreFile = files(i).name; longName = length(nombreFile); % Longitud nombre tipoVoz = nombreFile(longName - 4);% El tipo es la ultima letra sin .wav numFrames = length(CTEO_Directorio{i}); switch nombreFile(1) case 'A' for m = 1:numFrames tipoVocalCTEO{k} = cat(2,'A','_',tipoVoz); k = k + 1;

97

end case 'E' for m = 1:numFrames tipoVocalCTEO{k} k = k + 1; end case 'I' for m = 1:numFrames tipoVocalCTEO{k} k = k + 1; end case 'O' for m = 1:numFrames tipoVocalCTEO{k} k = k + 1; end case 'U' for m = 1:numFrames tipoVocalCTEO{k} k = k + 1; end end end

= cat(2,'E','_',tipoVoz);

= cat(2,'I','_',tipoVoz);

= cat(2,'O','_',tipoVoz);

= cat(2,'U','_',tipoVoz);

Nivel Grabacin
function [CTEOsoundSin0] = CTEO_Sound2(nameFile) % Calcula CTEO en un sound % % Autor: Jonny uribe % Fecha: Marzo de 2009 % Obtener Sound [Sound, Fs, Nbits] = wavread(nameFile); % Obtener valores estimados rastreador de formantes para todos los frames nameFile = nameFile(1:length(nameFile) - 4); % Quitar .wav del nombre datos = importdata(cat(2,nameFile,'_formant.txt')); % Estructura con los formantes e informacion relacionada frameStruct = formantsFromPraat(datos); % Descartar canal sin seal if (~isvector(Sound)) if (max(Sound(:,1)) < max(Sound(:,2))) Sound = Sound(:,2); else Sound = Sound(:,1); end end % Remuestreo a ~8k if (Fs > 40000) factor = 6; else factor = 3; end Sound = resample(Sound, 1, factor, 20); Fs = Fs/factor; % Ancho frame: anchoFrame = 30e-3; % Numero de muestras por frame: NsamplesFrame = floor((Fs)*anchoFrame); % Duracion sonido longSound = length(Sound); % paso de 2.5ms paso = floor((Fs)*2.5e-3); % Enventanado: calculo ventana w1 = window(@hamming,NsamplesFrame + 1); % Limites analisis puntoInicial = floor(0.2*longSound); puntoFinal = floor(0.8*longSound); % Preallocation CTEOsound = zeros(1,floor((puntoFinal - puntoInicial - NsamplesFrame)/paso) + 1); cursor = puntoInicial; count = 0; while (cursor < puntoFinal - NsamplesFrame) count = count + 1; % Extraccion ventana FrameV = w1.*Sound(cursor:cursor + NsamplesFrame);

98

% Paso cursor = cursor + paso; % Normalizar frame FrameV = FrameV/max(FrameV); % Obtener valores estimados rastreador de formantes % Si no hay suficientes frames formantes use ultimo valor para resto if (count > length(frameStruct)) F1 = frameStruct(length(frameStruct)).formant(1).freq; else F1 = frameStruct(count).formant(1).freq; end % Controlar limites inferiores y superiores de F1 devueltos % por Praat if (F1 < 550) F1 = 550; elseif (F1 > 1000) F1 = 1000; end % Llamada funcion que calcula CTEO en frame [CTEOsound(count)] = CTEO_FrameFcn(FrameV,Fs,F1); end

Nivel Frame
function [CTEOframe] = CTEO_FrameFcn(Frame,Fs,F1) % Calcula metrica CTEO para un frame de voz % Parametros: % Frame de voz % Fs: Frecuencia de muestreo % F1: Frecuencia primer formante % % Autor: Jonny Uribe % Fecha: Marzo de 2009 % Normalizacion Frame Frame = Frame/max(Frame); % Low pass signal, cutoff en F1 Wn_lpf = F1/(Fs/2); coef_lpf = fir1(50,Wn_lpf); Y_lpf = filter(coef_lpf,1,Frame); % Band pass signal around F1 scope = 50; % 50 Hz around F1 Wn_bpf = [(F1 - scope)/(Fs/2) (F1 + scope)/(Fs/2)]; coef_bpf = fir1(50,Wn_bpf); Y_bpf = filter(coef_bpf,1,Frame); % TEO lpf signal s_lp = Y_lpf'/max(Y_lpf); % Normalizacion seal TEO_lpf = zeros(1,length(Frame)); % Preallocation for i = 2:length(Frame) - 1 TEO_lpf(i) = s_lp(i)^2 - s_lp(i -1)*s_lp(i + 1); end % Filtrado perfil TEO pasabajas Wn_teo = 0.5e3/(Fs/2); TEO_lpf_f = filter(fir1(50,Wn_teo),1,TEO_lpf); TEO_lpf_f_n = TEO_lpf_f/max(TEO_lpf_f); % TEO bpf signal s_bp = Y_bpf'/max(Y_bpf); % Normalizacion seal TEO_bpf = zeros(1,length(Frame)); for i = 2:length(Frame) - 1 TEO_bpf(i) = s_bp(i)^2 - s_bp(i -1)*s_bp(i + 1); end % Filtrado perfil TEO pasabanda TEO_bpf_f = filter(fir1(50,Wn_teo),1,TEO_bpf); TEO_bpf_f_n = TEO_bpf_f/max(TEO_bpf_f); % Correlacion cruzada normalizada rxy = xcorr(TEO_lpf_f_n,TEO_bpf_f_n,'coeff'); %rxy = corrcoef(TEO_lpf_f_n,TEO_bpf_f_n); valorFrame = max(rxy); CTEOframe = valorFrame;

F1BW Nivel Base de Datos


99

% Calcula F1BW en toda la base de datos clear all clc % Leer carpeta Padre de la base de datos directoryParent = uigetdir('C:\Documents and Settings\Sirjoy\Escritorio\Tesis\Apoyo Manizales\Vocales'); % Listar los nios ninos = dir(directoryParent); % Vector celdas con todos los valores para metrica F1BW, primera fila: % voz sana, segunda fila: voz hipernasal; se espera que la mitad de la base % de datos sea de nios sanos y la otra mitad nios hipernasales mitad = ceil((length(ninos) - 2)/2); F1BW_BD = cell(2,mitad); tipos_F1BW = cell(2,mitad); k = 1; % Evadir "." y "..": limite inicia en 3 for i = 3:length(ninos) ninoDirName = ninos(i).name; if (ninoDirName(1) == 'C') % Llamar funcion que calcula A1 - H1 en un directorio, se espera voz % sana [F1BW_BD{1,k},tipos_F1BW{1,k}] = F1BW_DirectorioFcn(cat(2,directoryParent,'\',ninoDirName)); k = k + 1; else % Se espera voz hipernasal [F1BW_BD{2,k - mitad},tipos_F1BW{2,k - mitad}] = F1BW_DirectorioFcn(cat(2,directoryParent,'\',ninoDirName)); k = k + 1; end end save F1BW_BD F1BW_BD save tipos_F1BW tipos_F1BW

Nivel Directorio
function [F1BW_Directorio,tipoVocalF1BW] = F1BW_DirectorioFcn(ninoDirName) % Calcula la metrica F1BW para las grabaciones de un % nio. Es posible discriminar por vocal % Obtener el nombre de todos los archivos en el directorio files = dir(ninoDirName); files = files(3:length(files)); % cuantas grabaciones hay disponibles numArchivos = length(files); % Preallocation mtricas para todos los sound: F1BW_Directorio = cell(1,numArchivos); for l = 1:numArchivos % nombre grabacion nameFile = files(l).name; nameFile = nameFile(1:length(nameFile) - 4) % Quitar .wav del nombre % Llamada a funcion calculo metrica en todo un sound [F1BW_Directorio{l}] = F1BW_SoundFcn(nameFile); end % Creacion de vector de tipos para diferenciar cada vocal metrica A1 - P0 k = 1; tipoVocalF1BW = cell(length(cell2mat(F1BW_Directorio)),1); for i = 1:length(files) nombreFile = files(i).name; longName = length(nombreFile); % Longitud nombre tipoVoz = nombreFile(longName - 4);% El tipo es la ultima letra sin .wav numFrames = length(F1BW_Directorio{i}); switch nombreFile(1) case 'A' for m = 1:numFrames tipoVocalF1BW{k} = cat(2,'A','_',tipoVoz); k = k + 1; end case 'E' for m = 1:numFrames tipoVocalF1BW{k} = cat(2,'E','_',tipoVoz); k = k + 1; end

100

case 'I' for m = 1:numFrames tipoVocalF1BW{k} = cat(2,'I','_',tipoVoz); k = k + 1; end case 'O' for m = 1:numFrames tipoVocalF1BW{k} = cat(2,'O','_',tipoVoz); k = k + 1; end case 'U' for m = 1:numFrames tipoVocalF1BW{k} = cat(2,'U','_',tipoVoz); k = k + 1; end end end

Nivel Grabacin
function [F1BW] = F1BW_SoundFcn(nameFile) % Obtiene metrica F1BW para los frames de un sound % Requiere leer archivo de texto con los estimativos de los formantes % % Autor: Jonny uribe % Fecha: marzo de 2009 % Obtener valores estimados rastreador de formantes para todos los frame datos = importdata(cat(2,nameFile,'_formant.txt')); frameStruct = formantsFromPraat(datos); % Obtener sound [Sound, Fs, Nbits] = wavread(nameFile); % Descartar canal sin seal if (~isvector(Sound)) if (max(Sound(:,1)) < max(Sound(:,2))) Sound = Sound(:,2); else Sound = Sound(:,1); end end % Remuestreo a ~8k if (Fs > 40000) factor = 6; else factor = 3; end Sound = resample(Sound, 1, factor, 20); Fs = Fs/factor; % Ancho frame: anchoFrame = 10e-3; % Numero de muestras por frame: NsamplesFrame = floor((Fs)*anchoFrame); % Duracion sonido longSound = length(Sound); % paso de 2.5ms paso = floor((Fs)*2.5e-3); % Coeficiente preenfasis a = 0.97; % Eje de abcisas N = 1024; F = 0.5*(Fs)*((0:(N) - 1)/N); % Limites analisis puntoInicial = floor(0.2*longSound); puntoFinal = floor(0.8*longSound); count = 0; % variable cuenta frames cursor = puntoInicial; % Preallocation vectores mtricas F1BW = zeros(1,floor((puntoFinal - puntoInicial - NsamplesFrame)/paso) + 1); while (cursor < puntoFinal - NsamplesFrame) count = count + 1; Frame = Sound(cursor:cursor + NsamplesFrame); cursor = cursor + paso; % Normalizar frame Frame = Frame/max(Frame); % Preenfasis Frame = filter([1 -a],1,Frame);

101

% LPC ordenLPC = 8; % numero de coeficientes [coef,er] = lpc(Frame,ordenLPC);% calculo de lpc con funcion propia de matlab [H,W]= freqz(er,coef,N,Fs);% obtencion respuesta en freq del filtro absH_Db = 20*log10(abs(H)); % Obtener valores estimados rastreador de formantes % Si no hay suficientes frames formantes use ultimo valor para resto if (count > length(frameStruct)) F1 = frameStruct(length(frameStruct)).formant(1).freq; else F1 = frameStruct(count).formant(1).freq; end % Controlar limites inferiores y superiores de F1 y F2 devueltos % por Praat if (F1 < 550) F1 = 550; elseif (F1 > 1000) F1 = 1000; end [F1BW(count)] = getF1BWFcn(F,absH_Db,Fs,F1); end

Nivel Frame
function [F1BW] = getF1BWFcn(F,lpcDiagrama,Fs,F1_estimado) % % Obtiene F1BW para un frame utilizando el diagrama LPC % % Creador: Jonny Uribe % Fecha: Marzo de 2009 F1BW = 0; % offset para tener solo valores positivos diaLPC = lpcDiagrama + abs(min(lpcDiagrama)); % Normalizacion diagrama LPC diaLPC = diaLPC/max(diaLPC); % Parametros funcion que halla picos SlopeT = 4e-6; AmpT = 0.02; SmoothW = 2; FitW = 3; % Hallar todos los picos sobre el LPC P = findpeaks(F,diaLPC,SlopeT,AmpT,SmoothW,FitW); sizeP = size(P); % si no se hallan picos if (isempty(P)), msgbox('No puedo hallar picos en LPC','Error','error'); end % Si hay un pico menor a 10Hz eliminelo if (P(1,2) < 10) P = P(2:sizeP(1),:); end % vector frecuencias todos los picos VP_freq = P(:,2); % Mejorar estimativo F1 y F2 % inicializar vectores distancia VD_F1 = zeros(1,sizeP(1)); for i = 1:sizeP(1) VD_F1(i) = abs(F1_estimado - VP_freq(i)); end [minDist,indexF1] = min(VD_F1); if (VP_freq(indexF1) < 1200) && (VP_freq(indexF1) > 350) F1BW = P(indexF1,4); end

Despliegue de Resultados
function [dataNninos,tipoVocalNs,dataHninos,tipoVocalHs] = datasBoxPlotDiscrimina(metrica,tipoVocalEstru,ninos,vocales) % Entrega datos para graficar % Discrimina por nios y vocales % % ninos es una matriz de 2x5 % fila 1: normales (1: incluir, 0: excluir)

102

% fila 2: hipernasales(1: incluir, 0: excluir) % % vocales string con las vocales a incluir. % ejemplo: 'AEO', 'A', 'AEIOU' dataNninos = []; tipoVocalNs = {}; r = 1; % Fila 1 nios normales for i = 1:length(metrica) if ninos(1,i) tempdataNnino = cell2mat(metrica{1,i}); % contiene todas las vocales para este nio etiqueVocal = tipoVocalEstru{1,i}; for k = 1:length(etiqueVocal) chars = etiqueVocal{k}; if (~isempty(findstr(chars(1),vocales))) dataNninos(r) = tempdataNnino(k); tipoVocalNs{r} = chars; r = r + 1; end end end end % Fila 2 nios hipernasales dataHninos = []; tipoVocalHs = {}; r = 1; for i = 1:length(metrica) if ninos(2,i) tempdataHnino = cell2mat(metrica{2,i}); % contiene todas las vocales para este nio etiqueVocal = tipoVocalEstru{2,i}; for k = 1:length(etiqueVocal) chars = etiqueVocal{k}; if (~isempty(findstr(chars(1),vocales))) dataHninos(r) = tempdataHnino(k); tipoVocalHs{r} = chars; r = r + 1; end end end end

La siguiente funcin haca uso de dataBoxPlotDiscrimina. Fue usada para probar las hiptesis de normalidad y realizar los anlisis ANOVA. Cada bloque en este script era usado segn la mtrica cargada. La metodologa era descomentar los bloques adecuados a la mtrica particular.
% Cargar Metrica, escoja la mtrica a analizar metrica = P250vija_BD; tipoVocalEstru = tipos_P250vija; % Escoger nios ninos = [1 1 1 1 1; 1 1 1 1 1];% malos: N:2,4 H:3,4 % Escoger vocales vocales = 'AEIOU'; [dataNninos,tipoVocalNs,dataHninos,tipoVocalHs] = datasBoxPlotDiscrimina(metrica,tipoVocalEstru,ninos,vocales); % Eliminar ceros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % m = 1; % for k = 1:length(dataNninos) % if dataNninos(k)~= 0 % dataN(m) = dataNninos(k); % tipN{m} = tipoVocalNs{k}; % m = m + 1; % end % end % m = 1; % for k = 1:length(dataHninos) % if dataHninos(k)~= 0 % dataH(m) = dataHninos(k); % tipH{m} = tipoVocalHs{k}; % m = m + 1;

103

% end % end % dataNninos = dataN; % dataHninos = dataH; % tipoVocalNs = tipN; % tipoVocalHs = tipH; % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Contraste hipotesis normalidad % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % normplot(dataNninos) % % figure % % normplot(dataHninos) % % figure % % dataNpos = dataNninos + min(dataNninos); % % probplot('exponential',dataNpos) % % figure % % dataHpos = dataHninos + min(dataHninos); % % probplot('exponential',dataHpos) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Contraste entre vocales % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % boxplot(dataNninos,tipoVocalNs') % % figure % % boxplot(dataHninos,tipoVocalHs') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %boxplot(cat(2,dataNninos,dataHninos),cat(1,tipoVocalNs',tipoVocalHs')) % ANOVA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% % tiposNinos = cell(length(dataNninos) + length(dataHninos),1); % for i = 1:length(dataNninos), tiposNinos{i} = 'Normal'; end % for i = 1 + length(dataNninos):length(tiposNinos), tiposNinos{i} = 'Hipernasal'; end % % %boxplot(cat(2,dataNninos,dataHninos),tiposNinos) % % % [p,tbl,stats] = anova1(cat(2,dataNninos,dataHninos),tiposNinos) % figure % [c,m] = multcompare(stats) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% % Kruskall-Wallis Test % Si los datos no siguen una distribucion normal este test aplica %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tiposNinos = cell(length(dataNninos) + length(dataHninos),1); % for i = 1:length(dataNninos), tiposNinos{i} = 'Normal'; end % for i = 1 + length(dataNninos):length(tiposNinos), tiposNinos{i} = 'Hipernasal'; end % figure % [p,tbl,stats] = kruskalwallis(cat(2,dataNninos,dataHninos),tiposNinos) % figure % [c,m] = multcompare(stats)

104

C. Scripts Implementados en Praat A continuacin se comparten los dos scripts cuyas respuestas son usadas para calcular algunas mtricas. El primero de ellos crea los archivos correspondientes a los formantes. El segundo script calcula las MDF en la base de datos. El scripting en Praat es muy truculento. Incluso un espacio en blanco en una lnea puede ocasionar un error. Al transcribir el siguiente cdigo asegurese que las lneas que se partieron en dos sean unificadas de nuevo y elimine espacios al final de cada lnea. Calculo de Formantes Debe indicarsele la ruta donde est la base de datos y donde se almacenarn los resultados. Se crear para cada grabacin un archivo de texto con el nombre del archivo analizado ms el posfijo _formant. Este archivo contiene los formantes para todos los frames en la grabacin. La estructura de almacenamiento de estos archivos es identica a la de la base de datos.
#****************** FormantExtractor.praat ******************** # # Script para leer los sound en un conjunto de carpetas y crear # objetos tipo formantes. Es preciso dar la ruta donde estan las # grabaciones y la ruta donde quedaran almacenados los formantes # # Directorio Origen (Contiene las carpetas con los sound): directoryParent$ = "C:\Documents and Settings\Sirjoy\Mis documentos\Tesis\Apoyo Manizales\Vocales" # Ruta Directorio Destino (Contendra los objetos formantes): directoryTarget$ = "C:\Documents and Settings\Sirjoy\Escritorio\VocalesFormants" # Creacion Directorio Destino system mkdir "'directoryTarget$'" # Obtencion un lista de string con los nombres de todas las carpetas Create Strings as directory list... dirList 'directoryParent$' numOfDir = Get number of strings # Avisar directorio vacio: if numOfDir < 1 exit Directorio Origen Vacio endif # Limite en 3 para evadir "." y ".." for idir from 3 to numOfDir select Strings dirList # Nombre i-esima carpeta dirName$ = Get string... idir # Lista con todas las grabaciones en carpeta actual Create Strings as file list... fileList 'directoryParent$'\'dirName$' # Numero de grabaciones numOfFiles = Get number of strings # Carpeta con los formantes para este nio system mkdir "'directoryTarget$'/'dirName$'" for ifile to numOfFiles select Strings fileList # Nombre i-esimo archivo: fileName$ = Get string... ifile # Lectura archivo: Read from file... 'directoryParent$'\'dirName$'\'fileName$' # Convertir a monofonico Convert to mono # Remuestrear Resample... 8000 50 # Crear objeto formantes To Formant (burg)... 0 5 8000 0.015 50 # Almacenar objeto formantes fileName$ = replace$(fileName$,".wav","_formant.txt",0) Write to short text file... 'directoryTarget$'/'dirName$'/'fileName$' endfor

105

endfor select all Remove pause Hecho, clic en continuar

Calculo de las Modified Delay Functions Este script calcula las MDF para todas las grabaciones en la base de datos. Debe indicarse donde se almacenarn los resultados y donde est la base de datos. La estructura de almacenamiento ser identica a la estructura de la base de datos excepto que en vez de grabaciones existirn archivos de texto con el posfijo _MDF.
# ********************** ModifiedDelayFunction4.praat *************** # # Calcula las MDF de todos los Sound en la base de datos. Almacena los # resultados como archivo de texto independiente. Cada archivo # consiste en una matriz siendo cada fila el resultado correspondiente # a cada frame de voz. # # Sumario Algoritmo: # # Leer carpeta padre # Crear lista nios # Leer nombres grabaciones en carpeta de cada nio # Cargar cada Sound uno a uno # Preparar Sound # Set alfa < 1, gama < 1 # Mientras no se alcance final del Sound haga: # 1. Extraer x(n) frame de voz # 2. Calcular nx(n) # 3. Calcular X(w) = F{x(n)} # 4. Calcular Y(w) = F{nx(n)} # 5. Calcular Cepstral Smoothed of X(w) # 6. Calcular Densidad de Potencia del cepstral smooth: # S(w)^2 = S(w)S*(w) = Re(S(w))^2 + Im(S(w))^2 # 7. Calcular Tp = Re(X(w))Re(Y(w)) + Im(X(w))Im(Y(w)) # si Tp < 0 signo = -1, eoc signo = 1 # 8. Calcular Tx = signo(abs[{Tp/[S(w)^(2gama)]}^alfa]) # # # Implementacion: # # Directorio padre directoryParent = "C:\Documents and Settings\Sirjoy\Escritorio\Tesis\Apoyo Manizales\Vocales\*" Create Strings as directory list... listDirectories 'directoryParent$' numNinos = Get number of strings pause for ininos to numNinos select listDirectories # Nombre i-esimo nino directory$ = Get string... ininos # Directorio target: directoryDestino$ = "C:\Documents and Settings\Sirjoy\Escritorio\ArchivosMDF2\'directory$'" system mkdir 'directoryDestino$' # Obtencion un lista de string con los nombres de todos los archivos listaFiles = Create Strings as file list... fileList 'directory$' numOfFiles = Get number of strings for ifile to numOfFiles select Strings fileList # Nombre i-esimo archivo: fileName$ = Get string... ifile # Lectura archivo: Read from file... 'directory$'/'fileName$' fileName$ = replace$(fileName$,".wav","",0) # Preparar Sound original = selected("Sound") originalName$ = selected$() originalName$ = replace$(originalName$," ","_",0) mono = Convert to mono

106

# Remuestreo mono = Resample... 8000 50 # Filtrar para mejorar resolucion mono = Filter (pass Hann band)... 100 1000 100 monoName$ = selected$() duration = Get total duration # paso de 5ms paso = 0.005 # ventana de 30ms: ventana = 0.015 # Punto inicial adecuado garantizar primera ventana: cursor = ventana/2 # Debug: #cursor = 0.043 #duration = 0.158 # Set alfa < 1, gama < 1 alfa = 0.8 gama = 0.85 #alfa = 0.9 #gama = 0.9 # Matriz de resultados mdl = 0 # Mientras no se alcance final del Sound haga: while cursor < duration-paso # -------------------------------# 1. Extraer x(n) frame de voz # -------------------------------Edit editor 'monoName$' Move cursor to... cursor # Seleccion limites ventana: Select... cursor-ventana/2 cursor+ventana/2 # k es usada para obtener el tiempo en ms: k = round (1000*cursor) # Extraccion ventana frame = Extract windowed selection... Ventana'k'ms Kaiser2 2 no frameName$ = selected$() frameName$ = replace$(frameName$," ","_",0) Close endeditor frameDuration = Get total duration fs = Get sampling frequency # ------------------# 2. Calcular nx(n) # ------------------# # Vector n: # dx = Periodo muestreo # nx = Numero muestras # x = dx,2dx,3dx...nxdx Create Sound from formula... n Mono 0 frameDuration fs x/dx # n.x(n): nxn$ = "Sound_n[row,col]*'frameName$'[row,col]" nxn = Create Sound from formula... nequis Mono 0 frameDuration fs 'nxn$' # ------------------------------# 3. Calcular X(w) = F{x(n)} # ------------------------------select frame xomega = To Spectrum... yes xomegaName$ = "X_'k:0'ms" Rename... 'xomegaName$' # -----------------------------# 4. Calcular Y(w) = F{nx(n)} # -----------------------------select nxn yomega = To Spectrum... yes yomegaName$ = "Y_'k:0'ms" Rename... 'yomegaName$' # -------------------------------------# 5. Calcular Cepstral Smoothed of X(w) # -------------------------------------select xomega cepstral = Cepstral smoothing... 500 Rename... Cepstral Smoothed 'k:0'ms csName$ = selected$() csName$ = replace$(csName$," ","_",0)

107

columns = Get number of bins # ----------------------------------------------------------# 6. Calcular Densidad de Potencia del cepstral smooth: # ----------------------------------------------------------# S(w)^2 = S(w)S*(w) = Re(S(w))^2 + Im(S(w))^2 exprSw2$ = "'csName$'[1,col]^2 + 'csName$'[2,col]^2" sw2 = Create simple Matrix... Sw2_'k:0'ms 1 columns 'exprSw2$' sw2Name$ = selected$() sw2Name$ = replace$(sw2Name$," ","_",0) # -------------------------------------------------------# 7. Calcular Tp = Re(X(w))Re(Y(w)) + Im(X(w))Im(Y(w)) # si Tp < 0 signo = -1, eoc signo = 1 # -------------------------------------------------------exprTp1$ = "Spectrum_'xomegaName$'[1,col]*Spectrum_'yomegaName$'[1,col]" exprTp2$ = "Spectrum_'xomegaName$'[2,col]*Spectrum_'yomegaName$'[2,col]" tpFunction = Create simple Matrix... Tp_'k:0'ms 1 columns 'exprTp1$'+'exprTp2$' tpName$ = selected$() tpName$ = replace$(tpName$," ","_",0) exprSigno$ = "'tpName$'[row,col]/abs('tpName$'[row,col])" signoName$ = "SigTp_'k:0'ms" signo = Create simple Matrix... 'signoName$' 1 columns 'exprSigno$' # Para validacion se calculan las Delay Function no modificadas: exprDlFunction$ = "'tpName$'[row,col]/'sw2Name$'[row,col]" dlFunction = Create simple Matrix... Delay_Function_'k:0'ms 1 columns 'exprDlFunction$' # -----------------------------------------------------# 8. Calcular Tx = signo(abs[{Tp/[S(w)^(2gama)]}^alfa]) # -----------------------------------------------------exprMdl$ = "Matrix_'signoName$'[row,col]*((abs('tpName$'[row,col]/('sw2Name$'[row,col]^'gama')))^alfa)" mdlName$ = "Modified_Delay_Function_'k:0'ms" # Creacion de Matriz para almacenar las MDF en todos los frame if mdl == 0 # Primer fila de la matriz mdl = Create simple Matrix... 'mdlName$' 1 columns 'exprMdl$' else # n-esima fila de la matriz mdl2 = Create simple Matrix... 'mdlName$' 1 columns 'exprMdl$' plus mdl # Aadir la nueva fila a la matriz: Merge (append rows) mdl = Rename... MDL select mdl2 endif # Preparacion proximo frame select mono cursor = cursor + paso endwhile # ------------------------# Extraccion de resultados # ------------------------select mdl Write to headerless spreadsheet file... 'directoryDestino$'/'fileName$'_MDF.txt # Limpieza de objetos ahora innecesarios select all minus listaFiles minus listDirectories Remove endfor endfor # Mensaje tarea completa pause Fin de Proceso, las MDFs han sido almacenadas # Limpieza select all Remove

108

BIBLIOGRAFIA [1] P. Vijayalakshmi, M. R. Reddy and D. OShaughnessy, " Acoustic Analysis and Detection of Hypernasality Using a Group Delay Functions" IEEE Trans. on Biomedical Engineering, vol. 54, no. 4, APRIL 2007. [2] B. Davis, Delmars Comprehensive Medical Terminology: A COMPETENCY-BASED APPROACH, Delmar Publishers, 1999. [3] World Health Organization, Typical Orofacial Clefts- cumulative data by Register, [en lnea] Junio 2007. [Marzo 2009]. Disponible en <http://www.who.int/genomics/anomalies/cumulative_data/en/> [4] G. Jaillier, L. Villegas, Labio y Paladar Hendido: Manual de manejo integral del nio, Medelln: Hospital Infantil Clnica Noel: 1999. [5] M. Y., Chen, Acoustic correlates of nasality in speech, Ph.D. tesis, MIT, Cambridge, MA, USA: Febrero de 1996. [6] J. Benesty, M. Sondhi, Y. Huang (Eds.), Springer Handbook of Speech Processing, Springer, 2008. [7] T. Pruthi, Vocal-Tract Modelling and Automatic Detection of Vowel Nasalization, Ph.D. tesis, 198 p, University of Maryland, Faculty of the Graduate School, 2007. [8] D. Cairns, J. H. Hansen y J. F. Kaiser, Recent Advances in Hypernasal Speech Detection using the Nonlinear Teager Energy Operator, in Proc. 4th Int. Conf. Spoken Language Processing, Philadelphia, 1996. [9] B. Yegnanarayana, G. Duncan, and H. A. Murthy, Formant extraction from group delay function, in Inst. Electr. Eng. Colloq. Speech Processing, Enero de 1988. [10] H. A. Murthy and B. Yegnanarayana, Formant extraction from minimum phase group delay function, in Speech Commun., Aug. 1991, vol. 10, pp. 209221. [11] H. A. Murthy and V. Gadde, The modified group delay function and its application to phoneme recognition, in Proc. IEEE Int. Conf. Acoust., Speech and Signal Processing, Apr. 2003, pp. 6871. [12] R. M. Hegde, H. A. Murthy,V. R. R. Gadde, " Significance of the Modified Group Delay Feature in Speech Recognition," IEEE Trans. On Audio, Speech, and Language Processing, vol. 15, no. 1, pp. 190-203, Enero 2007. [13] L. Youyi. Recognition of Nasality and Nasal Air Flow Problems in Children with Cleft Palate and/or Velopharingeal incompetence. Sheffield, UK, 2004, 30 p. Tesis (Master of Science in Advanced Computer Science). University of Sheffiel.

109

[14] G. Castellanos et al. Informe de actividades: Acstica de la voz en pacientes de la Fundacin Sonrisa y Clnica de LPH de Manizales. Manizales, Octubre de 2005. 165 p. [15] K. Sjlander, J. Beskow, WaveSurfer, [en Lnea], Disponible en: URL:http://www.speech.kth.se/wavesurfer/download.html. Speech, Music and Hearing. School of Computer Science and Comunication. Universidad de Estocolmo, Suiza. 1996. [Marzo 2009]. [16] Microsoft, AT&T, ESPS/WAVES+, [en Lnea], Disponible en: http://www.speech.kth.se/software/. [Marzo 2009]. [17] Eriksson, A. (2001). Materials and tools for speech science education, In the Proceedings of the European Workshop on Education and Research in Speech Communication Sciences in Associated Countries, October 27-28, 2000, Cluj-Napca, Romania, ed. by Mircea Giurgiu, 31-34. [18] P. Boersma, D. Weenink, Praat: Doing Phonetic by Computer. Institute of Phonetic Sciences, University of msterdam. [en Lnea] Disponible en: URL: http://www.praat.org. [Marzo de 2009]. [19] T. OHaver, Professor Emeritus, Department of Chemistry and Biochemistry, University of Maryland, Peak Finding and Measurement, [en lnea] (Octubre 26 de 2006). Disponible en [Marzo de 2009]:
http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.html

[20] J.F. Kaiser, On a Simple Algorithm to Calculate the `Energy' of a Signal", Proc. ICASSP-90, pp. 381-384, April 1990.

110

You might also like