116
1

TABLA DE CONTENIDO - tauja.ujaen.estauja.ujaen.es/bitstream/10953.1/6705/1/MEMORIA.pdf · la primera entrada esta palabra es definida de la siguiente manera: "Sensación producida

  • Upload
    vutruc

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

1

2

TABLA DE CONTENIDO Tabla de ilustraciones ............................................................................................ 4

1 Resumen ......................................................................................................... 8

2 Introducción .................................................................................................... 9

2.1 El sonido .................................................................................................. 9

2.1.1 Impedancia característica e intensidad acústica ................................11

2.1.2 Frecuencia, periodo, longitud de onda y amplitud ..............................13

2.1.3 Velocidad de propagación ..................................................................17

2.1.4 Espectrogramas .................................................................................18

2.2 Sonidos Pulmonares ...............................................................................27

2.3 Sibilancias ...............................................................................................30

2.3.1 Diferencias existentes entre sibilancias, roncus o ruttles ....................32

3 Objetivos ........................................................................................................35

4 Estado del arte ...............................................................................................36

5 Implementación ..............................................................................................50

5.1 Diagrama de bloques del software propuesto .........................................50

5.2 Implementación de cada bloque ..............................................................52

5.2.1 Etapa 1: adquisición de señal ............................................................52

5.2.2 Etapa 2: transformación tiempo-frecuencia. Cálculo de espectrograma

52

5.2.3 Etapa 3: cálculo de picos más significativos .......................................55

5.2.4 Etapa 4: construcción de trayectorias ................................................60

5.2.5 Etapa 5: clustering de sibilancias .......................................................70

6 Evaluación .....................................................................................................75

6.1 Base de datos. ........................................................................................75

6.1.1 Base de datos de optimización ..........................................................76

6.1.2 Base de datos de testeo I...................................................................76

6.1.3 Base de datos de testeo II..................................................................79

6.2 Métricas ..................................................................................................81

6.3 Fase de optimización ..............................................................................83

3

6.3.1 Optimización a nivel de frame ............................................................84

6.3.2 Optimización a nivel de evento ..........................................................90

6.4 Testeo I ...................................................................................................93

6.5 Testeo II ..................................................................................................97

7 Conclusiones y líneas futuras ....................................................................... 101

8 Bibliografía ................................................................................................... 105

9 Manual de usuario: uso del GUI ................................................................... 108

9.1 Inicio de programa ................................................................................ 109

9.2 Selección de parámetros ....................................................................... 110

9.3 Salida de datos ..................................................................................... 113

9.4 Espectrograma ...................................................................................... 115

4

TABLA DE ILUSTRACIONES

Figura 2.1 – Curvas isofónicas [22] ......................................................................15

Figura 2.2 Ejemplo de enmascaramiento NMT [22] ..............................................17

Figura 2.3 – Espectrograma de una señal con sibilancias usando una ventana de

Hanning de 512 muestras de longitud. .............................................................................23

Figura 2.4 - Espectrograma de una señal con sibilancias usando una ventana de

Hanning de 1024 muestras de longitud. ...........................................................................24

Figura 2.5 - Espectrograma de una señal con sibilancias usando una ventana de

Hanning de 2048 muestras de longitud. ...........................................................................24

Figura 2.6 - Espectrograma de una señal con sibilancias usando una ventana

rectangular de 512 muestras de longitud. ........................................................................25

Figura 2.7 - Espectrograma de una señal con sibilancias usando una ventana

rectangular de 1024 muestras de longitud. ......................................................................25

Figura 2.8 - Espectrograma de una señal con sibilancias usando una ventana

rectangular de 2048 muestras de longitud. ......................................................................26

Figura 2.9 – Ventana rectangular en el dominio de la frecuencia [23] ...................27

Figura 2.10 – Ventana de Hanning en el dominio de la frecuencia. [23] ...............27

Figura 2.11 - Relación entre los términos sonido respiratorio, sonido adventicio y

sonido pulmonar [2]. ........................................................................................................29

Figura 2.12 – Espectrograma de una respiración con estertores o crepitantes

gruesos. ...........................................................................................................................29

Figura 2 13 - Análisis espectral de una respiración normal (arriba) y análisis

espectral de una respiración con sibilancias (abajo) [3]. ..................................................31

Figura 2.14 - Análisis espectral de una grabación normal (A), con sibilancias (B) y

con ruttles (C) [9]. ............................................................................................................33

Figura 4.1 - Diagrama de una respiración humana [8]. .........................................37

Figura 4.2 – Ejemplos de espectrogramas de una respiración sana (a), una con

sibilancias (b) y otra con ruttles (c) [5]. .............................................................................39

Figura 4.3 – Comparación entre respiraciones con distintos sonidos adventicios

[10]. .................................................................................................................................40

Figura 4.4 – Espectrogramas que muestran los picos más significativos obtenidos

en el análisis mediante el sistema WED [11]. ..................................................................41

Figura 4.5 – Resultados del análisis de respiraciones de los 12 sujetos

participantes en la prueba realizada en [13]. ....................................................................43

5

Figura 4.6 – Espectrograma de una respiración sana (a) y de una respiración con

sibilancias (b), mostrando el rango en frecuencia donde suelen aparecer los picos más

significativos [14]. ............................................................................................................44

Figura 4.7 – Diagrama de bloques del algoritmo propuesto en [14]. .....................45

Figura 4.8 – Esquema de la implementación del software propuesto en el artículo

[15]. .................................................................................................................................46

Figura 4.9 – Esquema del sistema propuesto en [24] ...........................................47

Figura 4.10 – a) diagrama de bloques implementado en el módulo de adquisición.

b) hardware que compone el módulo. c) sensor acústico. [24] .........................................48

Figura 4.11 – Diagrama de bloques del software propuesto en [24]. ....................48

Figura 4.12 – Resultados obtenidos en [24] .........................................................49

Figura 5.1 - Esquema de la implementación del software ....................................51

Figura 5.2 - Espectrograma de una señal de audio con sibilancias. .....................54

Figura 5.3 - Espectrograma de una señal de audio con sibilancias, ejemplo 2. ....55

Figura 5.4 – Representación del frame número 115 de la matriz Vabs. ................56

Figura 5.5 - Picos más significativos obtenidos mediante "findpeaks" de la señal

de audio "6025.wav". .......................................................................................................58

Figura 5.6 - Picos más significativos obtenidos mediante "findpeaks" de la señal

de audio "Wheeze-Bronchiolitis2.wav". ............................................................................59

Figura 5.7 - Parte del contenido de la matriz "posicion_picos" extraída del audio

"6025.wav". ......................................................................................................................59

Figura 5.8 – Trayectoria extraída en el proceso de detección de sibilancias para el

audio "143Post7R.wav". ..................................................................................................61

Figura 5.9 - Ejemplo de ventana deslizante ..........................................................63

Figura 5.10 - Ejemplo de una trayectoria contenida en la matriz "trayectorias"

extraída del audio "6025.wav". .........................................................................................65

Figura 5.11 - Ejemplo de interpolación 1 ..............................................................66

Figura 5.12 - Ejemplo de interpolación 2 ..............................................................66

Figura 5.13 - Zoom sobre una trayectoria sin interpolar para "6025.wav" ............67

Figura 5.14 - Zoom sobre una trayectoria interpolada para "6025.wav" ................68

Figura 5.15 - Zoom sobre una trayectoria sin interpolar para "Wheeze-

Bronchiolitis2.wav" ...........................................................................................................69

Figura 5.16 - Zoom sobre una trayectoria interpolada para "Wheeze-

Bronchiolitis2.wav" ...........................................................................................................69

Figura 5.17 - Zoom sobre las trayectorias consideradas sibilancias para

"6025.wav". ......................................................................................................................71

6

Figura 5.18 - Zoom sobre las trayectorias consideradas sibilancias para "Wheeze-

Bronchiolitis2.wav". ..........................................................................................................71

Figura 5.19 – Espectro de una onda cuadrada de amplitud 1 dB y frecuencia 100

Hz con armónicos impares [26]. .......................................................................................72

Figura 5.20 - Armónicos de una sibilancia ............................................................73

Figura 6.1 – Sibilancia número dos (sib2.wav) que se extrae del audio "6025.wav"

........................................................................................................................................78

Figura 6.2 – Espectrograma de la respiración vesicular normal "respiracion.wav".

........................................................................................................................................78

Figura 6.3 – Resultado de la suma de "sib2.wav" sobre la segunda inspiración de

"respiracion.wav" con una diferencia de potencia de 5dB. ...............................................79

Figura 6.4 - Fragmento del vector usado como patrón para una ventana de 512

muestras ..........................................................................................................................85

Figura 6.5 - Fragmento del vector de sibilancias devuelto por el programa principal

para una ventana de 512 muestras ..................................................................................85

Figura 6.6 - Ejemplo de la tabla de datos tras la fase de optimización a nivel de

frame. ..............................................................................................................................86

Figura 6.7 - Ejemplo de la matriz de datos obtenidos tras la fase de optimización a

nivel de eventos ...............................................................................................................91

Figura 6.8 – Esquema de la implementación de la fase de testeo I. .....................94

Figura 6.9 – Esquema de la implementación de la fase de testeo II .....................98

Figura 9.1 - Secciones de la interfaz de usuario ................................................. 108

Figura 9.2 - Apartado 1 de la interfaz ................................................................. 109

Figura 9.3 – Mensaje de aviso en la selección de audio. .................................... 109

Figura 9.4 - Apartado 2 de la interfaz ................................................................. 110

Figura 9.5 – Ejemplo de menú desplegable. ....................................................... 110

Figura 9.6 – Menú desplegable para la selección de paciente. ........................... 111

Figura 9.7 – Menú desplegable para la selección del rango en frecuencia. ........ 111

Figura 9.8 – Menú desplegable para la selección del rango en tiempo. .............. 112

Figura 9.9 – Ejemplo de menú desplegable en el campo "Duración mínima" de la

interfaz. .......................................................................................................................... 112

Figura 9.10 – Mensaje de aviso al no seleccionar correctamente una duración

mínima de trayectoria .................................................................................................... 112

Figura 9.11 - Apartado 2 de la interfaz................................................................ 113

7

Figura 9.12 – Salida de datos en una prueba realizada con el audio "6025.wav"

...................................................................................................................................... 113

Figura 9.13 – Mensaje de aviso en el que se indica que no se han detectado

sibilancias en el audio introducido. ................................................................................. 113

Figura 9.14 – Panel de botones para visualizar cada una de las etapas. ............ 114

Figura 9.15 – Botones para reproducir o grabar las sibilancias especificadas en el

panel mostrado en la figura 9.16. ................................................................................... 114

Figura 9.16 – Panel de selección de sibilancia a reproducir o guardar como

archivo .wav. .................................................................................................................. 114

Figura 9.17 - Ejemplo de espectrograma con bandas limitadoras....................... 115

Figura 9.18 - Localización de la barra de herramientas ...................................... 116

Figura 9.19 - Zoom sobre Etapa 4 ...................................................................... 116

8

1 RESUMEN

Este Trabajo Fin de Grado se centrará en el análisis de señales sonoras

procedentes de la respiración humana con el propósito de poder detectar mediante

software la existencia o no de sibilancias en el audio procesado. En primer lugar,

conoceremos las características que definen la onda mecánica analizada. Mediante una

introducción se mostrará qué es el sonido como concepto de onda, describiremos las

características del sonido generado por una respiración humana y veremos las

principales características que nos permitirán detectar y diferenciar el principal objetivo de

este trabajo: las sibilancias pulmonares. A continuación, presentaremos la problemática

existente a día de hoy en la detección de estos sonidos pulmonares. La no objetividad en

el oído humano a la hora de interpretar los sonidos y detectar ciertos parámetros como

frecuencia, musicalidad, etc. en la respiración humana puede desencadenar en un mal

diagnóstico por parte del médico, pudiendo perjudicar al paciente que padece estas

irregularidades pulmonares.

Tras presentar los principales objetivos que se desean alcanzar con este trabajo,

analizaremos el estado del arte referido a la detección de irregularidades pulmonares

mediante el análisis de señales sonoras.

Una descripción detallada del software implementado en este trabajo será

presentada y se mostrarán las etapas seguidas a la hora de realizar su evaluación y

comparación con otros métodos ya implementados. Seguidamente, se tomarán una serie

de conclusiones al respecto a partir de las cuales se intentará definir el futuro de este

trabajo.

Finalmente, se mostrará la bibliografía utilizada para la recaudación de

información y un manual de usuario para el uso del programa será presentado.

9

2 INTRODUCCIÓN

Hasta hace relativamente pocos años, la detección de multitud de irregularidades

pulmonares ha sido llevada a cabo por un médico capacitado, realizada mediante el uso

del tradicional estetoscopio (también llamado fonendoscopio), mediante técnicas

radiológicas u otros métodos no invasivos. Si nos centramos por completo en las técnicas

basadas en la escucha de sonidos pulmonares, es importante destacar que tanto la

captación de sonidos procedentes del estetoscopio en el oído como su interpretación en

el cerebro humano están sujetos a un conjunto de imperfecciones que imposibilitan el

hecho de obtener una serie de conclusiones y resultados totalmente objetivos por parte

del médico encargado de realizar el diagnóstico. Debemos remarcar la importancia que

tiene el hecho de detectar cuanto antes sonidos como las sibilancias en pacientes de

corta y avanzada edad ya que se trata de grupos de riesgo altamente vulnerables a

enfermedades pulmonares tales como el asma, bronquitis o neumonía. En definitiva, una

rápida y eficaz detección de este tipo de sonidos pulmonares podrá evitar en gran medida

posibles daños mayores e irreversibles causados por las enfermedades ya mencionadas.

Es en este documento donde se presenta un método de detección de sibilancias

no invasivo basado en un software capaz de llevar a cabo un análisis espectral de una

señal sonora pulmonar mediante el cómputo de parámetros objetivos. Para poder

entender el proceso llevado a cabo es importante tener claro ciertos conceptos

relacionados con las señales sonoras, más en concreto con las generadas por la

respiración humana. Para la correcta detección e identificación de sibilancias también es

importante tener claro qué es lo que intentamos detectar, sus características más

importantes y que rasgos diferencian a las sibilancias del resto de irregularidades

pulmonares. Por ello, a continuación se muestra una descripción de los conceptos más

importantes mencionados en el desarrollo de este trabajo.

2.1 El sonido

Según nos refiramos a la palabra "sonido", la Real Academia Española nos

presenta varias definiciones de entre las cuales tendremos en cuenta sobretodo dos. En

la primera entrada esta palabra es definida de la siguiente manera: "Sensación producida

en el órgano del oído por el movimiento vibratorio de los cuerpos, transmitido por un

medio elástico, como el aire". En la cuarta entrada del diccionario se nos presenta una

definición tal que "Vibración mecánica transmitida por un medio elástico". Como vemos,

la primera definición engloba a la segunda, aunque ésta última añade un matiz: "vibración

mecánica". Por lo tanto, el sonido es consecuencia de las ondas acústicas, principal

fenómeno físico estudiado en este TFG. Dichas ondas son mecánicas y surgen por

10

consiguiente de las vibraciones de las partículas que componen el medio elástico. La

dirección de los movimientos vibratorios de las partículas puede ser paralela a la

dirección de propagación de la onda, lo que nos indica que además, las ondas acústicas

son mecánicas y longitudinales (el sonido se propaga de esta forma en gases, líquidos y

en la mayoría de sólidos), por el contrario, si dicho movimiento vibratorio es perpendicular

a la dirección de propagación, las ondas acústicas son mecánicas y transversales. Para

que finalmente esta onda sea descrita como un sonido, debe poder ser percibida por una

persona o instrumento, es decir, debe excitar al oído y ser interpretada por el cerebro,

obviamente en el caso de un ser humano.

Si nos centramos en la propagación del sonido en el aire debemos tener en

cuenta que las vibraciones de las partículas que forman las ondas acústicas

longitudinales generarán zonas de altas y bajas presiones moleculares en el medio, es

decir, la propagación del sonido en el aire implica la existencia de zonas de compresión y

zonas de descompresión. La forma más sencilla de caracterizar una onda acústica que

se propaga por el aire es mediante ondas armónicas ya que se trata de una forma de

excitación periódica simple a partir de la cual pueden expresarse ondas más complejas.

Existe una solución matemática que consiste en expresar varios parámetros que

caracterizan una onda sonora en el aire de tal forma que quede expresada como la

combinación de dos ondas armónicas, a continuación, en las ecuaciones (1), (2) y (3) se

muestran las tres variables acústicas a partir de las cuales podremos definir ciertas

características del sonido

𝜁(𝑥, 𝑡) = �̂�𝑒𝑗(𝜔𝑡−𝑘𝑥) + �̂�𝑒𝑗(𝜔𝑡+𝑘𝑥) (1)

𝑝(𝑥, 𝑡) = 𝑗𝜌0𝑐𝜔( �̂�𝑒𝑗(𝜔𝑡−𝑘𝑥) + �̂�𝑒𝑗(𝜔𝑡+𝑘𝑥)) (2)

𝜇(𝑥, 𝑡) = 𝑗𝜔( �̂�𝑒𝑗(𝜔𝑡−𝑘𝑥) − �̂�𝑒𝑗(𝜔𝑡+𝑘𝑥)) (3)

Donde 𝜁(𝑥, 𝑡) es una función armónica sinusoidal y periódica en 𝑡 (tiempo) que

representa el movimiento o desplazamiento en metros de las partículas del medio debido

a la propagación de una onda acústica, compuesta por �̂� y �̂�, amplitudes complejas de

onda plana longitudinal con frecuencia 𝜔 y número de onda 𝑘 que representan la

propagación de ambas ondas planas en la dirección positiva y negativa del eje x,

respectivamente, con velocidad c. De forma similar, 𝑝(𝑥, 𝑡) y 𝜇(𝑥, 𝑡) son funciones

11

armónicas que representan la presión acústica expresada en Pascales (Pa) y la velocidad

de vibración (m/s) de las partículas, respectivamente. Si nos centramos en la propagación

en dirección positiva con respecto al eje x, 𝑝(𝑥, 𝑡) y 𝜇(𝑥, 𝑡) viajan en fase y están

desplazadas 90º con respecto a 𝜁(𝑥, 𝑡). En cambio, la propagación en el sentido negativo

del eje x, 𝑝(𝑥, 𝑡) y 𝜇(𝑥, 𝑡) están desfasadas 180º entre sí, mientras que 𝜁(𝑥, 𝑡), sigue

mostrando un desfase de 90º con respecto a ambas.

Como podemos apreciar en las expresiones anteriores, en función de las

separaciones entre zonas de alta y baja presión, la variación de presión en éstas y la

velocidad de vibración y propagación de las perturbaciones en el medio, definiremos una

serie de parámetros físicos que caracterizarán al sonido como onda sinusoidal. Además,

se mostrará una herramienta fundamental para el análisis de muestras de audio utilizado

en el software detector de sibilancias.

2.1.1 Impedancia característica e intensidad acústica

De las ecuaciones anteriormente planteadas, debemos tener en cuenta las

referentes a la presión acústica y a la velocidad de vibración de las partículas ya que nos

serán especialmente útiles para definir la impedancia característica del medio de

propagación con la que finalmente podremos mostrar el concepto de intensidad acústica.

Este concepto es clave para determinar si un sonido puede o no llegar a ser percibido por

un oído humano de forma clara.

En primer lugar, expresaremos las ecuaciones (1) y (2) de tal modo que queden

caracterizadas por amplitudes complejas incidentes y reflejadas tal y como se muestra en

las expresiones (4) y (5), según viajen en el sentido positivo o negativo del eje x:

𝑝(𝑥, 𝑡) = 𝑃0+𝑒𝑗(𝜔𝑡−𝑘𝑥) + 𝑃0

−𝑒𝑗(𝜔𝑡+𝑘𝑥) (4)

𝜇(𝑥, 𝑡) = 𝜇0+𝑒𝑗(𝜔𝑡−𝑘𝑥) − 𝜇0

−𝑒𝑗(𝜔𝑡+𝑘𝑥) (5)

Donde 𝑃0+ y 𝜇0

+ son las amplitudes complejas incidentes. 𝑃0− y 𝜇0

− hacen referencia

a las amplitudes complejas reflejadas. Estas vienen expresadas de la siguiente forma, tal

y como se muestra en las ecuaciones (6), (7), (8) y (9):

𝑃0+ = 𝑗�̂�𝜌0𝑐𝜔 (6)

12

𝑃0− = −𝑗�̂�𝜌0𝑐𝜔 (7)

𝜇0+ = 𝑗�̂�𝜔 (8)

𝜇0− = 𝑗�̂�𝜔 (9)

De este modo, podemos definir la impedancia característica de un medio a partir

de las amplitudes complejas definidas, como se muestra en la ecuación (10):

𝑃0+

𝜇0+ =

𝑃0−

𝜇0− = 𝜌0𝑐 = 𝑍0 ∈ ℜ

(10)

Este parámetro nos informa acerca de la resistencia que opone un medio a la

propagación de una onda acústica. En este caso, los subíndices 0 indican que se

caracterizan estos parámetros en un medio como el aire.

Como podemos observar, la impedancia característica depende tanto de la

presión en el ambiente de propagación (densidad estática) 𝜌0 y de la velocidad de

propagación de la onda acústica 𝑐 (será detallado posteriormente). En el aire 𝜌0 ≅

1.21 𝐾𝑔/𝑚3.

De esta manera, somos capaces de expresar 𝜇(𝑥, 𝑡) como muestra la ecuación

(11):

𝜇(𝑥, 𝑡) =𝑃0

+

𝑍0

𝑒𝑗(𝜔𝑡−𝑘𝑥) −𝑃0

𝑍0

𝑒𝑗(𝜔𝑡+𝑘𝑥) (11)

Finalmente, podemos describir la intensidad acústica instantánea, en este caso

incidente, tal y como muestra la ecuación (12).

𝐼(𝑥, 𝑡)+ = 𝑃𝑅𝑒+ (𝑥, 𝑡) 𝜇𝑅𝑒

+ (𝑥, 𝑡) =|𝑃0

+|2

2𝑍0

[1 + cos(2𝜔𝑡 − 2𝑘𝑥 + 2𝜙)] (12)

13

𝐼(𝑥, 𝑡)− = 𝑃𝑅𝑒− (𝑥, 𝑡) 𝜇𝑅𝑒

− (𝑥, 𝑡) =|𝑃0

−|2

2𝑍0

[1 + cos(2𝜔𝑡 − 2𝑘𝑥 + 2𝜙)] (13)

Siendo 𝑃𝑅𝑒+ y 𝜇𝑅𝑒

+ las componentes reales de la presión acústica instantánea y de la

velocidad de vibración de las partículas instantánea. 𝜙 indica la fase de 𝑃0+ y 𝑃0

−.

Como podemos apreciar, la intensidad acústica aumenta con el cuadrado del

módulo de la presión acústica y además depende de su fase. También es dependiente de

las características del medio por el cual se propaga la onda acústica Por otro lado,

también depende de forma inversa con el doble de la impedancia característica. De forma

análoga, la intensidad acústica instantánea reflejada se expresa tal y como muestra la

ecuación (13). Dado que la intensidad acústica instantánea representa la cantidad de

energía por unidad de tiempo y área que atraviesa la superficie normal a la dirección de

propagación del sonido, será expresada en 𝑊/𝑚2

2.1.2 Frecuencia, periodo, longitud de onda y amplitud

Llamamos frecuencia de una onda acústica al número de vibraciones completas

producidas en un punto del medio durante un segundo y queda definido mediante la letra

𝑓. Este parámetro está inversamente relacionado con el periodo (𝑇) y la longitud de onda

(𝜆) de la señal. El primero de estos dos parámetros mencionados, periodo de una señal

expresado en segundos (s), es el inverso de la frecuencia medida en hertzios (Hz) y se

define como el tiempo invertido por una onda para realizar una oscilación o vibración

completa. Se expresa mediante la ecuación (14), además de poder ser definida mediante

(15) utilizando la frecuencia angular 𝜔 medida en rad/s.

𝑇(𝑠) = 1

𝑓

(14)

𝑇(𝑠) = 2𝜋

𝜔

(15)

Por otro lado, la longitud de onda es definida como la separación existente entre

dos zonas consecutivas de alta o baja presión (máxima o mínima amplitud de onda).

Viene expresada mediante la igualdad expresada en (16):

14

𝜆(𝑚) =𝑐

𝑓= 𝑐 ∗ 𝑇 (16)

Queda expresada en metros (m). A partir de estos parámetros podemos definir el

llamado periodo fundamental de una señal: valor positivo mínimo de todos los posibles

periodos de una onda, expresado mediante 𝑇0. Su inverso es la frecuencia fundamental

𝑓0 y denominamos armónicos a las frecuencias dominantes múltiplos enteros o casi

enteros de ésta. De este modo, el valor en frecuencia de los armónicos queda reflejado

mediante la ecuación (17):

𝑓𝑛(𝐻𝑧) = 𝑛 ∗ 𝑓0 , 𝑛 > 0 ∈ ℤ (17)

Referido al oído humano, teóricamente somos capaces de percibir sonidos de

entre 20 Hz y 20000 Hz. La propia degradación de los órganos que componen el oído

supondrá una reducción de este rango. Aun así, la detección o no de un sonido por parte

de un ser humano, no solo depende de la frecuencia con la que oscile el sonido, sino que

también se ve afectada por su intensidad sonora. A continuación, se muestran las curvas

isofónicas de Fletcher y Munson [22] en la figura 2.1, en las cuales se representa el nivel

de sonoridad de una onda a partir de su intensidad y frecuencia. Estas curvas se miden

en fonos (fon) y fueron obtenidas de forma experimental:

15

Figura 2.1 – Curvas isofónicas [22]

Un ejemplo de lo que representan este tipo de gráficas es la diferencia en fonos

existente entre un sonido de 5000 Hz y con una intensidad de 50 dB (50 fonos) y otro de

100 Hz y 50 dB de intensidad (20 fonos). Aunque ambos son recibidos en el oído humano

con un nivel de intensidad sonora similar, no oscilan a la misma frecuencia, por lo que

estas curvas nos demuestran que, en este caso, el sonido más agudo (el que oscila a

5000 Hz) se escuchará más fuerte que el más grave. A 1000 Hz, el nivel de intensidad

sonora coincide con el nivel de sonoridad en fonos. No todos los seres humanos

responden a las mismas curvas, estas dependen de las características de nuestros oídos

y sobretodo del nivel de degradación que hayan sufrido.

En cuanto al término amplitud de onda, afirmamos que es la máxima variación de

presión generada en el medio por el cual se propaga la onda acústica medida en

pascales (Pa). Mediante el nivel de presión sonora (SPL) se define el umbral de audición

y el umbral de dolor, es decir, nivel de presión mínima y máxima que puede tener un

sonido para que este sea detectado correctamente por el oído humano. A continuación,

en la ecuación (18), se muestra el cálculo del nivel de presión sonora a partir de una

presión de referencia:

16

𝑆𝑃𝐿 (𝑑𝐵) = 20 log𝑝𝑟𝑚𝑠

𝑝𝑟𝑒𝑓 (18)

En este caso, 𝑝𝑟𝑒𝑓 se corresponde con un valor preestablecido equivalente a

20μPa, el cual se corresponde con el umbral de resolución del oído humano a 1kHz en el

aire. Los umbrales de audición y dolor quedan fijados entre 20μPa y 20 Pa

respectivamente, lo cual nos indica que a partir de 0 dB SPL el oído humano será capaz

de percibir un sonido y en el caso de superar los 120 dB SPL resultará dañino para

nuestro sistema auditivo.

Como ya mencionamos anteriormente, el hecho de escuchar más o menos fuerte

un sonido con el mismo nivel de intensidad o presión sonora depende también de la

frecuencia con la que oscile, es por ello que ciertos sonidos con niveles de presión

sonora o amplitudes similares que llegan al oído humano a la vez (como por ejemplo el

sonido de la respiración y el de una sibilancia) suelen enmascarar uno al otro. El

fenómeno de enmascaramiento ocurre cuando a cierta frecuencia y con un nivel

determinado de presión sonora, un sonido se convierte en imperceptible por el oído

humano debido a la presencia de otro que lo enmascara. Por lo general, el ruido presenta

una mayor capacidad de enmascaramiento sobre un tono, es por ello por lo que es muy

común que una sibilancia quede enmascarada por el sonido de la respiración humana o

los latidos del corazón, haciendo casi imperceptible este tipo de sonidos que se asemejan

al de un tono de frecuencia determinada.

En este caso, el fenómeno de enmascaramiento se denomina NMT (noise-

masking-tone) lo que nos indica que el ruido es el que enmascara al tono, dificultando la

percepción de este último. A continuación, en la figura 2.2, se muestra un ejemplo en el

que podemos observar como el umbral de audición de un tono de 1000 Hz queda

modificado por la presencia de un ruido de banda estrecha centrado en 500 Hz con

distintos niveles de presión sonora (𝐿𝑝), presentando el fenómeno de enmascaramiento:

17

Figura 2.2 Ejemplo de enmascaramiento NMT [22]

Podemos apreciar como el umbral de audición para el tono de 1000 Hz queda

modificado en presencia de un ruido, lo cual quiere decir que mientras dicho ruido con un

determinado nivel de presión sonora esté presente, el tono debe tener un nivel de

sonoridad más alto que el indicado en el umbral reflejado en la figura 2.2. Es por ello por

lo que podemos afirmar que el ruido, en este caso, actúa como enmascarador sobre el

tono enmascarado. Como ya se ha mencionado, en el caso que nos ocupa, los sonidos

cardiacos y respiratorios actuarán como ruido enmascarante sobre las sibilancias a

detectar, cuyas características sonoras se asemejan al tono expuesto en el ejemplo

anterior.

2.1.3 Velocidad de propagación

No debemos confundir este parámetro con el de velocidad de vibración de las

partículas. Depende de las características del medio, es decir, de la distancia existente

entre las partículas que lo componen, la temperatura de este y de la masa molecular si

nos referimos a un gas como es el aire. A una temperatura de 20 ºC, el sonido se

propaga en este medio a una velocidad de 340 metros por cada segundo

aproximadamente. Para ondas armónicas, tanto frecuencia como longitud de onda están

relacionadas con la velocidad de propagación mediante la ecuación (19):

18

𝑐 (𝑚/𝑠) = 𝑓 ∙ 𝜆 =𝜆

𝑇

(19)

Donde 𝑐 es la velocidad de propagación (m/s).

2.1.4 Espectrogramas

Se trata de una forma de representación temporal de la variación de energía y

frecuencia de una onda basada en el cálculo de forma progresiva de múltiples

Transformadas de Fourier usando una ventana para la selección de diferentes tramas

consecutivas a lo largo del tiempo (conjunto de muestras de la onda a analizar). En

nuestro software usaremos para la obtención de espectrogramas la Transformada de

Fourier de Tiempo Corto (Short-time Fourier transform, STFT). Esta transformada

consiste en el desplazamiento o deslizamiento de una señal ventana sobre la señal

original con el fin de realizar el cálculo individual de la transformada de Fourier de cada

segmento visto a través de dicha ventana. Todas las secciones o segmentos de corta

duración temporal se obtendrán mediante el enventanado de la señal para así

posteriormente representar las componentes en frecuencia de cada uno de ellos a lo

largo del eje temporal y poder apreciar con claridad la variación espectral durante el

tiempo que dure la señal.

En nuestro caso, nos centraremos en la STFT de tiempo discreto ya que las

señales de audio que trataremos han sido muestreadas y almacenadas en un archivo

.wav, por esta razón, la información perteneciente a la señal con la que realizaremos la

Transformada de Fourier será segmentada o dividida en tramas compuestas por un

conjunto de muestras, las cuales quedarán solapadas en un porcentaje determinado para

evitar saltos bruscos o irregularidades entre tramas transformadas. A continuación, en la

ecuación (20) obtenida en [23], se muestra la expresión matemática con la que se lleva a

cabo la STFT para señales discretas.

𝑆𝑇𝐹𝑇{𝑥[𝑛]} ≡ 𝑋[𝑛, 𝜆) = ∑ 𝑥[𝑚] 𝑤[𝑚 − 𝑛]𝑒−𝑗𝜆𝑚

𝑚=−∞

(20)

Donde 𝑥[𝑛] es la señal discreta y 𝑤[𝑛] la función ventana encargada de

segmentar las muestras de la señal principal:

19

𝑤[𝑛] = {≠ 0 0 ≤ 𝑛 ≤ 𝐿0 𝑟𝑒𝑠𝑡𝑜

(21)

Como vemos en la ecuación (21), la señal 𝑤[𝑛] realiza un truncamiento de L

muestras sobre la señal 𝑥[𝑛] discreta. En este caso, L representa la longitud de la señal

que enventana, 𝑤[𝑛].

En la transformada de Fourier dependiente del tiempo, la señal unidimensional

𝑥[𝑛] (sólo depende de una variable discreta), pasa a ser una variable bidimensional,

dependiente en este caso de una variable discreta temporal como es 𝑛 y de una variable

continua en frecuencia como 𝜆, por lo tanto, es necesario aplicar un método de

transformada capaz de discretizar dicha variable. En el caso de las computadoras y

software capaces de realizar estos cálculos, se utiliza la denominada Transformada de

Fourier Rápida o FFT (Fast Fourier Transform). Consiste en un algoritmo rápido basado

en el cálculo de la DFT (Discrete Fourier Transform) utilizando las técnicas de diezmado

en el tiempo o en frecuencia aplicadas a cada uno de los segmentos truncados por la

señal ventana. Ambos métodos implican la misma complejidad, aunque la salida que

aporta una FFT con diezmado en frecuencia consiste en un conjunto de bits indexados,

es decir, la señal transformada de salida está desordenada y por lo tanto requiere de un

algoritmo adicional capaz de ordenarlo, si la situación lo requiere. Ambos métodos

descomponen la señal 𝑥[𝑛] truncada en subsecuencias con el fin de combinarlas y

obtener la DFT de secuencias mayores, hasta conseguir la transformada de la señal

𝑥[𝑛] (en el caso de ser aplicadas en una STFT, la señal descompuesta será el producto

de la señal original y la ventana seleccionada y no 𝑥[𝑛] al completo).

En el caso de una FFT con diezmado en el tiempo, las secuencias se forman de

forma recursiva, agrupando las muestras pares e impares en diferentes secuencias 𝑔[𝑛] y

ℎ[𝑛], tal y como se muestra en las ecuaciones (22) y (23):

𝑔[𝑛] = 𝑥[2𝑛] , 𝑛 = 0,1 … ,𝑁

2− 1

(22)

ℎ[𝑛] = 𝑥[2𝑛 + 1] , 𝑛 = 0,1 … ,𝑁

2− 1

(23)

20

Siendo 𝑔[𝑛] la secuencia que contiene las muestras pares de la señal discreta a

transformar y ℎ[𝑛] la secuencia que contiene las muestras impares de dicha señal. El

valor de 𝑁 se corresponde con el tamaño en muestras de la señal original (en nuestro

caso, la señal enventanada).

De nuevo, una vez obtenidas estas dos secuencias, se vuelve a realizar el

diezmado en el tiempo sobre 𝑔[𝑛] y ℎ[𝑛] con el fin de obtener otro conjunto de

secuencias más cortas con las que poder realizar la transformada con una carga

computacional menor. Una recombinación de los resultados obtenidos dará lugar a la

transformada del segmento completo. A continuación, se desliza la ventana sobre la

señal original obteniendo otro fragmento truncado sobre el que se realizará de nuevo este

procedimiento recursivo.

Para una FFT con diezmado en frecuencia, las secuencias quedan construidas tal

y como se indica en las expresiones (24) y (25):

𝑔[𝑛] = 𝑥[𝑛] + 𝑥 [𝑛 +𝑁

2]

(24)

ℎ[𝑛] = 𝑥[𝑛] − 𝑥 [𝑛 +𝑁

2]

(25)

El procedimiento llevado a cabo en este caso es muy parecido, basándose en

obtener secuencias cortas con las que poder realizar una transformada de Fourier con

poca carga computacional y en un tiempo mínimo.

Finalmente, el resultado de calcular cada una de las transformadas de Fourier de

tiempo corto y solaparlas de forma correcta acorde a un porcentaje (normalmente del

50%) mediante el uso de las técnicas de FFT, obtenemos un resultado complejo el cual

será almacenado en una matriz y resultará ser la transformada de Fourier de la señal

discreta al completo. Esta matriz contendrá valores en magnitud y fase para cada instante

temporal y cada punto en frecuencia.

En nuestro caso, nos centraremos en el valor absoluto de la señal obtenida, tal y

como se muestra en la ecuación (26):

𝑒𝑠𝑝𝑒𝑐𝑡𝑟𝑜𝑔𝑟𝑎𝑚𝑎{𝑥[𝑛]} ≡ |𝑋(𝑚, 𝜔) | (26)

21

Un aspecto muy importante a tener en cuenta a la hora de representar señales

discretas en un espectrograma es la resolución. Este factor nos muestra la separación

mínima en frecuencia entre dos tonos de igual amplitud para que el resultado final

muestre dos picos bien diferenciados en ambas frecuencias. Una de las características

fundamentales que definen la resolución temporal y en frecuencia de un espectrograma

es la longitud de ventana. Por lo tanto, en función del tamaño y tipo de ventana usada

para la segmentación de la señal, obtendremos diferentes resoluciones. En nuestra

aplicación utilizaremos una ventana de Hanning de 512, 1024 y 2048 muestras de

longitud, por lo que obtendremos unas anchuras de lóbulo principal expresadas en la

tabla 2.1. También compararemos las resoluciones obtenidas con una ventana

rectangular con tamaños similares. El cálculo de la resolución para una ventana de

Hanning se realiza mediante la ecuación (28) mientras que la ecuación (29) muestra la

expresión con la que podemos calcular la resolución ofrecida por una ventana

rectangular. Ambas expresiones incluyen la frecuencia o tasa de muestreo (𝑓𝑠), variable

que se corresponde con el número de muestras tomadas por segundo de una señal

continua para la creación de una señal discreta apta para el tratamiento digital que será

llevado a cabo en el software. Según el teorema de Nyquist-Shannon, para que en el

proceso de muestreo de una señal continua ésta pueda ser recuperada sin pérdida de

información, es decir, poder replicar de nuevo la forma de onda en su totalidad, la

frecuencia de muestreo debe ser como mínimo el doble de la máxima frecuencia de la

señal tal y como se muestra en la ecuación (27).

𝑓𝑠 > 2𝑓𝑚𝑎𝑥 (27)

En la tabla 2.1 se muestran los resultados obtenidos utilizando una frecuencia de

muestreo de 8000 Hz (este valor será utilizado en nuestro software tal y como se

detallará en el apartado 2.2 de esta memoria).

22

Tamaño de ventana en

muestras (L)

Resolución en frecuencia

en Hz (∆𝑓) - Hanning

Resolución en frecuencia

en Hz (∆𝑓) - Rectangular

512 62.5 31.25

1024 31.25 15.625

2048 15.625 7.8125

Tabla 2.1 – Resolución en frecuencia para la obtención de espectrogramas con ventanas

de 512, 1024 y 2048 muestras de longitud.

∆𝑓 (𝐻𝑧) =4

𝐿∗ 𝑓𝑠

(28)

∆𝑓 (𝐻𝑧) =2

𝐿∗ 𝑓𝑠

(29)

Como podemos apreciar en la tabla 2.1, una ventana con menor tamaño en

muestras ofrecerá una menor resolución en frecuencia, siendo ∆𝑓 mayor que el resto, lo

cual nos indica que la separación entre los tonos consecutivos tomados como ejemplo

antes, deben tener una diferencia en frecuencia igual o mayor que dicho valor calculado

para que en el espectrograma podamos apreciarlos claramente. Por otro lado, las

ventanas con un mayor número de muestras ofrecerán una resolución en frecuencia

mayor, obteniendo un ∆𝑓 menor. Aun así, un aumento en la resolución en frecuencia

conlleva una disminución de la resolución temporal, ya que a un mayor tamaño de

ventana, los fragmentos con los que se realizan las transformadas serán mayores y por lo

tanto se abarcará un mayor margen temporal el cual nos permitirá en menor medida

apreciar con claridad variaciones sobre el eje temporal. A continuación, en las figuras 2.3,

2.4, 2.5, 2.6, 2.7 y 2.8 se exponen seis ejemplos de espectrograma extraídos de nuestro

software donde podemos apreciar los resultados obtenidos a la hora de utilizar dos tipos

de ventana diferentes con longitudes distintas para poder observar cómo influyen estos

parámetros sobre la resolución temporal y en frecuencia de los espectrogramas.

- Ejemplos mostrados en las figuras 2.3, 2.4 y 2.5: se utilizará una ventana de

Hanning de 512, 1024 y 2048 muestras respectivamente.

- Ejemplos mostrados en las figuras 2.6, 2.7 y 2.8: se utilizará una ventana

rectangular con tamaños de ventana similares.

23

Observaremos como para un mismo tipo de ventana, un menor tamaño en

muestras conlleva a una mejor resolución temporal a cambio de perder resolución en

frecuencia.

Debido a que se ha utilizado el audio "sibilancia_polifónica2.wav" (duración 10 s),

en los espectrogramas a continuación expuestos, observaremos las componentes en

frecuencia y tiempo de una señal sonora procedente de una respiración con sibilancias

polifónicas, apreciando componentes más energéticas comprendidas entre los 0 y 1000

Hz con duración no superior a 1.5 s. Se exponen a continuación solo 5 segundos del

audio para poder apreciar estas componentes de forma clara, comprendidas entre los

segundos 0.5 al 2.5 y entre los segundos 3 al 4.5 de la muestra de audio.

Figura 2.3 – Espectrograma de una señal con sibilancias usando una ventana de Hanning de 512 muestras de longitud.

Time (s)

Fre

quency (

Hz)

Espectrograma

0 1 2 3 4 50

500

1000

1500

2000

2500

3000

3500

4000

24

Figura 2.4 - Espectrograma de una señal con sibilancias usando una ventana de Hanning de 1024 muestras de longitud.

Figura 2.5 - Espectrograma de una señal con sibilancias usando una ventana de Hanning de 2048 muestras de longitud.

Time (s)

Fre

quency (

Hz)

Espectrograma

0 1 2 3 4 50

500

1000

1500

2000

2500

3000

3500

4000

Time (s)

Fre

quency (

Hz)

Espectrograma

0 1 2 3 4 50

500

1000

1500

2000

2500

3000

3500

4000

25

Figura 2.6 - Espectrograma de una señal con sibilancias usando una ventana rectangular de 512 muestras de longitud.

Figura 2.7 - Espectrograma de una señal con sibilancias usando una ventana rectangular de 1024 muestras de longitud.

Time (s)

Fre

quency (

Hz)

Espectrograma

0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

500

1000

1500

2000

2500

3000

3500

Time (s)

Fre

quency (

Hz)

Espectrograma

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

500

1000

1500

2000

2500

3000

3500

26

Figura 2.8 - Espectrograma de una señal con sibilancias usando una ventana rectangular de 2048 muestras de longitud.

En estos ejemplos podemos apreciar como la resolución en tiempo es un factor

clave a la hora de elegir el tamaño de ventana que se utilizará para la aplicación, esto es,

a medida que disminuye la longitud de la ventana utilizada, la resolución en tiempo o la

capacidad de apreciar cambios en el tiempo aumenta a costa de perder resolución en

frecuencia. Por esta razón, según el tipo de señal analizada, es necesario obtener una

resolución temporal más o menos alta a costa o a favor de obtener una resolución en

frecuencia menor o mayor respectivamente.

Debemos tener en cuenta también el tipo de ventana a utilizar, como vemos en los

ejemplos expuestos en las figuras 2.9 y 2.10. Cada ventana ofrece una anchura de lóbulo

principal distinta, así como una diferencia relativa entre lóbulo principal y secundario

diferente. Este último factor determinará en gran medida la capacidad de representación

de un espectrograma, como hemos visto en las 6 figuras anteriores, ya que a una menor

diferencia relativa de lóbulos, la dispersión espectral será mayor y la calidad de nuestro

espectrograma disminuirá. Es por ello por lo que nos decantamos por una ventana de

Hanning, aunque ofrece una menor resolución en frecuencia, como apreciamos en la

tabla 2.1 y en las ecuaciones (28) y (29), el grado de dispersión desciende ya que se trata

de una ventana con una pendiente más suave en comparación con una rectangular. Esto

Time (s)

Fre

quency (

Hz)

Espectrograma

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

500

1000

1500

2000

2500

3000

3500

27

se debe a que su diferencia relativa entre lóbulos principal y secundario es mayor, como

podemos apreciar en el siguiente ejemplo:

Figura 2.9 – Ventana rectangular en el dominio de la frecuencia [23]

Figura 2.10 – Ventana de Hanning en el dominio de la frecuencia. [23]

2.2 Sonidos Pulmonares

Al hablar de sonidos pulmonares nos referimos a aquellos sonidos generados por

el movimiento del aire a través del aparato respiratorio humano, más en concreto en los

pulmones, pudiendo ser escuchados de forma clara mediante el proceso de auscultación

28

normalmente realizado con un fonendoscopio situado en determinadas zonas del tórax y

la espalda del paciente. Las alteraciones de los diferentes parámetros anteriormente

definidos en un sonido pulmonar normal pueden permitir a un médico distinguir diferentes

irregularidades pulmonares en el caso de que el paciente las presente. Por lo general, tal

y como se define en el estudio realizado en [1], la frecuencia de los sonidos pulmonares

está comprendida en un rango de entre 50 Hz y 2500Hz pudiendo llegar incluso a los

4000 Hz en sonidos producidos en la tráquea. Existen varios tipos de sonidos pulmonares

normales (procedentes de una respiración sana) en función de la zona auscultada o de la

procedencia del sonido generado durante la respiración, como consecuencia de ello los

parámetros como la frecuencia y la amplitud de la señal acústica variarán en función del

tipo de sonido que analicemos. Entre ellos podemos destacar los sonidos vesiculares

(son los que presentan una frecuencia más baja), bronco-vesiculares (contienen una

frecuencia media dentro del rango establecido) y bronquiales (presenta la frecuencia más

alta y suelen ser más sonoros).

Existe un subgrupo de sonidos pulmonares denominados ruidos adventicios, tal y

como se muestra en el artículo [2] donde se recogen las definiciones de hasta 162

términos relacionados con los sonidos respiratorios y su análisis mediante software.

Estos sonidos quedan superpuestos a los sonidos respiratorios normales mencionados

anteriormente y son un indicio de patología pulmonar. En función de su frecuencia

fundamental, duración, intensidad sonora, continuidad temporal, etc. podemos

clasificarlos en los siguientes grupos [2]: estertores (sonidos continuos parecidos a las

sibilancias, presentan una frecuencia más baja), crepitantes (sonidos discontinuos de

corta duración y frecuencia alta) y estridor (presenta una alta frecuencia y es descrito

como un sonido chillón). Es en este tipo de sonido pulmonar en el que se incluyen las

sibilancias que serán descritas más adelante. En la Figura 2.11 extraída del artículo

anteriormente mencionado se puede apreciar de forma visual la relación existente entre

los términos anteriormente descritos.

29

Figura 2.11 - Relación entre los términos sonido respiratorio, sonido adventicio y sonido pulmonar [2].

Como ya hemos mencionado antes, las muestras de audio que recogen la

respiración humana pueden tener componentes en frecuencia que superen los 2500 Hz o

incluso alcanzan los 4000 Hz, como se muestra en la figura 2.12 extraída de una

respiración con estertores obtenida en [18] ("73Ant2R.wav"). Por esta razón, es

importante tener en cuenta que los audios utilizados en este estudio sean muestreados a

8000 Hz ya que 𝑓𝑚𝑎𝑥 puede tomar valores de hasta 4000 Hz. Esto quiere decir que la

frecuencia de muestreo de los fragmentos de audio debe ser de 8000 Hz. Llegamos a

esta conclusión mediante la ecuación (27) expuesta en el apartado 2.1.4 de esta

memoria, tal y como se define en el teorema de Nyquist-Shannon.

Figura 2.12 – Espectrograma de una respiración con estertores o crepitantes gruesos.

30

2.3 Sibilancias

Se trata de un tipo de sonido adventicio causado por el movimiento del aire entre

las vías respiratorias obstruidas [2]. Los mecanismos fisiopatológicos causantes de estos

tipos de sonidos no están claros a día de hoy, tal y como refleja el artículo [4] y [21], el

cual indica que el exceso de secreción de líquidos en las vías respiratorias puede ser uno

de los principales causantes de estos sonidos debido al estrechamiento que causan en

los conductos respiratorios. En el mismo artículo se muestra como numerosos estudios

teóricos y simulaciones relacionadas con el movimiento del aire a través de diferentes

tipos de conductos similares a los pulmonares, intentan demostrar que la causa por la

que se generan las sibilancias puede radicar en el movimiento vibratorio de las paredes

de las vías respiratorias debido a posibles anomalías en sus formas (estrechamientos)

debido a la obstrucción de éstas.

Como ya hemos mencionado antes, las sibilancias son un indicio de patología

pulmonar causada principalmente por asma u otras enfermedades denominadas EPOC

(Enfermedad Pulmonar Obstructiva Crónica). También pueden ser causadas por

reacciones alérgicas graves e inhalación de sustancias tóxicas [21].

Una de las principales características que podemos observar a simple vista en el

análisis espectral de una muestra de audio que contenga sibilancias es la existencia de

picos bien diferenciados en un rango de frecuencias determinado, es decir, bandas en

frecuencia con una energía significativamente superior al resto. Tal y como se muestra en

la figura 2.13 extraída del análisis realizado en [3], en una respiración normal un alto

porcentaje de la energía se encuentra concentrada en el rango indicado en el apartado

2.2 de esta memoria. Esta energía decae a medida que aumenta la frecuencia, es decir,

las componentes en alta frecuencia son mucho menos energéticas que las de baja

frecuencia. Por otro lado, en el análisis espectral de una respiración con sibilancias

apreciamos la aparición de picos energéticos bien diferenciados en un rango que

definiremos más adelante, lo cual nos indica que dichos sonidos adventicios se

superponen a los sonidos producidos por una respiración normal, modificando el espectro

de una respiración sana:

31

Figura 2 13 - Análisis espectral de una respiración normal (arriba) y análisis espectral de una respiración con sibilancias (abajo) [3].

En cuanto a los rangos en frecuencia en los que suelen aparecer estos picos,

diversos análisis lo definen de forma distinta basados en estudios propios ya que no

existe una estandarización como tal, por lo tanto, en el apartado 4 de esta memoria

quedarán referenciados algunos de estos estudios. En nuestro caso, diferenciaremos dos

rangos según la edad del paciente: como es de esperar, los parámetros que definen las

características de las sibilancias (frecuencia, amplitud, etc.) dependen de la forma y

capacidad de los órganos respiratorios además del tipo de anomalía que exista en el

aparato respiratorio, por esta razón, debido a la edad del paciente las sibilancias podrán

presentar una frecuencia fundamental incluida en un rango espectral o en otro. Según el

estudio realizado en [5] los niños de corta edad (entre 7 y 10 meses) seleccionados a

partir de los cuales se tomaron las muestras de audio, presentan sibilancias cuya

frecuencia fundamental oscila entre los 125 y 375 Hz durante la inspiración. En este

trabajo se ha decidido tomar un rango de frecuencias para sibilancias en pacientes de

corta edad ya que es importante su detección en periodos lactantes y prematuros. La

aparición de otros sonidos como los roncus (ruttles) durante los primeros meses de vida

de algunos niños (fácilmente confundibles con sibilancias por el oído humano) y la

importancia de detectar y diagnosticar asma en estos pacientes hace que pongamos

especial atención a la hora de detectar sibilancias en este grupo.

En cuanto a los adultos, en un intento de estandarización llevado a cabo por un

comité de la ATS (American Thoracic Society) [6] se definió que la frecuencia

32

fundamental de una sibilancia producida por un paciente adulto superará los 400 Hz.

Además define que la duración mínima que la sibilancia debe tener para ser considerada

como tal debe superar los 250 ms. Consideraremos esta misma duración para sibilancias

en niños de corta edad ya que el mismo comité remarca que este dato no se verá

modificado para este tipo de pacientes, por esta razón, la duración temporal no será un

factor a tener en cuenta para la distinción entre grupos para la detección de sibilancias.

Hemos de remarcar el hecho de que muchos de los estudios y artículos

consultados (por ejemplo [8], [10] o [11]) no diferencian entre rangos de frecuencia para

niños de corta edad y adultos, simplemente definen un rango de frecuencias basados en

estudios propios realizados sobre adultos o en el definido en otros artículos.

Otra característica importante que debemos mencionar a la hora de definir una

sibilancia es la aparición o no de armónicos en su espectro. Esto nos permitirá diferenciar

si una sibilancia es polifónica, es decir, contiene una frecuencia fundamental más

energética que el resto y además cuenta con armónicos (picos significativos múltiplos de

la frecuencia fundamental) o es monofónica, en cuyo caso el espectro estará compuesto

por una sola frecuencia fundamental en ausencia de armónicos. Para un médico, definir

si una sibilancia es monofónica o polifónica puede llegar a ser útil en la localización de la

zona respiratoria obstruida o estrechada. Las sibilancias monofónicas son indicadores del

estrechamiento de vías aéreas largas mientras que las polifónicas indican que la

anomalía se encuentra en vías cortas. Este último tipo de sibilancia también está

asociada a enfermedades como el asma y otras EPOC, tal y como se menciona en [14].

2.3.1 Diferencias existentes entre sibilancias, roncus o ruttles

En algunos de los documentos consultados, como por ejemplo [5] y [7], se hace

referencia a las dificultades que presentan algunos padres de niños de corta edad a la

hora de detectar en ellos sibilancias y diferenciarlas de otros sonidos adventicios como

los roncus (también nombrados como ruttles, término que procede de Yorkshire, Reino

Unido [5]). Ambos sonidos aparecen de forma muy frecuente en niños de corta edad y

son indicadores de enfermedades o anomalías respiratorias muy distintas entre sí,

pudiendo ser las que causan las sibilancias mucho más peligrosas y nocivas para el

paciente. Los roncus presentan ciertas características que aunque el oído humano en

ciertos casos es incapaz de detectar, son clave para diferenciarlos de otros ruidos

respiratorios, lo cual nos demuestra como muchos padres se refieren a estos sonidos

adventicios como sibilancias aunque realmente no lo sean. Las características que el

oído humano es incapaz de detectar de forma objetiva procedentes de estos dos tipos de

sonidos pueden ser apreciadas claramente al observar un análisis en frecuencia de cada

uno de los ruidos respiratorios. En la figura 2.14, extraída del artículo [9] se muestran tres

33

análisis en frecuencia de tres sonidos respiratorios distintos: respiración normal, con

sibilancias y con ruttles.

Figura 2.14 - Análisis espectral de una grabación normal (A), con sibilancias (B) y con ruttles (C) [9].

A simple vista podemos apreciar como las sibilancias presentan picos bien

diferenciados en ciertas frecuencias, mientras que los ruttles muestran un análisis

espectral con picos menos significativos y situados de forma más difusa dentro del rango

espectral, es decir, sin picos claramente diferenciados y con una frecuencia fundamental

más baja que la de las sibilancias. Por esta razón, es importante el hecho de distinguir

bien los rangos en frecuencia entre estos dos sonidos. En el artículo [9], tras un estudio

realizado en diferentes niños de corta edad, se llegó a la conclusión de que la frecuencia

fundamental de los ruttles suele aparecer en un rango inferior al definido anteriormente

para las sibilancias en niños de corta edad, esto es, entre los 70 Hz y 190 Hz durante la

inspiración. El hecho de que los ruttles no presenten armonicidad en su forma de onda

nos permitirá distinguirlos claramente con las sibilancias polifónicas, las cuales presentan

armónicos con respecto a su frecuencia fundamental. Por otro lado, aunque las

sibilancias monofónicas también carezcan de armonicidad, su frecuencia fundamental se

encuentra en un rango superior al de los rattles, tal y como se ha mencionado

anteriormente, por lo que esta característica es clave a la hora de diferenciar este tipo de

sonido adventicio y las sibilancias monofónicas.

34

En el software desarrollado se define claramente un umbral en frecuencia

específico para pacientes de corta edad, lo que facilita y agiliza el proceso de selección

de sibilancias, evitando falsos positivos cuando la muestra de audio introducida contiene

ruttles en vez de sibilancias. El proceso de selección de picos significativos dentro del

desarrollo del software también es una herramienta muy útil para descartar estos sonidos

y no ser detectados como sibilancias. En cuanto al análisis en amplitud y tiempo de estos

dos sonidos pulmonares, podemos apreciar como las sibilancias presentan una forma de

onda parecida a la de una señal sinusoidal (en varios documentos referenciados se

denomina este fenómeno como "musicalidad", por ejemplo en [4], [5] o [14]) mientras que

los ruttles presentan una forma de onda irregular (fenómeno denominado como “no

musicalidad”).

De nuevo, hacer hincapié en la importancia que tiene el hecho de descartar ruttles

en la detección de sibilancias ya que aunque estos sonidos son indicadores de exceso de

secreción en las vías respiratorias, no suelen tener consecuencias tan importantes como

las que pueden presentar las sibilancias, sobretodo en niños de corta edad. Un oído

humano inexperto puede llegar a confundir estos sonidos pulmonares pudiendo ser

perjudicial para el paciente que padece la irregularidad pulmonar.

35

3 OBJETIVOS

El principal objetivo de este trabajo fin de grado es la implementación de un

software capaz de detectar sibilancias mediante el tratamiento digital de una señal

acústica a través de la herramienta matemática Matlab. A partir de una serie de

parámetros que obtendremos a lo largo del proceso, el software será capaz de advertir o

no sobre la existencia de sonidos adventicios tales como las sibilancias en la muestras de

audio que serán previamente grabadas.

Para alcanzar este objetivo principal, se han propuesto conseguir los siguientes

objetivos secundarios:

- Conocer los distintos métodos computarizados utilizados para la detección de

sibilancias y otros sonidos pulmonares.

- Estudiar las características de diversos sonidos adventicios para poder

diferenciarlos entre sí.

- Implementar un algoritmo capaz de mejorar ciertos aspectos en cuanto a la

detección de sonidos adventicios.

- Estudiar las distintas posibilidades en cuanto a la aparición de anomalías en el

aparato respiratorio con el fin de cuantificar ciertas características sonoras que

nos permitan distinguir sonidos adventicios.

- Revisión del estado del arte en el ámbito de la auscultación computarizada y la

detección de sibilancias.

- Conocer las técnicas de optimización y testeo para la obtención de resultados

a partir de métricas y otros parámetros.

- Conocer las distintas posibilidades que nos ofrece Matlab a la hora de crear un

GUI (Interfaz Gráfica de Usuario) para que la manipulación de este software

sea intuitiva y cómoda para el usuario final.

36

4 ESTADO DEL ARTE

El primer problema que se nos plantea a la hora de desarrollar este trabajo es la

gran cantidad de artículos de investigación y estudios realizados utilizando parámetros

muy dispares entre sí. Es obvio pensar que las características de una sibilancia

dependen totalmente de la edad del paciente, capacidad de los órganos respiratorios, tipo

de enfermedad que padezca, calidad de la grabación utilizada para el posterior análisis

de la señal de audio, etc. Por estas razones, es casi imposible definir un rango en

frecuencia fijo entre el cual la frecuencia fundamental de una sibilancia oscile. En cuanto

a la duración de una sibilancia ocurre algo similar, esta depende tanto del paciente como

del volumen de los órganos respiratorios en los cuales se genera la señal, además hay

que añadir el hecho de que el tiempo de inspiración y espiración varía en función de

estas características y como es de suponer, la duración de una sibilancia se ve afectada

por ello.

A continuación, se mostrarán algunos rangos en frecuencia y duraciones de

sibilancias extraídas de diversos artículos consultados:

En el estudio [8] donde se propone un método de detección y análisis de

sibilancias, se estudian varios casos de pacientes con asma y se llega a la conclusión de

que la frecuencia fundamental de una sibilancia se encontrará en un rango definido desde

los 100 Hz hasta los 2000Hz, usando muestras de audio grabadas directamente en

pacientes reales. En este caso, no se diferencia entre paciente adulto y de corta edad, ya

que el estudio ha sido realizado mediante la colaboración de dos grupos de personas:

- 16 adultos asmáticos no fumadores.

- 15 adultos sin patologías respiratorias

En dichos pacientes han sido aplicadas sustancias broncodilatadoras con el fin de

aumentar el flujo de aire expirado.

En cuanto a la duración de las sibilancias, los autores indican que su valor debe

estar comprendido entre 80ms y 250 ms.

El estudio ha sido realizado teniendo en cuenta una zona de interés dentro de la

respiración completa, en este caso la exhalación de un paciente, tal y como se muestra

en la figura 4.1, extraída del artículo en cuestión donde se muestra el flujo de aire en

movimiento en litros por segundo frente al tiempo que transcurre durante la respiración:

37

Figura 4.1 - Diagrama de una respiración humana [8].

Las muestras de audio utilizadas en este estudio han sido obtenidas de forma no

invasiva desde la tráquea utilizando un sensor PPG (piezoelectric phonopneumograph).

El proceso de pre-procesado de señal se compone de las siguientes pautas:

- Amplificación de la señal de audio.

- Filtrado mediante un filtro paso-banda analógico Butterworth (70 – 2000 Hz).

- Muestreo de la señal a 5000 Hz.

El proceso de detección de sibilancias se lleva a cabo mediante el análisis

espectral de las muestras de audio una vez procesadas tal y como se ha mencionado.

Para la obtención de los espectrogramas se han utilizado ventanas de Hanning de 256

muestras con solapamientos del 50%. Dicho análisis se realiza mediante la búsqueda de

picos significativos en bandas de 100 Hz, utilizando dos umbrales (a y b) con el fin de

definir posibles muestras pertenecientes a sibilancias. Si estos picos detectados se

encuentran en el umbral establecido entre a y b, dichas muestras pueden pertenecer a

una sibilancia.

Un proceso de agrupación de picos significativos servirá para poder desechar

muestras pertenecientes a otros ruidos adventicios de corta duración o ruido introducido

por los sensores utilizados para la obtención de las muestras de audio. Siguiendo el

siguiente criterio, dos picos significativos pertenecerán a la misma agrupación si su

separación temporal es menor a 25.6 ms y distan en frecuencia 65 Hz o menos.

38

Como ya se mencionó en el apartado 2.3, el estudio [5] ha sido realizado

exclusivamente mediante pacientes de corta edad, por lo tanto, en él se llega a la

conclusión de que la frecuencia fundamental de las sibilancias presentes en la respiración

de niños oscila entre los 125 Hz y 375 Hz. Este estudio, también define que la duración

mínima para que una sibilancia tenga un carácter continuo sea de 250 ms. Según se

indica, este parámetro ha sido obtenido siguiendo las pautas que define el comité de la

ATS [6]. Al tratarse de un estudio realizado fundamentalmente sobre niños de corta edad,

se hace sobretodo hincapié en las diferencias existentes entre ruttles, sibilancias y los

sonidos respiratorios normales, mostrando tres ejemplos mediante el análisis en

frecuencia y tiempo de tres respiraciones. A continuación, se muestra la figura 4.2 la cual

recoge dichos ejemplos donde se aprecia claramente lo mencionado en la sección 2.3.1

de esta memoria, es decir, la diferencia existente entre la frecuencia de oscilación de una

respiración en niños con ruttles y sibilancias. Los picos de una sibilancia se pueden

encontrar en rangos de frecuencia superiores a los picos generados en una respiración

con ruttles.

El estudio se realiza mediante el análisis de la respiración de un total de 15 bebés

de corta edad (entre 7 y 10 meses), 7 de ellos con sibilancias y 8 con ruttles. Las

grabaciones se realizaron utilizando un acelerómetro piezoeléctrico situado en el pecho

de cada uno de los pacientes. La duración de las grabaciones es aproximadamente de un

minuto, llevadas a cabo mientras los bebés respiraban de forma tranquila mientras

dormían.

La fase de pre-procesado consta de las siguientes partes:

- Filtrado paso-banda entre 50 Hz y 2500 Hz usando un filtro Butterworth de

orden 6.

- Amplificación de la señal.

- Muestreo utilizando una frecuencia de 10240 Hz.

- Cálculo de espectrograma usando una FFT de 2048 muestras en intervalos de

100 ms utilizando una ventana de Hanning con un solapamiento de 50 ms.

Mediante el análisis de los espectrogramas de las señales grabadas en los

pacientes se llega a las siguientes conclusiones:

- La frecuencia fundamental de las sibilancias en niños de corta edad está

comprendida entre los 125 Hz y los 375 Hz durante la inspiración y entre los

212 Hz y 303 Hz durante la espiración.

- La frecuencia fundamental de los ruttles se encuentra comprendida entre los

70 Hz y 190 Hz durante la inspiración y entre 87 Hz y 238 Hz durante la

espiración.

39

- La forma de onda de una sibilancia se asemeja en gran medida a una onda

sinusoidal mientras que los ruttles presentan una forma de onda totalmente

irregular.

- El análisis subjetivo de una respiración en un paciente de corta edad puede

llegar a ser erróneo ya que los sonidos adventicios mencionados pueden ser

confundidos por un oído humano inexperto.

Figura 4.2 – Ejemplos de espectrogramas de una respiración sana (a), una con sibilancias (b) y otra con ruttles (c) [5].

En el artículo [10], se hace referencia a los tipos de sonidos adventicios continuos

y discontinuos que pueden ocurrir en la respiración. En este caso se diferencian las

características existentes entre los sonidos continuos como las sibilancias, rhonchis y

estridores, además de mostrar en qué difieren los sonidos discontinuos como son los

crepitantes y squawks (sonidos adventicios de corta duración). En cuanto a sonidos

continuos, la principal diferencia existente entre sibilancias y rhonchis es el rango de

40

frecuencia en el que se encuentra la frecuencia fundamental de ambos sonidos

adventicios. Los rhonchis suelen tener una duración similar a la de las sibilancias, pero su

frecuencia fundamental es inferior (menor de 200 Hz según se menciona en este

artículo). Por otro lado, la principal característica que nos permite distinguir un sonido

sibilante con el producido por un estridor es, además de su frecuencia fundamental, su

tendencia a ser más sonoro en la inspiración del paciente.

Si nos centramos en estos sonidos adventicios continuos, más en concreto en las

sibilancias, de nuevo se define que deben tener una duración superior a los 250 ms pero

esta vez con una frecuencia fundamental situada en 400 Hz. Los sonidos discontinuos

nombrados en este estudio presentan duraciones cortas y por lo tanto no son objeto de

estudio en este trabajo. A continuación, se muestran cuatro diagramas recogidos en la

figura 4.3, obtenidos en el artículo donde se enfrenta amplitud normalizada frente a

tiempo de cuatro sonidos pulmonares entre los que se encuentran los mencionados

anteriormente, con el fin de comparar su estructura frente a la generada por una

respiración normal:

Figura 4.3 – Comparación entre respiraciones con distintos sonidos adventicios [10].

En las pruebas realizadas en este estudio, las muestras de audio utilizadas han

sido obtenidas tanto en el Lemuel Shattuck Hospital como en el Faulkner Hospital. Según

se indica, las características de los pacientes como sexo, edad, peso, etc. no se conocen.

El aspecto clave en este estudio es el hecho de utilizar métodos de fusión a la

hora de crear bases de datos de audio, es decir, conseguir mezclar distintas muestras de

audio obtenidas mediante diferentes sensores situados en múltiples zonas del pecho del

paciente con el fin de poder obtener una mayor cantidad de información acerca del

sonido adventicio que este genera.

El sistema propuesto en este artículo es denominado Automatic Multisensor

Feature-based Recognition System (AMFRS), basado en cuatro bloques, nombrados de

la siguiente manera: DWPD (Discrete Wavelet Packet Decomposition), Feature Selection,

Feature Fusion y Classification.

41

Justificando el método para la detección de sibilancias propuesto en [11]

simplemente se especifica que la frecuencia fundamental de una sibilancia estará situada

por encima de los 100 Hz de forma usual. Además, uno de los criterios aplicados para

determinar la continuidad de una sibilancia es que la duración mínima debe estar entorno

a los 100 ms. En este estudio se usa una frecuencia de muestreo para la grabación de

los sonidos de 5512 Hz. El método implementado en este artículo muestra resultados

parecidos a los obtenidos en nuestro software tal y como se muestra en la figura 4.4:

Figura 4.4 – Espectrogramas que muestran los picos más significativos obtenidos en el análisis mediante el sistema WED [11].

Apreciamos como el sistema obtiene a partir del espectrograma de la señal

original los picos más significativos que tras un una serie de procesos explicados en el

artículo, se mantienen solo aquellos picos pertenecientes a las sibilancias, aunque como

vemos, la existencia de falsos positivos en frecuencias bajas es notable. Esto se debe al

ruido que introducen los métodos de grabación llevados a cabo, incluso ruido de

respiración de baja frecuencia que puede hacer que el sistema obtenga errores. Es

preferible el hecho de que el sistema introduzca falsos positivos a obtener un alto número

de falsos negativos ya que el hecho de no detectar una sibilancia puede incurrir a error en

el diagnóstico. Una falsa alarma puede tener menores consecuencias en el diagnóstico.

El método utilizado y descrito en el artículo [12] utiliza grabaciones de dos sujetos

realizadas durante varios periodos de tiempo con el fin de extraer muestras de audio con

las que trabajar durante su implementación. En este caso, se define que el rango en

frecuencia entre el que se suele encontrar la frecuencia fundamental de una sibilancia se

42

encuentra comprendido entre los 100 Hz y 1300 Hz ya que se realiza un análisis

espectral dividido en 26 sub-bandas a lo largo de dicho rango. Las muestras están

grabadas con una frecuencia de muestreo de 7500 Hz y filtradas con un filtro Butterworth

paso-bajo con frecuencia de corte en 1300 Hz. Por esta razón, aunque no es mencionado

en el artículo, la capacidad de detectar armónicos en este estudio es mermada ya que

gran parte de las componentes en frecuencia de una sibilancia polifónica pueden situarse

en frecuencias superiores a la de corte impuesta por el filtro. Debemos suponer que en

este estudio la búsqueda de armónicos no es de interés.

En este documento no se tiene en cuenta la duración mínima que debe tener una

sibilancia para ser definida como tal. Debemos tener en cuenta que los dos pacientes que

participaron en la grabación de sonidos respiratorios para este estudio (un varón de 18

años asmático y una mujer sana de 19 años) fueron sometidos a la inhalación de

alérgenos con el fin de padecer obstrucciones en las vías respiratorias, reduciendo así un

20 % el volumen de aire inhalado con respecto a una respiración normal. Al final de las

conclusiones, es mencionado el hecho de que los resultados obtenidos por la paciente

femenina no han sido los esperados debido, en parte, a ruidos interferentes en las

grabaciones introducidos por los sistemas de grabación, tos del paciente, posibles

crepitantes en la respiración, etc.

En el estudio realizado en [13] se lleva a cabo la grabación de la respiración de

hasta 12 pacientes con edades comprendidas entre los 22 y los 55 años con el fin de

implementar un sistema capaz de monitorizar las obstrucciones debidas al asma que

aparecen en el aparato respiratorio. Tras la grabación de 30 minutos de respiración de

cada paciente, el sistema elegirá segmentos de duración 250 ms en intervalos de 5

minutos en dicha muestra de audio con el fin de estimar el número de sibilancias

existentes en ese tramo respiratorio de media hora para así poder obtener información

acerca de la gravedad que supone la obstrucción en vías respiratorias del paciente

analizado.

Tras el análisis de los audios, se llega a la conclusión de que las sibilancias están

asociadas a un pico bien diferenciado en frecuencia situado en un rango comprendido

entre los 150 Hz y los 1000 Hz. Teniendo en cuenta que la duración de una sibilancia es

definida con un valor de 250 ms, se utiliza en el algoritmo de análisis de señales sonoras

transformadas rápidas de Fourier en segmentos de la misma duración. La frecuencia de

muestreo usada para la digitalización de las muestras en este estudio es de 2048

muestras por segundo. En este estudio ha sido administrado a cada paciente sustancias

broncodilatadoras con el fin de aumentar el volumen de aire en un espiración forzada

(FEV – Forced expiratory volume). A continuación, se muestra una tabla reflejada en la

43

figura 4.5 con información relativa a la edad de los pacientes y el volumen de aire

espirado antes y después de ser aplicada la sustancia broncodilatadora:

Figura 4.5 – Resultados del análisis de respiraciones de los 12 sujetos participantes en la prueba realizada en [13].

En el estudio se demuestra como la cantidad de aire introducido en las vías

respiratorias está relacionado de forma directa con la aparición de ciertos picos en las

sibilancias producidas por el asma.

Hay que remarcar el hecho de que la mayoría de estudios referenciados no toman

diferentes rangos en frecuencia para diferentes tipos de paciente sino que realizan

estudios orientados exclusivamente a niños de corta edad o adultos, obteniendo rangos

en frecuencia que no son aplicables para otro tipo de paciente que no sea el analizado

como sujeto de prueba. También debemos mencionar que la mayoría de los estudios

llevados a cabo obtienen las muestras de audio de forma autónoma mediante el uso de

diversas técnicas de grabación dirigidas por los autores en cuestión. Como es de esperar,

estas muestras de audio no están disponibles de forma gratuita en la gran mayoría de

casos, llegando a ser escasa la cantidad de audios disponibles sin utilizar métodos de

pago. Otros métodos referenciados toman muestras de audio presentes en bases de

datos alojadas en Internet, siendo necesario realizar una suscripción de pago al servicio

que las gestiona.

En cuanto a software diseñado para la detección de sibilancias cuya

implementación ha sido explicada de forma breve en artículos de investigación, podemos

destacar los siguientes tres a partir de los cuales nuestro software ha sido construido: en

[14], además de tratar la problemática que hemos presentado anteriormente acerca de la

44

gran variedad de rangos en frecuencia propuestos, se presenta la implementación de un

software detector de sibilancias basado en el estudio en frecuencia de la señal de audio.

Aunque referencia el origen de las muestras de audio utilizadas para demostrar la

eficiencia del programa, las páginas webs utilizadas actualmente se encuentran fuera de

servicio y nos ha sido imposible obtener dichas muestras de audio para ser utilizadas en

nuestro software. El análisis espectral ha sido realizado mediante transformadas rápidas

de Fourier con ventanas de 50 ms solapadas al 50% sobre audios muestreados a 5500

Hz. Después de especificar estos parámetros, una breve descripción del proceso de

detección es dada: tras un análisis en frecuencia, se detectan los picos predominantes

que estén localizados dentro del rango en frecuencia usado en este estudio (225-800 Hz)

tal y como se muestra en la figura 4.6, extraída del artículo:

Figura 4.6 – Espectrograma de una respiración sana (a) y de una respiración con sibilancias (b), mostrando el rango en frecuencia donde suelen aparecer los picos más

significativos [14].

45

Dichos picos se deben agrupar y tras ello, se comprobará la continuidad de cada

agrupación, teniendo en cuenta que la duración mínima para una sibilancia se establece

en 250 ms. A continuación, se muestra el esquema del algoritmo propuesto en este

artículo, mostrado en la figura 4.7. Finalmente, son mencionados los resultados obtenidos

por el software para diferentes muestras de audio que contienen distintos tipos de

sibilancias y otros sonidos adventicios. Como podemos observar, en los experimentos

realizados, el software detecta el 100% de las muestras pertenecientes a sibilancias

espiratorias e inspiratorias, detecta el 89% de las sibilancias monofónicas y un 60% del

resto de sonidos sibilantes. De esta manera, podemos observar ante que sonidos

sibilantes es más robusto este software.

Figura 4.7 – Diagrama de bloques del algoritmo propuesto en [14].

Como podremos apreciar en apartados posteriores, el esquema que proponemos

se basa tanto en el expuesto en la figura 4.7 como en el expuesto en la figura 4.8, ya que

ambos basan el proceso de detección de sibilancias en la detección de picos

significativos encontrados en el espectrograma de una señal sonora.

Por otro lado, es en [15] donde se muestra un tipo de software para la detección

de sibilancias parecido al anterior. Este programa también realiza un análisis en

frecuencia de las señales de audio que procese. Las muestras utilizadas han sido

muestreadas con diferentes frecuencias, desde 4000 Hz hasta 8012 Hz. La obtención del

46

espectrograma, de nuevo, se realiza mediante una serie de transformadas de Fourier

rápidas, sin especificar los parámetros usados.

A continuación, se presenta un método de agrupación de picos significativos

basado en el efecto Haas. Según este efecto, si varios sonidos independientes o

procedentes de distintas fuentes sonoras alcanzan nuestro oído en un intervalo inferior a

50 ms de separación entre ellos, el cerebro los interpretará como uno solo. En el método

presentado en nuestro trabajo, se explicará el porqué de basarnos en este efecto para la

agrupación de picos o como denominaremos más adelante, obtención de trayectorias.

Tras la agrupación se realiza un estudio de la continuidad de los grupos obtenidos

y se descartarán los que no superen el tiempo mínimo establecido, en este caso 150 ms.

El método tratado en este artículo añade un último paso en el descarte de posibles falsos

positivos basado en el cálculo de un factor que relaciona la potencia sonora de una

posible sibilancia con la potencia sonora del audio completo. Si dicho factor supera un

umbral, no se descartará la posible sibilancia. Debido a que la duración total del audio

introducido en el programa puede variar según el tipo de grabación y otros factores

ajenos al software, este valor calculado depende totalmente de la longitud de la muestra

introducida, lo cual hace que un umbral determinado solo sirva para descartar posibles

falsos positivos en cierto número de audios utilizados, siendo necesario el hecho de

volver a calcular un nuevo umbral para muestras de audio de mayor o menor duración

total. En nuestro caso, el software implementado en este trabajo no tiene restricciones en

cuanto a duración del audio analizado, por lo tanto, no se considera robusto el cálculo de

un umbral para cada señal introducida, es por ello por lo que se ha decidido no incluir

este último paso en el desarrollo de nuestro detector de sibilancias. En la figura 4.8 se

muestra el esquema de la implementación del software propuesto en el documento

referenciado:

Figura 4.8 – Esquema de la implementación del software propuesto en el artículo [15].

Este método, como vemos, también se basa en la agrupación de picos

significativos, desechando agrupaciones cuya duración mínima no supere los 150 ms de

duración. Tras ello, se realizará el cálculo de la potencia de las supuestas sibilancias para

determinar mediante la comparación con un umbral establecido si realmente lo son o

47

deben desecharse de nuevo. Es este último paso el que no ha sido incluido en nuestro

software por las razones expuestas anteriormente.

El artículo [24] es el más reciente referenciado en este trabajo (publicado en 2017)

y muestra la implementación de un sistema de detección de sibilancias en tiempo real a

partir del análisis en frecuencia de los sonidos detectados por un fonendoscopio digital

conectado a un PC donde el software principal será el encargado de detectar de forma

constante las sibilancias. Según se menciona en el documento, el bajo coste

computacional que supone el funcionamiento del sistema, hace posible que este sea

implementado en aparatos digitales portátiles. En la figura 4.9 se muestra un ejemplo de

los componentes que conforman el sistema por completo:

Figura 4.9 – Esquema del sistema propuesto en [24]

Como podemos observar, consta de un módulo de adquisición de señal que en

todo momento estará en contacto con el pecho del paciente. Este módulo puede estar

compuesto por un fonendoscopio digital tal y como se ha mencionado antes. Según ha

sido diseñado este módulo, en el artículo se asegura que la adquisición de la señal

sonora se realiza con una buena calidad, además de contar con un transmisor capaz de

enviar dicha muestra sonora al host encargado de analizarla vía Bluetooth. En la figura

4.10 se muestra un esquema de la implementación del módulo de adquisición y parte del

hardware que lo compone.

48

Figura 4.10 – a) diagrama de bloques implementado en el módulo de adquisición. b) hardware que compone el módulo. c) sensor acústico. [24]

El rango establecido en el cual la frecuencia fundamental de una sibilancia suele

oscilar se encuentra situado entre los 250 Hz y los 800 Hz, con una duración temporal de

más de 250 ms. Mediante estos parámetros, el software propuesto en el artículo será

capaz de extraer información espectral en tiempo real gracias a los módulos que se

implementan y se muestran en la figura 4.11:

Figura 4.11 – Diagrama de bloques del software propuesto en [24].

La fase de pre-procesado consta de un filtro paso banda con frecuencias de corte

situadas en 150 Hz y 1000 Hz con el fin de eliminar ruido introducido por los latidos del

corazón, del movimiento de los músculos y del flujo de sangre. El cálculo espectral será

realizado utilizando una ventana de Hanning de duración 250 ms con solapamiento de

49

200 ms para un posterior cálculo de la FFT de cada segmento del audio una vez pre-

procesado.

En la figura 4.12 se muestra una tabla con los resultados obtenidos, mostrando los

verdaderos positivos (TP), falsos positivos (FP), falsos negativos (FN) y verdaderos

negativos (TN) detectados en el proceso de evaluación llevado a cabo en el estudio.

Figura 4.12 – Resultados obtenidos en [24]

Podemos observar como la ausencia de falsos positivos y la pequeña cantidad de

falsos negativos detectados confirman el hecho de que el software tenga resultados

satisfactorios en un 91.51% de los casos.

Los audios utilizados en este experimento proceden de 40 pacientes adultos con

irregularidades pulmonares y 11 adultos sanos. Estos 40 pacientes fueron sometidos a un

reconocimiento previo en el cual un médico certificó la existencia de sibilancias en sus

respiraciones.

Por último, en [3] se utiliza un software basado en métodos diferentes a los

anteriores, haciendo uso de descriptores para reconocer sibilancias. Estos descriptores

se basan en ratios de energía en bandas de frecuencia (ER, es parecido al método de

obtención de picos significativos en rangos establecidos), cálculos relacionados con los

rangos de frecuencia determinados para la frecuencia fundamental de una sibilancia

(D2M), obtención de correlaciones de la señal original (CF), etc. Mediante la variación de

estos descriptores, se aporta al final del documento una tabla que recoge los diferentes

valores de eficiencia según el parámetro predominante usado. Se obtienen valores desde

un 82.6% de eficiencia hasta un 84.2%.

50

5 IMPLEMENTACIÓN

5.1 Diagrama de bloques del software propuesto

Como el propio título de este trabajo fin de grado indica, el resultado final ha sido

la obtención de un software implementado sobre Matlab capaz de detectar y analizar

sibilancias contenidas en archivos de audio pregrabados. El usuario, ayudándose de una

interfaz gráfica, será capaz de introducir un archivo de audio en formato WAV que

contenga la respiración de un paciente. Como resultado, la interfaz mostrará el número

de sibilancias detectadas (en caso de que las haya), si son polifónicas o monofónicas, el

número de armónicos detectados y una representación gráfica del espectrograma de la

señal. El usuario podrá elegir qué representar en el apartado gráfico. En la sección 9 de

esta memoria se incluye una guía de usuario para ayudar a comprender el

funcionamiento de la interfaz.

En la figura 5.1 se presenta un esquema de los pasos llevados a cabo en la

implementación del software (basado en los esquemas propuestos en [14] y [15]). Cada

bloque muestra un tipo de procesado diferente realizado sobre la muestra de audio y su

espectrograma. A continuación, aunque se muestra una breve descripción de 4 conjuntos

de bloques en la propia figura, se realizará una breve descripción de dichas agrupaciones

para más tarde describir paso a paso de forma específica cada bloque, mostrando una

descripción de su implementación.

Grupo 1: se muestran los preparativos necesarios para el correcto

procesado de la señal de audio que se desea analizar. Dicha muestra de

audio debe ser muestreada a 8000 Hz para poder obtener un

espectrograma adecuado que facilite la detección de sibilancias. Tras esto,

ajustando los parámetros necesarios para realizar el conjunto de

transformadas rápidas de Fourier mediante técnicas de enventanado,

obtendremos el espectrograma de la señal de audio. Dicho espectrograma

servirá para obtener los picos más significativos de la señal original a partir

de los cuales el procesado digital será llevado a cabo.

Grupo 2: aquí se realiza el proceso de agrupación o como ese ha decidido

nombrar en este trabajo, obtención de trayectorias. Mediante un método de

ventana deslizante, analizaremos los picos más significativos obtenidos en

la primera fase para poder agruparlos en función de sus características en

frecuencia y su posición temporal dentro del espectrograma. De forma

sucesiva, se construirán trayectorias o agrupaciones de picos que cumplan

ciertos requisitos mostrados en el siguiente sub-apartado.

51

Figura 5.1 - Esquema de la implementación del software

52

Grupo 3: en él se encuentra el código relacionado con la comprobación de

todos los parámetros obtenidos a lo largo del proceso, mediante los cuales

se tomará la decisión de si las trayectorias obtenidas cumplen las

condiciones necesarias para ser consideradas sibilancias.

Grupo 4: contiene el código necesario para detectar y contar armónicos en

el caso de que los haya. Mediante el análisis de una de las sibilancias, se

buscarán posibles armónicos para poder decidir si esta posible sibilancia

es monofónica (no tiene armónicos) o es polifónica (contiene armónicos).

Como se indica en la figura, este apartado permite descartar ruttles,

anteriormente comentados en el apartado 2.3.

5.2 Implementación de cada bloque

En este apartado se procederá a explicar uno por uno los bloques o etapas

mencionados en el diagrama expuesto anteriormente. Todos ellos están incluidos en el

archivo denominado "principal.m" donde se podrá observar con detalle el código utilizado

para implementar el software detector de sibilancias. Se adjunta con esta memoria.

La versión del programa Matlab utilizada debe ser la R2007b o superior debido a

que es en ella donde se incluye una serie de funciones útiles para el desarrollo de

nuestro software. En nuestro caso, el programa fue desarrollado con la versión R2013a.

5.2.1 Etapa 1: adquisición de señal

En primer lugar, debemos elegir una señal de audio de una respiración humana

que contenga o no sibilancias. No hay ninguna restricción en cuanto a duración de la

muestra introducida, solamente debemos asegurarnos que su formato es del tipo WAV

para que el software pueda extraer correctamente los datos que componen la señal de

entrada. Además, el audio debe haber sido muestreado a 8000 Hz, como se mencionó

anteriormente (las componentes en frecuencia de la respiración pueden llegar a alcanzar

hasta los 4000 Hz). Si el usuario no está seguro de que esto sea así, no debe

preocuparse ya que en la interfaz se han implementado un conjunto de líneas de código

capaces de remuestrear la señal extraída del audio a dicha frecuencia de muestreo. El

archivo de audio original no sufrirá ninguna modificación en este caso. No es relevante el

hecho de que el audio analizado sea o no monocanal.

5.2.2 Etapa 2: transformación tiempo-frecuencia. Cálculo de espectrograma

La obtención del espectrograma a partir del cual se realizará el procesado digital

se efectúa mediante la función denominada "sg", también incluida junto a esta memoria.

Dicha función debe encontrarse en el directorio en el que se sitúe la función principal y el

archivo que contiene el código que implementa la interfaz de usuario "interface.m". Esta

función ejecuta una STFT mediante los siguientes parámetros de entrada:

53

"y": señal que contiene la muestra de audio a analizar.

"nfft": número de transformadas rápidas de Fourier que se efectúan.

Depende del tamaño de la ventana que se elija, lo que a su vez repercutirá

en la resolución del espectrograma. A un mayor tamaño de ventana,

menor resolución temporal y mayor resolución en frecuencia.

"fs": frecuencia de muestreo del audio sobre el que se trabajará.

"window": tipo de ventana que se utilizará para la obtención de

espectrograma, en este caso hemos utilizado una ventana de Hanning con

el número de muestras que introduzca el usuario. En nuestro caso se

recomienda que el tamaño sea de 1024 muestras.

"noverlap": número de muestras que se solaparán en el proceso de

enventanado. En nuestro caso usaremos un solapamiento del 50%, es

decir, la ventana, al desplazarse se solapará con la mitad de las muestras

abarcadas en el instante anterior.

Tras este proceso, obtendremos una matriz cuyo valor absoluto será el que

utilicemos ("Vabs") ya que no nos interesa trabajar con la componente en fase de la

transformada de Fourier. Esto es debido a que en este trabajo solo tendremos en cuenta

el valor de la distribución energética de la señal sonora en el dominio de la frecuencia y

por lo tanto, la componente en fase devuelta por la función anterior no nos aportará

información relevante para la detección de sibilancias.

La representación visual del espectrograma se realizará con la función "imagesc",

especificando en ella los límites de los ejes, siendo el de frecuencia de 0 a 4000 Hz (la

mitad de la frecuencia de muestreo) y el temporal de 0 hasta la duración total del audio.

En cuanto a nomenclatura, llamaremos "frames" a cada una de las columnas que

componen la matriz principal "Vabs" compuesta por los valores que conforman el

espectrograma de la señal sonora y son el resultado del cálculo de cada una de las FFT

de las muestras enventanadas. La duración temporal de cada frame está relacionada

directamente con el número de muestras abarcadas por la ventana, es decir, del tamaño

de esta y del porcentaje de solapamiento utilizado para el cálculo del espectrograma. Es

por esta razón, que a mayor tamaño de ventana utilizado, más muestras abarca la

ventana y por lo tanto la duración temporal de cada frame será mayor. Como

consecuencia, la matriz "Vabs" contendrá menos columnas o frames y la resolución

temporal del espectrograma calculado será menor, tal y como se mostró en el apartado

2.1.4.

Un ejemplo de espectrograma de una respiración con sibilancias polifónicas es el

presentado en la figura 5.2. Podemos ver cómo estas sibilancias se diferencian

claramente en el diagrama ya que son más energéticas que el resto de componentes en

54

frecuencia de la respiración y además, los picos que lo forman son continuos en el tiempo

y cercanos en frecuencia. Este factor será determinante a la hora de realizar

agrupaciones. El audio de duración 10 segundos mediante el cual se ha extraído el

espectrograma reflejado en la figura 5.2 se denomina "6025.wav" (obtenido a partir de

[18]), la ventana usada es de tipo Hanning con una longitud de 1024 muestras. En el

ejemplo podemos apreciar la existencia de 4 sibilancias a partir de los segundos 2, 4, 6.4

y 8.6 respectivamente, todas ellas con aproximadamente 1 segundo de duración.

Figura 5.2 - Espectrograma de una señal de audio con sibilancias.

A continuación, se muestra el espectrograma de otra señal de audio de duración 5

segundos denominada "Wheeze-Bronchiolitis2.wav" (obtenido a partir de [17]), reflejada

en la figura 5.3. Este espectrograma ha sido obtenido mediante una ventana de Hanning

con 512 muestras de longitud. Apreciamos la existencia de 4 sibilancias polifónicas a

partir de los segundos 0.5, 2, 3 y 4.3 respectivamente, cada una con una duración

aproximada de 1 segundo.

55

Figura 5.3 - Espectrograma de una señal de audio con sibilancias, ejemplo 2.

5.2.3 Etapa 3: cálculo de picos más significativos

Es en este bloque donde usaremos la función "findpeaks" para la obtención de los

valores más significativos encontrados en cada frame de la matriz. Se recorrerá mediante

un bucle cada uno de los frames que componen el espectrograma y se aplicará dicha

función de Matlab en cada caso. Los parámetros introducidos en el comando "findpeaks"

son los siguientes:

"SORTSTR": con él se especifica a la función que deseamos obtener los

picos más significativos de forma ordenada. A continuación, debemos

especificar que queremos que los picos se obtengan en orden

descendente (el primer pico que nos devuelva como resultado será el más

energético, mientras que el último será el menos energético en cada

frame).

"NPEAKS": se refiere al número de picos que queremos que la función nos

devuelva en cada frame. Tras varias pruebas, se decidió que devolviese

los 5 más significativos por frame ya que eran suficientes para los

posteriores cálculos.

56

"MINPEAKDISTANCE": hace referencia a la distancia mínima que debe

tener un pico y su consecutivo para que la función lo muestre. En este

caso, de nuevo, tras varias pruebas se ha considerado que la distancia

entre pico y pico consecutivo debe ser como mínimo de 5 muestras. De

este modo evitamos que la función seleccione picos demasiado próximos

que se podrían considerar realmente como uno solo. Esto es debido a que

la anchura espectral de un pico suele ser de 5 muestras aproximadamente,

por lo tanto, cualquier conjunto de picos detectados distanciados por 5 o

menos muestras pueden ser considerados como un único pico.

"THRESHOLD": Sirve para especificar un umbral mínimo a partir del cual

un pico se considera significativo. Este valor muestra cuantas veces debe

ser mayor un pico con respecto a sus valores vecinos para poder ser

seleccionado.

Un ejemplo de frame al que es aplicada esta función puede ser el reflejado en la

figura 5.4, donde se representa mediante la función "plot" de Matlab una de las columnas

que conforman la matriz Vabs, con picos pertenecientes a sibilancias en "6025.wav". En

este caso se muestra el frame número 115 el cual se corresponde con el segundo 7.3 del

audio, aproximádamente:

Figura 5.4 – Representación del frame número 115 de la matriz Vabs.

0 100 200 300 400 500 600-150

-100

-50

0

50

100

X: 40

Y: 44.76

X: 21

Y: 57.61

Frecuencia (filas)

Inte

nsid

ad (

dB

)

57

Podemos observar en la figura anterior la existencia de picos bien diferenciados

dentro de un frame, es decir, un instante corto de tiempo. Sobre el eje "X" se representa

la frecuencia (no expresada en Hz, sino en filas del vector Vabs) de los puntos

pertenecientes al frame en cuestión mientras que sobre el eje "Y" se indica la intensidad

de cada uno de los puntos que conforman el frame número 40, en este caso en concreto.

Los marcadores indican la situación de los picos más enérgicos dentro del frame.

Cada pico detectado con esta función será almacenado en una nueva matriz

denominada "Vabs_pico" cuya estructura es similar a "Vabs", su representación también

se puede efectuar si el usuario lo desea. Además, usando la posición de los picos que

también devuelve el comando anterior, obtendremos una nueva matriz denominada

"posicion_picos" que, como su nombre indica, almacenará la posición en frecuencia y

tiempo de cada uno de los picos obtenidos por frame. Debido a que la respiración

humana y los sistemas de grabación son propensos a introducir ruido de baja frecuencia,

se han implementado un conjunto de líneas de código capaces de eliminar los picos más

significativos detectados debido a la presencia de ruido de baja frecuencia, desechando

dichos picos que se encuentren por debajo de los 70 Hz (basado en el filtrado realizado

en la fase de pre-procesado de [8]). Además, tal y como se ha visto en [5], la frecuencia

fundamental de los ruttles puede oscilar entorno a este valor en niños de corta edad.

A continuación se muestra un ejemplo recogido en la figura 5.5 de los picos más

significativos calculados a partir del espectrograma expuesto en la figura 5.2:

58

Figura 5.5 - Picos más significativos obtenidos mediante "findpeaks" de la señal de audio "6025.wav".

Por otro lado, podemos apreciar esta misma fase de detección de picos aplicada

al espectrograma expuesto en la figura 5.3 perteneciente a la señal de audio contenida

en el archivo "Wheeze-Bronchiolitis2.wav". Como se indicó anteriormente, este ejemplo

se realizó con una ventana de Hanning de 512 muestras (64 ms) con una frecuencia de

muestreo de 8000 Hz y se expone en la figura 5.6:

59

Figura 5.6 - Picos más significativos obtenidos mediante "findpeaks" de la señal de audio "Wheeze-Bronchiolitis2.wav".

En cuanto a la matriz "posicion_picos", podemos apreciar que almacena la

frecuencia correspondiente a cada pico obtenido. Esta matriz tendrá tantas columnas

como frames tenga el espectrograma y tantas filas como picos se desean obtener, en

este caso 5 (como se indicó al inicio de este apartado, tras varias pruebas realizadas con

el comando "findpeaks" se llegó a la conclusión de que 5 picos significativos eran

suficientes para realizar los posteriores cálculos). A continuación, en la figura 5.7, se

muestra el valor de esta matriz para un conjunto de frames determinado:

Figura 5.7 - Parte del contenido de la matriz "posicion_picos" extraída del audio "6025.wav".

60

Podemos observar como en cada frame (en este caso se representan los frames

número 113 hasta 121, correspondientes a los segundos 7.2 y 7.7 respectivamente) se

almacenan los valores relativos a la posición en frecuencia de los picos más significativos

ordenados de forma descendente. Por ejemplo, en el frame 115 se han detectado dos

picos significativos (tal y como se indicó en la figura 5.4) que cumplan las condiciones

impuestas con el comando "findpeaks". El valor de la primera fila de este frame se

corresponde con la posición en frecuencia del pico más energético. El valor de la

segunda fila en dicho frame, por lo tanto, se corresponderá con el siguiente pico más

significativo, aunque menos energético que el anterior. Como solo se han detectado 2

picos, el resto de filas se rellenan con 0 hasta completar las 5 filas.

En definitiva, almacenar la posición en frecuencia de cada pico es útil para el

posterior procesado y tener en todo momento la localización en frecuencia y tiempo

dentro del espectrograma principal de dichos valores.

5.2.4 Etapa 4: construcción de trayectorias

Como hemos podido apreciar en los espectrogramas de las sibilancias, estas se

caracterizan por contener componentes de alta energía (picos significativos) en rangos de

frecuencia determinados (definidos en el apartado 2.3). Esto quiere decir que a través del

espectrograma, podemos apreciar zonas de alta energía correspondientes a las

frecuencias excitadas cuando aparecen o se superponen sibilancias sobre la respiración

humana, por el hecho de que estas predominan frente a las componentes en frecuencia

generadas por la respiración humana u otros sonidos, como por ejemplo los producidos

por los latidos del corazón.

También hemos podido observar como la disposición en frecuencia y tiempo de

estos picos significativos es continua, es decir, estas componentes más energéticas son

consecutivas entre sí temporalmente hablando (lo cual nos indica que provienen de la

misma fuente) y su valor en frecuencia se mantiene en un rango establecido (no hay

cambios bruscos de frecuencia), cuando estos picos pertenecen a la misma sibilancia.

Por esta razón, la forma espectral de éstas se asemejará a un conjunto de puntos

temporalmente consecutivos y cercanos en frecuencia. Es por ello por lo que nos interesa

formar agrupaciones de picos significativos que cumplan esa cercanía temporal y en

frecuencia, es decir, queremos encontrar trayectorias para su posterior análisis. Todas las

sibilancias son definidas como trayectorias, pero no todas las trayectorias serán definidas

como sibilancias. Para ser consideradas como tal, estas agrupaciones deben tener una

duración temporal de como mínimo 250ms [6] y su frecuencia fundamental debe oscilar

entre los rangos ya establecidos anteriormente (apartado 2.3). En la figura 5.8 podemos

61

apreciar una trayectoria procedente del audio "143Post7R.wav" [19], perteneciente a la

primera sibilancia que encontramos en él:

Figura 5.8 – Trayectoria extraída en el proceso de detección de sibilancias para el audio "143Post7R.wav".

Podemos apreciar en la figura 5.8 como estos picos significativos se disponen en

el espectrograma tal y como se ha indicado, respetando cierta cercanía en frecuencia y

tiempo.

Por lo tanto, una vez obtenidos todos los picos más significativos, sabiendo que

no todos ellos se corresponden con sibilancias (en el caso de que las haya), debemos

formar agrupaciones que cumplan ciertos requisitos en frecuencia y tiempo, las cuales

serán denominadas trayectorias. Estos grupos estarán formados por picos significativos

continuos en tiempo y frecuencia, es decir, cada uno de los picos que conforme este tipo

de agrupaciones tendrán un valor en frecuencia cercano entre sí y además serán

próximos temporalmente hablando. Por ejemplo, un pico cuya frecuencia tenga un valor

de 100 Hz y esté situado a menos de 50 ms de otro con una frecuencia de 300 Hz no

podrán formar parte de la misma trayectoria ya que no son lo suficientemente cercanos

en freuencia. Los criterios que definen la cercanía o lejanía temporal o en frecuencia

serán explicados más adelante basándonos en diferentes aspectos, por lo tanto, aún no

62

nos centraremos en los rangos en frecuencia definidos para las sibilancias ni la duración

mínima de estas, solamente crearemos grupos de picos significativos cercanos entre sí,

siendo considerados posibles sibilancias para su posterior análisis.

El método para obtener trayectorias se basa en el uso de una ventana temporal

de duración t ± 50ms. Como es propuesto en [15] en cuanto a continuidad temporal, se

realizarán agrupaciones de componentes en frecuencia basadas en el efecto Haas, es

decir, consideraremos grupos de picos significativos cuyo valor en frecuencia sean

cercanos, lo cual implica que la separación temporal entre muestra y muestra no exceda

los 50 ms. Por esta razón, se considerarán muestras de distintas trayectorias aquellas

cuya separación temporal exceda los 50 ms. Por otro lado, aquellas muestras separadas

50 ms o menos, aunque no sean consecutivas, se incluirán en la misma agrupación o

como se ha mencionado antes, se incluirán en la misma trayectoria.

Además, consideraremos que las muestras analizadas para la obtención de

trayectorias pertenecerán a una misma agrupación si presentan cierta continuidad en

frecuencia. En este caso, dos o más picos pertenecerán a la misma trayectoria si,

además de respetar cierta continuidad temporal, sus valores en frecuencia no distan más

de 30 Hz entre sí, tal y como se propone en [14], tras varias pruebas con distintos rangos

propuestos.

La ventana propuesta se deslizará a lo largo de la matriz que está compuesta por

los picos más significativos anteriormente obtenidos, esto es, analizaremos

consecutivamente una muestra cuya posición temporal es "t" (instante actual analizado

en el espectrograma y posición central de la ventana), comparada con picos adyacentes

situados en t ± t_ventana, en este caso, "t_ventana" equivale a 50ms. En función de los

requisitos en tiempo y frecuencia definidos anteriormente, empezaremos a conformar las

agrupaciones, teniendo en cuenta la diferencia de frecuencia y separación temporal entre

picos analizados. El método utilizado está basado en el propuesto en [16], un proyecto fin

de grado donde el principal objetivo es el de confeccionar un sistema para la extracción

de singing voice en señales musicales polifónicas monoaurales. En nuestro caso, hemos

seguido la siguiente metodología:

- En primer lugar, buscaremos el pico con más energía de entre los

comprendidos en la ventana con el fin de tomarlo como umbral, es decir,

supondremos que corresponde a una sibilancia (será el valor de referencia con

el que compararemos el resto de picos comprendidos en el frame

seleccionado en el instante actual t). Este pico será denominado como máximo

absoluto (MA).

- Tomaremos los máximos que se encuentren en el instante actual t

(normalmente estos picos se corresponden con la frecuencia dominante de la

63

sibilancia y con picos en frecuencias armónicas a la anterior). Serán

denominados como máximos relativos (MR).

- Compararemos la frecuencia de cada uno de estos máximos relativos con la

frecuencia de la muestra umbral (máximo absoluto). Si la diferencia de

frecuencias entre ambos picos (absoluto y relativo) es menor a 30Hz y la

separación temporal es menor a 50ms (al encontrarse dentro de los límites de

la ventana cumple este requisito) entonces estos picos pertenecerán a un

mismo grupo o trayectoria.

- La ventana se "deslizará" en el tiempo, es decir, tomaremos un frame central

"t" sucesivo al utilizado anteriormente.

- De nuevo, buscaremos la muestra en frecuencia cuya energía sea máxima en

comparación con el resto de muestras comprendidas en la ventana. Es posible

que este valor sea el mismo que el anterior, por lo que el umbral no varía, en

otros casos este pico absoluto no será el mismo, por ello el umbral de

referencia variará. De nuevo compararemos los máximos relativos contenidos

en el frame con el umbral definido y se decidirá si estos pertenecen o no a las

agrupaciones o trayectorias.

En la figura 5.9 se muestra un ejemplo gráfico de la ventana que se utiliza y los

máximos absolutos o relativos que comparamos en ella. Las curvas de color negro

simbolizan la consecución de picos significativos detectados en una sibilancia y en uno

de sus armónicos. Los puntos de color, tal y como se indican, reflejan la existencia de

máximos relativos y absolutos.

Figura 5.9 - Ejemplo de ventana deslizante

64

Por lo tanto, podemos reflejar este método mediante la expresión (30):

𝑀𝑅(𝑡) ∈ 𝑉𝑡𝑟𝑎𝑦𝑒𝑐𝑡𝑜𝑟𝑖𝑎 → 𝑓max _𝑎𝑏𝑠 − ∆𝑓 ≤ 𝑓(𝑡) ≤ 𝑓max _𝑎𝑏𝑠 + ∆𝑓 (30)

Siendo 𝑀𝑅(𝑡) el máximo relativo analizado en el instante actual 𝑡, 𝑓(𝑡) la

frecuencia de dicho máximo, 𝑉𝑡𝑟𝑎𝑦𝑒𝑐𝑡𝑜𝑟𝑖𝑎 el vector que contiene la trayectoria conformada

en ese instante, 𝑓max _𝑎𝑏𝑠 la frecuencia del máximo absoluto que se encuentre en la

ventana en ese instante, ∆𝑓 el incremento en frecuencia utilizado, siendo en este caso de

30 Hz y finalmente, 𝑡 representa el instante actual en el que se encuentra el centro de la

ventana, es decir, el frame actual analizado donde se encuentra el máximo relativo con el

que se realizará la comparación. Como sabemos, el instante en el que se encuentra el

máximo absoluto que utilizaremos como referencia se encontrará en el siguiente rango

definido por la anchura de la ventana deslizante utilizada en la construcción de

trayectorias, reflejado en la expresión (31):

𝑡 − ∆𝑡 ≤ 𝑡max _𝑎𝑏𝑠 ≤ 𝑡 + ∆𝑡 (31)

Siendo 𝑡max _𝑎𝑏𝑠 la localización temporal dentro del espectrograma de la muestra

considerada como umbral o máximo absoluto (MA) y ∆𝑡 la anchura temporal de la

ventana utilizada para la construcción de las traectorias.

Por lo tanto, confirmamos la igualdad (32):

𝑓max _𝑎𝑏𝑠 = 𝑓(𝑡max _𝑎𝑏𝑠) (32)

Tras este proceso de agrupamiento de picos significativos según los criterios

mencionados, obtendremos dos matrices denominados "trayectorias" y

"trayectorias_frecuencia". Ambas tienen la misma estructura compuesta por tantas

columnas como frames existan en el espectrograma original y tantas filas como

trayectorias se hayan construido. Como es de esperar, cada fila contendrá los valores de

energía de los picos de cada trayectoria de forma independiente. Por otro lado,

65

"trayectorias_frecuencia" contendrá el valor de la frecuencia de cada pico contenido en

las trayectorias para poder tener localizado en todo momento dichos picos. A

continuación, en la figura 5.10, se muestra un ejemplo de estas matrices:

Figura 5.10 - Ejemplo de una trayectoria contenida en la matriz "trayectorias" extraída del audio "6025.wav".

Como vemos, este proceso puede generar trayectorias incompletas, es decir,

pueden incluir ceros entre los picos seleccionados obteniendo trayectorias discontinuas.

Esto es debido a que la separación entre picos relativos analizados (en este caso los

situados en el frame 68 y 71) e incluidos en las trayectorias es menor a 50 ms. Si la

separación entre estos máximos relativos hubiera sido mayor (existieran más ceros entre

ambos picos en la matriz) superando los 50 ms, ambos habrían sido asignados a

trayectorias diferentes.

Para obtener una trayectoria completa debemos interpolar dichos valores nulos

usando las muestras cercanas. Supongamos que el algoritmo ha sido capaz de construir

la trayectoria anteriormente mostrada en la figura 5.10. Tras la ejecución del código

encargado de interpolar las trayectorias, obtenemos de forma consecutiva los siguientes

resultados mostrados en las figuras 5.11 y 5.12. Como vemos, la rutina de interpolación

permite completar las trayectorias construidas, añadiendo valores de amplitud y

frecuencia obtenidos a partir de una media aritmética entre los valores ya conocidos.

Dicho cálculo se realizará con el valor del pico anterior al primer valor nulo encontrado

(en este caso, siguiendo el ejemplo de la figura 5.10, nos referimos al pico situado en la

columna 68) y el siguiente pico (situado en la columna 71). En el caso expuesto, existen

dos valores nulos entre ambos picos, por lo tanto, la media se realizará entre el pico

significativo anterior al primer nulo y el pico posterior más próximo. En el siguiente paso,

existirá solo un valor nulo entre dos picos cuyo valor medio será introducido en el frame

con valor 0. En ambas figuras, 5.11 y 5.12 el valor rodeado es el resultado de la

interpolación y por lo tanto, su valor anterior era 0.

66

Figura 5.11 - Ejemplo de interpolación 1

Figura 5.12 - Ejemplo de interpolación 2

Es el mecanismo de construcción de trayectorias el que se encarga de almacenar

cada trayectoria construida en cada una de las filas de la matriz de trayectorias, por lo

tanto, en cada una de estas fila solo habrá almacenada una trayectoria, incompleta o no,

por lo tanto, el mecanismo de interpolación no necesita diferenciar entre fragmentos de

una misma sibilancia separados por ceros o dos fragmentos de sibilancias distintas

separadas por ceros ya que en una misma fila no habrá partes de trayectorias diferentes.

El proceso de interpolación sigue el siguiente criterio:

Si 𝑓(𝑡) = 0 ,𝑀𝑅(𝑡) ∈ 𝑉𝑡𝑟𝑎𝑦𝑒𝑐𝑡𝑜𝑟𝑖𝑎 , entonces el nuevo valor de 𝑓(𝑡) viene dado por

la expresión (33):

𝑓(𝑡) =𝑓(𝑡 − 1) + 𝑓(𝑡𝑓>0)

2 𝑡𝑓>0 ∈ ℕ

(33)

Donde 𝑡𝑓>0 es un número natural correspondiente al frame posterior a 𝑡 cuyo valor

en frecuencia o en amplitud es mayor que 0. Es considerado el frame que conforma uno

de los extremos del fragmento de trayectoria incompleto consecutivo a 𝑡. El otro extremo

corresponde a 𝑡 − 1 dentro de la matriz de trayectorias. Por lo tanto, la expresión 33

refleja la media aritmética realizada entre los extremos de la discontinuidad en la

trayectoria a interpolar. El resultado obtenido será asignado a 𝑓(𝑡).

Con este método obtenemos finalmente trayectorias completas listas para ser

analizadas en el siguiente bloque de nuestro software. Mediante el cálculo de la duración

67

temporal de las agrupaciones y la frecuencia media de los picos que componen las

trayectorias, se decidirá si éstas son sibilancias o no según los criterios definidos en

apartados anteriores. En las figuras 5.13 y 5.14 podemos observar la diferencia existente

entre las trayectorias sin interpolar y las interpoladas, observando una de ellas antes y

después de ser completada. Ambos ejemplos han sido extraídos de la señal de audio

"6025.wav".

Figura 5.13 - Zoom sobre una trayectoria sin interpolar para "6025.wav"

68

Figura 5.14 - Zoom sobre una trayectoria interpolada para "6025.wav"

En las figuras 5.15 y 5.16 se mostrará el mismo proceso de interpolación pero

esta vez aplicado al segundo audio utilizado para mostrar la implementación de cada una

de los bloques del software, "Wheeze-Bronchiolitis2.wav" con una ventana de 512

muestras.

69

Figura 5.15 - Zoom sobre una trayectoria sin interpolar para "Wheeze-Bronchiolitis2.wav"

Figura 5.16 - Zoom sobre una trayectoria interpolada para "Wheeze-Bronchiolitis2.wav"

70

5.2.5 Etapa 5: clustering de sibilancias

Como ya se definió anteriormente, una sibilancia debe tener una duración mínima

temporal de 250 ms [6] y ha de tener una frecuencia fundamental comprendida entre los

125 Hz y 375 Hz para el caso de un niño [5] o superior a 400 Hz si el paciente es un

adulto [6]. Es en esta parte del algoritmo donde se comprueba que dichos parámetros

correspondientes a las trayectorias verifican estas características. Para ello,

estudiaremos una por una cada agrupación contenida en las matrices ("trayectorias" y

"trayectorias_frecuencia").

En primer lugar, tomaremos cada una de las filas de estas matrices y buscaremos

los valores superiores a 0, los cuales se corresponderán con los picos originales y los

interpolados mediante el método anteriormente descrito. Tras esto, calcularemos el

número de picos que existen por trayectoria, es decir, el número de frames ocupados por

picos para así obtener el valor de la duración temporal de la trayectoria estudiada.

Seguidamente, calcularemos una media ponderada entre los valores en frecuencia de

todos los picos contenidos en esa misma trayectoria, ayudándonos de los valores

almacenados en la matriz "trayectorias_frecuencia". Una vez obtenido el valor medio en

frecuencia de los picos que componen la agrupación, procedemos a comparar tanto la

duración temporal como dicha media con la duración mínima de una trayectoria y los

rangos en frecuencia establecidos. Toda trayectoria que no cumpla los requisitos, será

eliminada. El usuario previamente ha podido seleccionar el tipo de paciente al que

corresponde el audio para poder elegir un rango de frecuencias u otro con el que

comparar estos parámetros. Un ejemplo de las trayectorias que prevalecen tras la

selección es mostrado en la figura 5.17, para el fichero "6025.wav". Por otro lado, en la

figura 5.18, podemos apreciar las trayectorias que no son descartadas, consideradas

sibilancias para el audio "Wheeze-Bronchiolitis2.wav".

71

Figura 5.17 - Zoom sobre las trayectorias consideradas sibilancias para "6025.wav".

Figura 5.18 - Zoom sobre las trayectorias consideradas sibilancias para "Wheeze-Bronchiolitis2.wav".

Podemos apreciar como un conjunto de trayectorias ha sido eliminado mediante el

algoritmo de selección, manteniendo en dos nuevas matrices ("sibilancias" y

72

"sibilancias_frecuencia") los valores de energía y frecuencia de las sibilancias o

trayectorias que han cumplido las características indicadas. Dichas matrices tienen la

misma estructura que la presentada anteriormente en "trayectorias" y

"trayectorias_frecuencia", es decir, están compuestas por tantas columnas como frames

haya y tantas filas como sibilancias se hayan detectado.

Hasta este punto, el algoritmo ha cumplido la función de detectar o no sibilancias

en el audio analizado. En el caso de que existan sibilancias, el algoritmo procederá a

comprobar de que tipo son, monofónicas o polifónicas, mediante el siguiente bloque:

detector de armónicos.

5.2.5.1 Armonicidad

Como ya se ha mencionado, esta sección del código se encarga de obtener el

número de armónicos que existen en las sibilancias detectadas, de nuevo, en el caso de

que existan en el audio. Si el algoritmo no detecta armónicos, entonces se considerará

que las sibilancias son monofónicas, siendo el caso contrario la detección de armónicos y

catalogando las sibilancias como polifónicas.

Consideramos que un sonido es armónico si está formado por la superposición o

suma de ondas sinusoidales con distintas frecuencias, todas ellas múltiplo de la

frecuencia fundamental. Estas ondas son denominadas armónicos. Por esta razón, un

sonido armónico, al ser representado en un espectrograma, mostrará componentes en

frecuencias excitadas múltiplo o casi múltiplo de la frecuencia fundamental (f, 2f, 3f, etc.

siendo f la frecuencia fundamental de la onda sonora) [26]. A continuación, en la figura

5.19 se muestra el análisis espectral de una onda armónica:

Figura 5.19 – Espectro de una onda cuadrada de amplitud 1 dB y frecuencia 100 Hz con armónicos impares [26].

Como podemos observar, la frecuencia más baja de entre las que se compone la

onda es la denominada como fundamental, a partir de la cual surgen otras frecuencias

múltiplos o casi múltiplos enteros. En el caso expuesto, la onda estará compuesta por la

frecuencia fundamental situada en 100 Hz y por componentes en frecuencias múltiplos

73

enteros impares a esta, en este caso 3f, 5f y 7f, siendo f = 100Hz. Aun así, en la mayoría

de los sonidos los armónicos no siempre se encuentran en frecuencias múltiplos exactos

de la fundamental, sino que existe una ligera desviación con respecto a las componentes

en frecuencia que conforman los armónicos de un sonido.

Si nos centramos en el funcionamiento de nuestro módulo detector de armónicos,

en el caso de que existan sibilancias, el algoritmo analizará solo una de ellas ya que se

considera que todas provienen de la misma fuente y por tanto serán del mismo tipo. El

algoritmo tomará un frame central que contenga información espectral de la primera

sibilancia y usará la función "findpeaks" de nuevo sobre ese único frame. Como podemos

observar en la figura 5.20, los armónicos contienen picos significativos dentro de un

frame determinado. Estos picos se encontrarán en la frecuencia fundamental y

aparecerán otros picos en frecuencias múltiplo de la frecuencia fundamental.

Figura 5.20 - Armónicos de una sibilancia

Una vez detectados los picos más significativos de un frame que sea parte de una

sibilancia, compararemos la frecuencia de los primeros obtenidos (es importante que en

la función "findpeaks" especifiquemos que nos devuelva el valor de los picos de forma

descendente mediante "SORTSTR"), es decir, consideraremos que de entre los picos

más energéticos, aquel cuya frecuencia sea menor al resto corresponderá a la frecuencia

fundamental de la sibilancia mientras que los restantes se corresponderán con los

armónicos que componen el espectro del sonido. Por ejemplo, teniendo en cuenta que

las sibilancias obtenidas son polifónicas, si comparamos la frecuencia del segundo pico

74

obtenido de forma descendente y coincide con el doble de la frecuencia fundamental

(frecuencia del primer pico) con un margen del 20% (como ya se ha mencionado, un

sonido no suele presentar armónicos múltiplos exactos de la frecuencia fundamental, por

lo que se ha decidido aplicar este margen tras realizar varias pruebas), entonces

consideraremos que esta sibilancia al menos tiene un armónico. De forma sucesiva, si

obtenemos la frecuencia del tercer pico obtenido y coincide con el triple de la frecuencia

fundamental más o menos el margen establecido, entonces el número de armónicos

detectado se incrementará en uno. De esta manera, analizaremos la frecuencia de todos

los picos obtenidos hasta encontrar aquellos que coincidan con la frecuencia

correspondiente a los armónicos, si los hay.

Finalmente, tras el conteo de armónicos detectados, el algoritmo decidirá si las

sibilancias detectadas son consideradas polifónicas o monofónicas. El usuario podrá

observar a partir de la interfaz, el número de sibilancias detectadas, el tipo al que

pertenecen y el número de armónicos que contengan las sibilancias, en el caso de que

estas sean polifónicas. Además, el usuario podrá elegir que ver en el apartado de

representación visual, desde el espectrograma original de la señal de audio, hasta una

representación de los picos que forman las sibilancias, pasando por el proceso de

creación de trayectorias y su posterior interpolación.

75

6 EVALUACIÓN

En este apartado, nos dispondremos a comprobar el comportamiento de nuestro

software bajo diferentes circunstancias y muestras de audio recogidas de diferentes

fuentes. Para ello, dividiremos esta sección en dos fases: optimización y testeo. Gracias

al uso de diferentes métricas que serán definidas más adelante, podremos evaluar el

comportamiento frente a diferentes configuraciones de nuestro programa detector de

sibilancias, es decir, en función de los resultados obtenidos, tendremos en cuenta un

conjunto de métricas con las que obtendremos ciertas conclusiones acerca de la

eficiencia del software.

En primer lugar, para llevar a cabo esta fase de pruebas, nuestro software

principal será sometido a una fase de optimización cuya fin es el de realizar múltiples

iteraciones utilizando distintas combinaciones de parámetros de entrada que harán que el

detector de sibilancias desempeñe su función de manera más o menos adecuada. Tras

estas pruebas podremos llegar a la conclusión de cuál es la combinación óptima de

parámetros de entrada para nuestro software, es decir, que instrucciones para su

ejecución sacan el máximo rendimiento para obtener los resultados más precisos.

Una vez realizada la fase de optimización, se llevará a cabo una fase de testeo,

en este caso dividida en dos partes diferentes (testeo I y testeo II). El propósito de esta

sección de la evaluación es el de observar el comportamiento de nuestro software en

situaciones aleatorias o al menos pseudoaleatorias lo más similares posibles a casos de

detección de sibilancias en pacientes reales.

En cada una de las fases de evaluación se utilizará una base de datos de audio

independiente para cada una de las pruebas. Además, utilizaremos métricas adecuadas

para la cuantificación de resultados una vez realizada cada una de las etapas de

evaluación.

6.1 Base de datos.

En primer lugar, insistiremos en la dificultad que ha supuesto el hecho de reunir

una cantidad determinada de muestras de audios con sibilancias para la realización de

este apartado. La gran mayoría de documentos consultados realizan sus pruebas

mediante librerías o bases de datos de audio de pago o privadas, donde se encuentran

muestras grabadas en buenas condiciones e incluso filtradas y tratadas digitalmente para

eliminar ruido de respiración y latidos del corazón, según indican en su desarrollo. Por

otra parte, otras investigaciones han sido llevadas a cabo mediante la grabación de

audios propios, seleccionando un grupo de pacientes de diversas edades y realizando las

grabaciones pertinentes mediante determinados aparatos captadores de sonido. En estos

76

casos, los equipos de investigación no suelen ofrecer sus propias bases de datos de

audio y en el caso de que sea así, se ofrecen a cambio de cierta cantidad de dinero.

Existen sitios webs como [17], [18], [19] y [20] donde se ofrecen una reducida

cantidad de muestras de audio con sibilancias para la demostración de diferentes

anomalías pulmonares que un médico puede encontrarse al auscultar un paciente.

Nosotros hemos tomado dichas muestras de carácter demostrativo para ver el

comportamiento de nuestro software en diferentes situaciones y audios. En otras páginas

webs no es posible realizar la descarga del audio, limitándose a la reproducción de este

desde la propia página. En diferentes sitios webs, las muestras de audio que se ofrecen

contienen gran cantidad de ruido de fondo y de baja frecuencia (debido a que no han sido

filtrados) y por lo tanto, supone la aparición de muchos espurios a la hora de obtener

picos significativos en el proceso de detección de sibilancias.

Todos los audios utilizados en las siguientes bases de datos han sido

muestreadas a 8000 Hz.

6.1.1 Base de datos de optimización

Debido a la problemática expuesta al inicio de esta sección, se ha decidido

realizar la fase de optimización con 4 muestras de audios que en total contienen hasta 15

sibilancias (tres audios contienen 4 sibilancias y un cuarto contiene solo 3). A

continuación, se indica el nombre de cada uno de los audios utilizados, su duración y el

número de sibilancias que contienen:

- "6025.wav" [18]: duración de 10.15 s, contiene 4 sibilancias.

- "Wheeze-Bronchiolitis2.wav" [17]: duración de 5 s, contiene 4 sibilancias.

- "144Post3L.wav" [19]: duración de 10.76 s, contiene 4 sibilancias.

- "143Post7R.wav" [19]: duración de 7.81 s, contiene 3 sibilancias.

Cada una de las sibilancias contenidas en las respiraciones tiene una duración

aproximada de 1 s.

6.1.2 Base de datos de testeo I

Para la primera fase de testeo se ha decidido combinar de forma pseudoaleatoria

cada una de las sibilancias utilizadas en la fase de optimización con un audio que

contiene una respiración vesicular normal. El audio que contiene dicha respiración tiene

las siguientes características.

- "respiracion.wav" [18]: procedente de una respiración vesicular producida por

un paciente sano, sin sonidos adventicios añadidos, con una duración de 8.1 s

aproximadamente. Contiene tres inspiraciones y tres espiraciones.

77

El proceso de creación de la base de datos para la primera fase de testeo es la

siguiente:

- En primer lugar, procedemos a extraer cada una de las sibilancias contenidas

en los audios expuestos en la sección 6.1.1 cuya duración aproximada es de 1

segundo para cada una. En total, obtenemos 15 archivos .wav que contienen

cada una de estas 15 sibilancias por separado. Serán nombradas como

"sib1.wav","sib2.wav", etc. hasta "sib15.wav".

- La mezcla con la respiración normal se realizará de forma pseudoaleatoria, es

decir, mediante un proceso aleatorio llevado a cabo en Matlab (uso del

comando "rand") se elegirá una de las tres inspiraciones dentro del audio

"respiracion.wav" en la que se mezclará una de las sibilancias de tal modo que

quede adherida a la respiración sana. De este modo, conseguiremos crear una

respiración con un sonido adventicio superpuesto a una de las inspiraciones.

- El nivel de señal con el que se realizará la mezcla también es aleatorio,

existiendo tres posibilidades: diferencia de potencia entre sibilancia y señal de

respiración de -5, 0 o +5 dB. De este modo, la sibilancia puede quedar

enmascarada por la respiración vesicular en mayor o menor medida según el

caso que se lleve a cabo de forma aleatoria.

- Este proceso generará 15 archivos de audio de duración 8.1 s

correspondientes a la mezcla pseudoaleatoria llevada a cabo con cada una de

las 15 sibilancias que han sido posible extraer. Cada uno de estos audios,

como se ha indicado, contendrá una sibilancia situada de forma aleatoria en

una de las tres inspiraciones contenidos en el audio de respiración vesicular

con una diferencia de señal aleatoria comprendida entre los valores indicados

en el guion anterior. Cada uno de los audios generados en el proceso se

denominarán "muestra1.wav", "muestra2.wav", etc. hasta "muestra15.wav".

En las siguientes figuras (6.1, 6.2 y 6.3) podemos observar el proceso de mezcla

de sibilancias sobre el audio "respiración.wav", el cual contiene las muestras de audio

que componen la respiración vesicular normal sobre la que se construirán las muestras

pseudoaleatorias.

78

Figura 6.1 – Sibilancia número dos (sib2.wav) que se extrae del audio "6025.wav"

Figura 6.2 – Espectrograma de la respiración vesicular normal "respiracion.wav".

Las inspiraciones y espiraciones del audio "respiración.wav" se encuentran

situadas entre los segundos 0.5 y 2, 3 y 4.5, 6 y 7.5 aproximadamente.

Time (s)

Fre

quency (

Hz)

Espectrograma

0 1 2 3 4 5 6 7 80

500

1000

1500

2000

2500

3000

3500

4000

79

Figura 6.3 – Resultado de la suma de "sib2.wav" sobre la segunda inspiración de "respiracion.wav" con una diferencia de potencia de 5dB.

El resultado obtenido en este ejemplo se ha denominado "muestra2.wav" ya que

contiene la suma sobre la respiración normal de la sibilancia número dos, perteneciente a

"6025.wav".

6.1.3 Base de datos de testeo II

Como hemos podido observar, en la fase anterior solo se generan 15 muestras de

audio pseudoaleatorias con las que poder realizar la primera fase de testeo. El método

utilizado es poco robusto ya que no genera una gran cantidad de casos con los que poder

obtener datos fiables en nuestra fase de pruebas, por lo tanto, se ha decidido proceder a

crear una nueva base de datos de audio que genere hasta 165 muestras de audio con las

que poder llevar a cabo las pruebas pertinentes.

La base de datos consta de los siguientes archivos:

- "sib1.wav","sib2.wav", etc. hasta "sib15.wav" los cuales contienen cada una de

las 15 sibilancias también utilizadas en la fase de testeo I. Proceden de los

audios indicados en el apartado 6.1.1 y de nuevo la duración aproximada de

cada audio es de 1 s.

- "respiracion1.wav", "respiración2.wav", etc. hasta "respiración11.wav": cada

uno de estos audios tiene una duración aproximada de 2 segundos y se

80

corresponde con cada una de las inspiraciones contenidas en los siguientes

audios, obtenidas a partir de [17], [18] y [20]:

o "Coarse crackles.wav": contiene 5 inspiraciones con crepitantes con

una duración de 12.1 s

o "respiracion.wav": audio utilizado en la base de datos de testeo I,

contiene 3 inspiraciones y tiene una duración de 8.1 s.

o "wisppect.wav": contiene 3 inspiraciones y tiene una duración de 6.2 s.

En esta nueva base de datos más robusta se generarán hasta 165 muestras con

las que llevar a cabo la segunda fase de testeo. El proceso de creación de estas

muestras es muy similar al utilizado anteriormente:

- En primer lugar, separaremos cada una de las 11 inspiraciones contenidas en

los audios de respiración mencionados anteriormente, generando los archivos

"respiración1.wav" hasta "respiración5.wav" mediante las 5 inspiraciones de

"Coarse crackles.wav", "respiración6.wav" hasta "respiración8.wav" mediante

las 3 inspiraciones contenidas en "respiracion.wav" y "respiración9.wav" hasta

"respiración11.wav" a partir de las 3 inspiraciones generadas en

"wisppect.wav".

- Cada una de las muestras de respiración obtenidas se mezclará con todas y

cada una de las 15 sibilancias extraídas en la fase de testeo I, utilizando

diferentes niveles de señal entre sibilancia y respiración (proceso

pseudoaleatorio). Lo cual quiere decir que el audio "respiración1.wav"

correspondiente a una inspiración será mezclado en 15 ocasiones distintas.

De forma similar, las 10 inspiraciones restantes serán mezcladas con las 15

sibilancias existentes.

- Finalmente se obtienen 165 (11 x 15) casos de respiración con sibilancias con

el que poder llevar a cabo el proceso de testeo II.

Además de contener 150 casos adicionales con respecto a la de testeo I, esta

base de datos también contempla ciertos casos con sonidos interferentes, como son los

crepitantes contenidos en las inspiraciones de "Coarse crackles.wav". Es por ello que

existirán casos en los que las sibilancias serán mezcladas con otros sonidos adventicios,

haciendo aún más robusta esta base de datos.

81

6.2 Métricas

La evaluación de nuestro software se realizará a dos niveles: a nivel de frame y a

nivel de evento. En primer lugar, el estudio a nivel de frame conlleva una evaluación de

resultados centrada en cada uno de los frames que componen las sibilancias detectadas,

es decir, se estudiará la presencia o ausencia de cada uno de los picos significativos que

componen las sibilancias. En cambio, la evaluación a nivel de evento estudiará la

presencia o no de sibilancias completas, es decir, se evaluarán los frames que contengan

o no sibilancias pero esta vez teniéndolos en cuenta como un conjunto o evento. Mientras

que en la evaluación a nivel de frame nos limitaremos a observar de forma individual

cada uno de los frames que conforman las sibilancias, a nivel de evento nos centraremos

en la sibilancia como conjunto de frames teniendo en cuenta parámetros como el instante

de inicio y final de las sibilancias dentro del espectrograma.

En primer lugar, para el análisis frame a frame, debemos definir tres valores con

los que trabajaremos y obtendremos dichas métricas:

True Positive (TP): se obtendrá cuando nuestro software determine que un

frame contiene un valor perteneciente a una sibilancia y realmente sea así.

False Positive (FP): si el detector de sibilancias determina que cierto frame

es parte de una sibilancia pero realmente no lo es, obtendremos un falso

positivo.

False Negative (FN): cuando nuestro software muestra un frame en el cual

no se ha encontrado valor alguno que pertenezca a una sibilancia pero en

realidad sí existe, se obtiene un falso negativo.

En cada una de las evaluaciones en las que se pondrá a prueba el software, se

recogerá la cantidad de TP, FP y FN en total para cada uno de los resultados. A partir de

estos valores tomados, se calcularán las siguientes métricas extraídas de la tesis doctoral

[25]:

Exhaustividad: viene dado por el cociente entre el número de frames

correctamente detectados (TP) y la suma entre falsos negativos y

verdaderos positivos. Se muestra en la expresión (34).

82

𝐸𝑥ℎ𝑎𝑢𝑠𝑡𝑖𝑣𝑖𝑑𝑎𝑑 =𝑇𝑃

𝑇𝑃 + 𝐹𝑁

(34)

Exactitud: se define como el cociente entre frames correctamente

detectados y la suma entre TP y FP. Queda reflejada en la expresión (35).

𝐸𝑥𝑎𝑐𝑡𝑖𝑡𝑢𝑑 =𝑇𝑃

𝑇𝑃 + 𝐹𝑃

(35)

Precisión: cociente entre el número de frames bien detectados y la suma

de todos los parámetros anteriormente definidos. Se muestra en la

ecuación (36).

𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 =𝑇𝑃

𝑇𝑃 + 𝐹𝑃 + 𝐹𝑁

(36)

A nivel de evento o sibilancia, usaremos los siguientes parámetros, también

extraídos de [25]:

Error de substitución: indica el número de sibilancias detectadas

erróneamente. Este error sucede cuando se detecta una sibilancia pero

sus límites de inicio y final no coinciden de forma aproximada con los

reales.

Error de pérdidas: indica el número de sibilancias que no han sido

detectadas.

Error de falsa alarma: indica el número de sibilancias detectadas que

realmente no existen.

Puede existir confusión entre el error de substitución o el de falsa alarma, por lo

que destacaremos la principal característica que los diferencia de forma clara: mientras

83

que un error de substitución refleja la detección de una sibilancia que realmente existe

aunque los límites de inicio y final de esta no coinciden con los de la sibilancia a detectar,

el error de falsa alarma se produce cuando nuestro software detecta un evento o

sibilancia donde realmente no lo hay, por lo tanto, se asemeja a un falso positivo a nivel

de sibilancia. Es por esto por lo que un error de falsa alarma puede ser más grave que

uno de substitución.

6.3 Fase de optimización

Para llevar a cabo esta fase de pruebas, nuestra función principal, la cual contiene

las líneas de código de nuestro software, será ejecutada hasta 81 veces en una serie de

bucles anidados con el fin de variar ciertos parámetros en la configuración de entrada del

software principal. En cada una de las 81 ejecuciones, se recogerán los datos de salida

obtenidos, a partir de los cuales se obtendrán un conjunto de métricas con las que

podremos definir el comportamiento de del programa en cada una de esas 81

situaciones. Los parámetros que varían en cada ejecución son los siguientes:

Tamaño de ventana: las pruebas se realizarán mediante el cálculo de las

STFT con ventanas de 512, 1024 y 2048 muestras [5]. Como sabemos, a

menor tamaño de ventana, más resolución temporal (obtendremos más

frames), pero disminuirá la resolución en frecuencia.

Lejanía en frecuencia: este parámetro está relacionado con la construcción

de trayectorias, por lo que se considerará que dos picos cercanos en

tiempo pertenecerán a la misma trayectoria si su lejanía en frecuencia no

supera los ±30, ±50 o ±100 Hz de margen según el caso que se esté

evaluando. Estos valores han sido extraídos de [14], donde se menciona

que un rango de ±30 Hz confiere mejores resultados que el resto de

márgenes.

Lejanía en tiempo: de nuevo, este parámetro también está directamente

relacionado con la construcción de trayectorias, por lo tanto, dos picos

significativos cercanos en frecuencia pertenecerán a la misma trayectoria

si su lejanía en tiempo no supera los 30, 50 o 100 ms [15].

Duración mínima de una sibilancia: como se ha podido ver en el estado del

arte (apartado 4), muchos estudios definen de forma distinta la duración

84

mínima de una sibilancia, por lo tanto, comprobaremos los resultados en

diferentes muestras de audio con diferentes valores mínimos de duración

temporal de sibilancias. Estos valores se corresponden con 80, 100 y 250

ms [6].

Vemos que existen cuatro parámetros que variarán a lo largo de las pruebas

realizadas. Cada uno de ellos puede tomar 3 valores distintos, por lo tanto, como se ha

mencionado antes, existirán 34 posibles combinaciones de los parámetros de entrada (81

en total) en las cueles se analizará el resultado obtenido y se cuantificará mediante un

conjunto de métricas definidas en el apartado 6.2.

Para llevar a cabo esta fase, usaremos la función "optimización.m" y

"optimización_frame.m" para realizar el estudio tanto a nivel de evento como a nivel de

frame, respectivamente.

Como ya se ha mencionado, nuestro programa "principal.m" será sometido a un

conjunto de bucles anidados donde se introducirán diferentes valores de entrada para un

conjunto de 4 parámetros nombrados al inicio de este apartado. En cada iteración, las

sibilancias detectadas se comprobarán tanto a nivel de frame como a nivel de evento en

busca de parámetros como TP, FP, FN, etc. A partir de estos parámetros obtenidos con

cada una de las combinaciones de datos de entrada posibles, se decidirá cuál es la

configuración que mejores resultados arroja en nuestro programa principal.

6.3.1 Optimización a nivel de frame

Este proceso se lleva a cabo comprobando cada uno de los frames del

espectrograma. En primer lugar, observando la representación en frecuencia y tiempo de

la señal original con sibilancias, indicaremos los frames de inicio y final de cada una de

las sibilancias contenidas con el fin de crear un vector que contenga unos y ceros. Este

vector tendrá una fila y tantas columnas como frames contenga el espectrograma,

indicando con un 1 aquellos frames que contengan un pico de sibilancia, por otro lado,

con un 0 se indicará aquel frame que no contenga un pico significativo perteneciente a

una sibilancia. Como sabemos, el número total de frames contenidos en un

espectrograma depende de forma directa con el número de muestras que abarque la

ventana utilizada, por lo tanto, debemos indicar el inicio y final de cada sibilancia para

cada una de las ventanas utilizadas, en este caso 3. El vector creado se denomina

"patrón" ya que contiene la localización verdadera de cada una de las sibilancias que hay

en el audio y sirve para realizar la comprobación con los resultados obtenidos en cada

iteración sobre el programa principal.

85

A continuación, comienzan a actuar cada uno de los bucles anidados que variarán

los parámetros de entrada del programa principal. En cada iteración, obtendremos un

número de sibilancias y como consecuencia, una matriz que las contiene. Sus

dimensiones dependen del número de sibilancias detectadas, es decir, existirán tantas

filas como sibilancias se detecten y tantas columnas como frames tenga el

espectrograma. Seguidamente, una vez detectadas, se normalizará esta matriz para

obtener unos y ceros (en este caso, en vez de ceros obtendremos NaN o "Not a

Number") en los frames donde supuestamente existan o no picos de sibilancias, esto nos

permitirá pasar a la siguiente fase, donde se comprobará cada uno de los frames de esta

matriz con los del patrón anteriormente mencionado. Si a la hora de comprobar un frame

se observa que realmente existe una sibilancia y el programa devuelve dicho frame

marcado con un uno, entonces obtendremos un TP o verdadero positivo. Si la salida del

programa principal muestra un uno en un frame determinado donde el vector patrón

contiene un 0, se obtendrá un FP o falso positivo. Por último, si en un frame determinado,

el patrón indica que existe un pico de una sibilancia, mediante un uno, pero nuestro

programa devuelve un 0 en dicho frame, diremos que existe un FN o falso negativo. A

continuación se expone un ejemplo sencillo reflejado mediante las figuras 6.4 y 6.5:

Figura 6.4 - Fragmento del vector usado como patrón para una ventana de 512 muestras

Figura 6.5 - Fragmento del vector de sibilancias devuelto por el programa principal para una ventana de 512 muestras

En dicho ejemplo observamos como en los frames 17, 18, 19 y 25 existen picos

de sibilancias según el patrón, pero nuestro programa no ha sido capaz de detectarlos,

por lo tanto, obtendremos 4 falsos negativos.

Tras el conteo del número de TP, FN y FP existentes, se procederá a realizar el

cálculo de las métricas indicadas anteriormente para obtener una descripción en forma de

porcentajes del comportamiento del programa en la iteración actual. De nuevo, se

reiniciarán las variables para continuar con el siguiente paso en los bucles anidados,

sometiendo al programa principal a otra combinación de parámetros de entrada con el

86

que poder realizar de nuevo la comparación con los patrones indicados al inicio. En cada

una de las iteraciones, los datos obtenidos se almacenarán en una matriz que contenga

los siguientes parámetros con el siguiente orden:

Fila 1: muestras que contiene la ventana.

Fila 2: rango en frecuencia para la obtención de trayectorias.

Fila 3: rango en tiempo para la obtención de trayectorias.

Fila 4: duración mínima de una sibilancia.

Fila 5: verdaderos positivos.

Fila 6: falsos positivos.

Fila 7: falsos negativos.

Fila 8: exhaustividad.

Fila 9: exactitud.

Fila 10: precisión.

Fila 11: número de sibilancias detectadas.

Como vemos, las 4 primeras filas indican los parámetros de entrada en cada

iteración, mientras que el resto muestra resultados obtenidos a partir de estos cuatro

parámetros. Hay que remarcar el hecho de que tanto las filas 8, 9 y 10 se expresan con

valores comprendidos entre 0 y 1, al multiplicarlos por 100, obtenemos el tanto por ciento

equivalente. La matriz tendrá tantas columnas como iteraciones se hayan realizado, en

este caso 81. A continuación, en la figura 6.6, se muestra un ejemplo de esta matriz de

datos:

Figura 6.6 - Ejemplo de la tabla de datos tras la fase de optimización a nivel de frame.

Estas tablas son almacenadas en un fichero .mat cuyo nombre se indica de la

siguiente forma: "datos_audio_NombreArchivoAudio_frame.mat", como por ejemplo

87

"datos_audio_6025.mat" para las pruebas realizadas con "6025.wav". Cada uno de los 4

audios estudiados devolverá un archivo con la misma estructura y con un nombre con la

estructura indicada. Si se cargan estos archivos en Matlab, podremos observar cada una

de las tablas obtenidas en la fase de optimización.

Es ahora cuando debemos observar los resultados obtenidos y tomar las

siguientes conclusiones:

Las pruebas realizadas con una ventana de 512 muestras arrojan resultados

significativamente peores con respecto al resto de pruebas realizadas con otras

ventanas. Al existir una amplia resolución temporal, es crucial elegir de forma correcta el

resto de parámetros para que la detección sea lo más exacta posible. Un exceso de

resolución conlleva a una mayor probabilidad de detectar mal las sibilancias, o no hacerlo

de la forma más certera posible. Observamos un porcentaje de precisión bajo con

respecto al resto de ventanas, lo cual nos indica que la cantidad de falsos positivos en

este caso es alta. De nuevo, esto se debe a un exceso de resolución temporal por lo

tanto, un rango en tiempo excesivamente alto, como por ejemplo 100 ms, permite abarcar

más muestras a la hora de construir trayectorias y por lo tanto la tasa de falsos positivos

aumenta. También observamos que si la duración mínima para definir una sibilancia es

pequeño, como por ejemplo 80 ms, existe la posibilidad de que más trayectorias superen

este umbral y sean consideradas sibilancias sin serlo, por ello, de nuevo la tasa de falsos

positivos aumenta. Por otro lado, podemos observar como un exceso en la amplitud del

rango en frecuencia obtenido hace crecer de forma significativa el número de falsos

negativos, esto es debido a que, a la hora de construir las trayectorias, las muestras

incluidas en cada agrupación pueden tener valores en frecuencia muy distantes entre sí,

pudiendo abarcar picos que excedan o no alcancen los niveles mínimos y máximos,

aumentando o disminuyendo la frecuencia media de la trayectoria, obligando a

descartarlas cuando no debería ser así.

Por el contrario, el uso de una ventana de 2048 muestras implica una menor

resolución temporal, lo cual nos presenta un problema totalmente opuesto al anterior,

pero con consecuencias similares. La aparición de un alto número de falsos positivos

debido a que la construcción de trayectorias no es eficiente y se realiza con poca

precisión, abarcando demasiadas muestras que no pertenecen a sibilancias. También

observamos que existen pocas diferencias en los resultados obtenidos al variar los

parámetros de resolución en tiempo y duración mínima. La poca resolución temporal

implica muy poca variación en el comportamiento del programa al modificar estos

parámetros.

Por último, llegamos a la conclusión de que una ventana que abarque 1024

muestras puede ajustarse mejor a este propósito, obteniendo por lo general porcentajes

88

más altos en los cálculos de las métricas. Un exceso o defecto de resolución temporal y

en frecuencia ofrecidos por las ventanas de 512 y 2048 supone, por lo tanto, un bajo

rendimiento en el funcionamiento de nuestro detector de sibilancias aportando un exceso

de falsos negativos y falsos positivos indeseados en la obtención de trayectorias.

Centrándonos en el resto de parámetros:

Rango en frecuencia para la obtención de trayectorias: para una ventana

de 1024 muestras interesa ser introducido en los parámetros de entrada de

nuestro software con un valor bajo debido a que un exceso de amplitud a

la hora de abarcar muestras con valores en frecuencia muy distantes

puede ocasionar un aumento o disminución excesiva de la frecuencia

media de la trayectoria construida, haciendo que esta quede descartada

por no alcanzar o sobrepasar los límites establecidos para ser

consideradas sibilancias.

Rango en tiempo para la obtención de trayectorias: por los resultados

obtenidos, interesa un valor intermedio a los propuestos, un exceso en la

amplitud de este parámetro puede ocasionar la construcción de

trayectorias excesivamente largas temporalmente hablando que abarquen

picos no pertenecientes a sibilancias, obteniendo un exceso de falsos

positivos. Por otro lado, una amplitud pequeña asignada a este valor

puede ocasionar el efecto contrario, la aparición de trayectorias

excesivamente pequeñas que no superen el umbral mínimo de duración

temporal. Puede ocurrir el hecho de que varias trayectorias de corta

duración sean desechadas por no superar el umbral temporal establecido,

aunque realmente, en conjunto, sean componentes de una sibilancia real,

es decir, puede darse el caso de que una sibilancia quede segmentada en

pequeñas trayectorias y no sea detectada. Por lo tanto, un valor pequeño

asignado al rango en tiempo puede ocasionar un aumento en el número de

falsos negativos.

Duración mínima de sibilancia: observamos que para este parámetro,

interesa un valor alto, es decir, debemos definir un umbral temporal alto

con el fin de evitar la aparición de un excesivo número de falsos positivos

ya que si interponemos un pequeño umbral, la probabilidad de que un

excesivo número de trayectorias indeseadas sean consideradas como

sibilancias aumenta.

Por lo tanto, los parámetros a partir de los cuales obtenemos los mejores

resultados en cuanto a las métricas calculadas coinciden con la bibliografía consultada

89

([14] y [15]), verificando con nuestros resultados las conclusiones y decisiones tomadas

en estos documentos. Por lo tanto, en esta fase hemos decidido que la mejor

configuración es la siguiente:

Tamaño de ventana de 1024 muestras.

Resolución en frecuencia de 30 Hz.

Resolución temporal de 50 ms.

Duración mínima de sibilancia de 250 ms.

A continuación, se muestra una tabla con los resultados obtenidos en pruebas

realizadas con uno de los audios que conforman la base de datos de optimización, el cual

contiene hasta 4 sibilancias, utilizando una ventana de 1024 muestras y variando el resto

de parámetros de forma aproximada para observar la mejora de rendimiento en software

con la configuración anterior. La frecuencia de muestreo del audio utilizado es de 8000

Hz:

Muestras

ventana 1024 1024 1024 1024 1024

Rango

frecuencia 30 30 30 30 30

Rango tiempo 30 50 50 50 100

Duración

mínima 250 80 100 250 80

TP 63 63 63 63 63

FP 0 5 5 0 5

FN 14 14 14 14 18

Exhaustividad 0.8182 0.8182 0.8182 0.8182 0.7662

Exactitud 1 0.9565 0.9565 1 0.9219

Precisión 0.8182 0.7683 0.7683 0.8182 0.7195

Número de

sibilancias

detectadas

4 6 6 4 6

Tabla 6.1 - Ejemplo de datos obtenidos en la fase de optimización a nivel de frame

90

La columna marcada en color verde muestra la mejor combinación de parámetros

junto con los resultados obtenidos. El audio analizado a partir del cual se obtuvieron estos

datos es "6025.wav" el cual contiene un total de 4 sibilancias.

6.3.2 Optimización a nivel de evento

Esta segunda fase de optimización consiste en la obtención de resultados a partir

del estudio evento a evento de la respuesta del software principal puesto a prueba en las

mismas 81 situaciones anteriores. Esta vez, compararemos las sibilancias obtenidas en

el análisis realizado con cada una de las posibles combinaciones y se compararán a nivel

de bloque (conjunto de frames que componen las sibilancias) con un conjunto de límites

impuestos previamente. Por lo tanto, a grandes rasgos, el software "optimizacion.m"

contendrá los límites temporales de las sibilancias que se encuentran en el audio

analizado, permitiendo comparar dichos límites de bloques con los que el programa sea

capaz de devolver, es decir, observaremos el inicio y final de cada sibilancia devuelta por

el programa principal y los compararemos con los límites impuestos de forma manual, los

cuales indicarán el inicio y final de las sibilancias reales.

Una vez comenzadas las pruebas, el software principal realizará su función en un

bucle anidado similar al del apartado anterior, obteniendo una matriz que contiene cada

una de las sibilancias detectadas y sus frames de inicio y fin. Se considerarán los

siguientes casos para la obtención de las métricas:

Los límites de la sibilancia analizada coinciden con los límites reales del

espectrograma original, en este caso obtendremos una sibilancia bien

detectada o verdadero positivo. Los límites se han definido en este caso

con un margen de más, menos un número de frames determinado, en

función del tamaño de ventana elegido.

La sibilancia ha sido detectada pero solo uno de los límites (inicio o final)

se encuentran en el rango establecido previamente. Es en este caso

cuando diremos que se ha cometido un error de substitución, es decir, se

ha detectado la sibilancia pero de forma incorrecta.

La sibilancia detectada tiene unos frames de inicio y fin comprendidos

ambos entre los límites impuestos, pero no se ajustan de forma

aproximada a estos. De nuevo, obtendremos un error de substitución.

Los límites de la sibilancia no encajan con ningún límite impuesto y

tampoco se encuentran en dicho rango. En este caso obtendremos un

error de falsa alarma ya que se ha detectado una sibilancia donde no

existe realmente.

91

Si alguna de las sibilancias reales no han sido detectadas por el software,

entonces se habrá cometido un error de pérdidas.

Todos estos posibles casos son analizados mediante el uso de secuencias

condicionales en el software encargado de realizar la fase de optimización. Como

resultado, obtenemos una tabla de datos parecida a la que obtenemos en el apartado

anterior. A continuación, se muestra un ejemplo mediante la figura 6.7:

Figura 6.7 - Ejemplo de la matriz de datos obtenidos tras la fase de optimización a nivel de eventos

La matriz expuesta tiene una estructura muy parecida a la obtenida en la fase de

optimización a nivel de frame:

Fila 1: muestras que contiene la ventana.

Fila 2: rango en frecuencia para la obtención de trayectorias.

Fila 3: rango en tiempo para la obtención de trayectorias.

Fila 4: duración mínima de una sibilancia.

Fila 5: número de sibilancias detectadas.

Fila 6: verdaderos positivos o sibilancias correctamente detectadas.

Fila 7: errores de substitución cometidos.

Fila 8: errores de pérdidas cometidos.

Fila 9: errores de falsa alarma cometidos

De nuevo, estas tablas serán almacenadas en archivos .mat con la nomenclatura

siguiente: "datos_audio_NombreArchivoAudio.mat". Al cargarlos, obtendremos la matriz

de datos del audio seleccionado. En el caso expuesto en la figura 6.7 se examinó el

archivo "datos_audio_6025.mat".

Debido a que este estudio puede ser menos preciso que el anterior, se ha

considerado que las mejores combinaciones de parámetros de entrada serán aquellas

92

que obviamente obtengan un mayor número de verdaderos positivos y cometan el

mínimo número de errores. Aun así, vemos que cometer un error de substitución es algo

muy común ya que es difícil determinar de forma exacta el inicio y final de una sibilancia

si existe ruido de respiración que pueda enmascarar parte de la sibilancia. Por ello, se ha

decidido que las mejores combinaciones de parámetros de entrada para el software

principal serán aquellos que, además de obtener un número de verdaderos positivos alto,

obtengan un número de errores de substitución alto con respecto a los otros dos errores

posibles. De nuevo, las combinaciones más certeras a la hora de detectar eventos se

obtienen con el uso de una ventana de 1024 muestras, por las mismas razones que

aparecían en el apartado anterior (carencia o exceso de resolución temporal). A

continuación, se muestra la tabla 6.2 un ejemplo que contiene los resultados obtenidos

con las combinaciones más adecuadas para el correcto funcionamiento del software

principal obtenidos mediante el análisis del archivo de audio "6025.wav" el cual contiene

4 sibilancias.

Muestras

ventana 1024 1024 1024 1024 1024

Rango

frecuencia 30 30 30 30 30

Rango tiempo 30 30 50 50 50

Duración

mínima 100 250 80 100 250

Número de

sibilancias

detectadas

6 4 6 6 4

TP 4 4 4 4 4

Error de

substitución 2 2 2 2 2

Error de

pérdidas 0 0 0 0 0

Error de falsa

alarma 0 0 0 0 0

Tabla 6.2 - Ejemplo de datos obtenidos en la fase de optimización a nivel de

evento.

93

Es importante remarcar que de nuevo, la duración mínima temporal de una

sibilancia es un parámetro clave para la obtención o no de un gran número de falsos

positivos que en este caso se puede traducir en errores de falsa alarma o errores de

substitución.

Como podemos apreciar claramente, las pruebas realizadas a nivel de evento no

reflejan con gran exactitud la variación de eficiencia al combinar ciertos parámetros de

entrada en el software principal, aun así, los mejores resultados almacenados en los

archivos ".mat" se corresponden con la combinación indicada en la fase de optimización a

nivel de frame, por lo tanto, de nuevo llegamos a la conclusión de que la mejor

combinación de parámetros de entrada para nuestro programa principal es la siguiente:

Tamaño de ventana de 1024 muestras.

Resolución en frecuencia de 30 Hz.

Resolución temporal de 50 ms.

Duración mínima de sibilancia de 250 ms.

Es evidente que la siguiente fase para la obtención de resultados será realizada

con dicha combinación, la cual arroja los resultados más satisfactorios.

6.4 Testeo I

Una vez obtenida la combinación de datos de entrada óptima para un correcto

funcionamiento de nuestro programa principal según la información obtenida en la fase

de optimización, es hora de comprobar el comportamiento del programa ante situaciones

pseudoaleatorias con muestras de audio diferentes a las utilizadas en la fase anterior, es

por ello por lo que utilizaremos la base de datos de audio enfocada a esta fase (base de

datos de testeo I). En la figura 6.8 se presenta un esquema que resume las tareas

llevadas a cabo en la fase de testeo I.

94

Figura 6.8 – Esquema de la implementación de la fase de testeo I.

Los pasos a seguir en la primera fase de testeo son los siguientes:

- En primer lugar, se realizará una ejecución del programa principal con los

parámetros óptimos utilizando la primera de las muestras generadas en la

base de datos de testeo I.

- Almacenamos los resultados obtenidos en esta primera iteración, conservando

las sibilancias detectadas y los frames que las componen.

- Mediante un patrón establecido el cual ha sido creado a partir de las

sibilancias reales que se encuentran en cada una de las 15 muestras

generadas en la base de datos, se comprobarán las sibilancias obtenidas en la

ejecución del programa principal con dichos patrones. Este estudio se realiza a

nivel de frame, tal y como se hizo en la fase de optimización a nivel de frame.

- Tras la comparación, se hará un recuento de los parámetros obtenidos (TP,

FN y FP).

- Finalmente, se llevará a cabo el cálculo de las métricas expuestas en el

apartado 6.2 y se almacenarán todos los datos obtenidos en esta primera

iteración.

Como es lógico, tras la primera iteración el software procede a cambiar de

muestra, en este caso la número 2 con la que se repetirá el proceso descrito. Se

realizarán tantas iteraciones como muestras de audio genera la base de datos de testeo

I, es decir, se realizarán hasta 15 iteraciones utilizando los parámetros de entrada

óptimos en el software principal y se realizará en cada una de estas iteraciones el cálculo

de las métricas pertinentes.

95

Hay que remarcar el hecho de que la generación de la base de datos aleatoria de

audios y el propio análisis de las señales se realizan de forma automática cada vez que

ejecutemos el programa "testeo.m". A continuación, en la tabla 6.3, se muestran los

resultados finales obtenidos (en este caso se genera una matriz de datos similar a la

siguiente, almacenada en el archivo "resultados.mat"):

Muestra

1

Muestra

2

Muestra

3

Muestra

4

Muestra

5

Muestra

6

Muestra

7

Nivel de señal

(dB) 0 5 -5 5 -5 0 0

Zona insertada 1 2 2 3 2 2 2

TP 10 18 15 16 12 7 8

FP 9 5 6 6 5 5 5

FN 2 2 2 2 1 3 0

Exhaustividad 0.8333 0.9 0.8824 0.8889 0.9231 0.7 1

Exactitud 0.5263 0.7826 0.7143 0.7273 0.7059 0.5833 0.6154

Precisión 0.4762 0.72 0.6522 0.6667 0.6667 0.4667 0.6154

Tabla 6.3 - Ejemplo de datos obtenidos en la fase de testeo I. Muestras de audio 1 a 7 de

las 15 analizadas.

La fila 1 muestra el nivel de señal de la sibilancia con respecto al de la respiración

en la mezcla. La segunda fila muestra la zona donde se ha insertado la sibilancia, es

decir, en cuál de las 3 inspiraciones contenidas en el audio "respiración.wav" ha sido

solapada la señal de sibilancia correspondiente, siendo 3 las posibles de entre las que se

elige una de forma aleatoria. El resto de filas pertenece a los parámetros ya explicados

para la obtención de las métricas.

A simple vista se puede observar como el rendimiento del programa desciende

cuando la mezcla de audios se realiza con -5 o 0 dB de diferencia entre la potencia de la

señal de sibilancia y la del audio de respiración vesicular normal. Esto se debe a que la

sibilancia queda parcialmente enmascarada por el audio de respiración y la detección es

más complicada, llevando a obtener más falsos negativos y positivos.

96

Si comparamos los parámetros exactitud y exhaustividad observamos que este

último, por lo general, suele mostrar un porcentaje mayor, por lo tanto podemos llegar a la

conclusión de que la tasa de falsos positivos suele ser mayor que la tasa de falsos

negativos. Por ello, podemos indicar que nuestro software no suele no detectar picos

pertenecientes a sibilancias, es decir, mostrar falsos negativos.

Cuando el nivel de señal de la sibilancia está 5 dB por encima del de la señal de

audio podemos observar como el número de verdaderos positivos aumenta, lo que nos

indica, obviamente, que el rendimiento del programa aumenta en gran medida, aun así, el

número de falsos positivos y negativos no experimenta un descenso acusado, por lo tanto

las métricas no aumentan en exceso cuando esto ocurre.

Tras varias pruebas realizadas obteniendo el valor de las métricas calculadas

sobre varios audios generados de forma aleatoria cuyas mezclas han sido realizadas con

distintos niveles de señal entre respiración y sibilancia, es decir, ejecutando de forma

reiterada la función "testeo.m" y haciendo una media aritmética de todas las métricas

obtenidas, a continuación, en la tabla 6.4, se muestra en porcentaje el valor de cada una

de ellas:

Exhaustividad Exactitud Precisión

91.69 % 71.65 % 67.58 %

Tabla 6.4 – Media aritmética de las métricas obtenidas en la fase de testeo I

Si nos centramos en el parámetro exhaustividad, llegamos a la conclusión de que

la cantidad de verdaderos positivos frente a la cantidad de falsos negativos es muy

superior, lo cual nos da a entender que nuestro sistema introduce una tasa de falsos

negativos reducida, es decir, en pocas ocasiones nuestro detector de sibilancias pasará

por alto ciertas componentes de sibilancias o incluso sibilancias completas.

Por otro lado, el parámetro exactitud nos informa acerca de la proporción de falsos

positivos frente a la de verdaderos positivos. En este caso, la tasa de falsos positivos es

superior en proporción frente a la de falsos negativos, aunque sigue siendo bastante

menor frente a la de falsos positivos. Al comparar estos dos parámetros, exhaustividad y

exactitud, llegamos a la conclusión de que nuestro sistema es más propenso a introducir

falsas alarmas frente a no detectar ciertas sibilancias. Esto puede deberse a la

interferencia que crea el ruido de respiración y latidos del corazón en las señales con

sibilancias. Un alto nivel de señal respiratoria o cardiaca puede hacer que el sistema

97

detecte picos significativos donde realmente no los haya por el simple hecho de que

dichos picos relacionados con la respiración o el corazón posean una frecuencia cercana

a los rangos establecidos para la detección de sibilancias. El ruido introducido por las

grabaciones (micrófonos, ruido de fondo, etc.), también puede contribuir a la aparición de

falsos positivos. Por otro lado, la aparición de falsos negativos se debe al efecto

enmascarador que producen todos estos tipos de ruidos sobre las componentes sonoras

de las sibilancias.

En el ámbito de la detección de sonidos adventicios, consideramos que puede ser

mucho más perjudicial para el paciente el hecho obtener una alta tasa de FN frente a

obtener una alta tasa de FP. Es obvio que ambos errores pueden conducir a un mal

diagnóstico por parte del médico, pero una vez cometidos, observamos que la no

detección de una sibilancia puede llevar a la conclusión de que el paciente está sano

cuando realmente no lo está, pudiendo empeorar su patología si no se toman medidas

sanitarias. Por otro lado, el hecho de generar una falsa alarma (generar FP) puede poner

en alerta al médico encargado de hacer el diagnóstico, obligando al paciente a realizar

otro tipo de pruebas que certifiquen la existencia o no de las sibilancias detectadas por el

software, por lo tanto, esta vez sí se toman ciertas medidas sanitarias. En ambos casos

se cometen errores de diagnósticos aunque podemos observar claramente que las

consecuencias de introducir FN frente a FP pueden ser mucho más perjudiciales para el

paciente. Es por esto por lo que podemos afirmar, tras esta fase de testeo, que nuestro

software es robusto frente a la aparición de FN y por lo tanto, más fiable para la detección

de sibilancias.

Por último, el parámetro precisión nos informa acerca de la cantidad de aciertos

obtenidos (TP) frente a la cantidad de errores cometidos (FN y FP). Como podemos

observar, este porcentaje es superior al 50% por lo que podemos afirmar que la cantidad

de errores en total cometidos por nuestro software es inferior al número de aciertos que

genera.

6.5 Testeo II

El hecho de obtener una base de datos de audio pseudoaleatoria que solo

contemple 15 muestras de respiración con sibilancias nos da a entender que los

resultados obtenidos en la fase de testeo anterior pueden no reflejar con tanta exactitud

el comportamiento de nuestro software frente a situaciones reales. Es por ello por lo que

se decidió crear una nueva base de datos de audio detallada en el apartado 6.1.3 en la

cual se incrementaban hasta 165 los casos a analizar en esta nueva fase de testeo. Con

ello pretendemos obtener un conjunto de resultados más fieles al comportamiento real de

98

nuestro software gracias a la creación de una nueva base de datos más robusto que la

anterior.

El proceso llevado a cabo en esta fase de testeo es muy similar al seguido en la

fase anterior, tal y como podemos observar en el esquema mostrado en la figura 6.9:

Figura 6.9 – Esquema de la implementación de la fase de testeo II

Como podemos observar, los métodos utilizados para la obtención de parámetros

como TP, FN y FP, así como sus métricas correspondientes, son similares a la fase de

testeo anterior. El cambio fundamental se ha producido en el uso de una nueva base de

datos que como ya se ha mencionado, contiene una variedad de casos con sibilancias

superior a la base de datos precedente a la expuesta en el apartado 6.1.3.

De forma similar al apartado anterior (6.4), los pasos seguidos para la obtención

de resultados son los siguientes:

- Ejecución del programa principal utilizando la primera muestra de audio

generada en la base de datos.

- Obtención de sibilancias detectadas.

- Comparación frame a frame da cada sibilancia detectada con el patrón que

representa la sibilancia real en la muestra de audio.

- Obtención de parámetros TP, FN y FP.

- Cálculo de métricas.

- Almacenamiento de datos generados.

- Repetir el proceso cambiando a la muestra de audio siguiente en la base de

datos de testeo II.

99

A continuación, en la tabla 6.5, se muestra un ejemplo de los datos almacenados

en el archivo "resultados.mat":

Muestra

123

Muestra

124

Muestra

125

Muestra

126

Muestra

127

Muestra

128

Muestra

129

Nivel de

señal (dB) -5 0 -5 5 5 0 -5

TP 18 18 17 18 18 18 18

FP 10 12 11 13 4 12 14

FN 1 1 2 1 1 1 1

Exhaustividad 0.9474 0.9474 0.8947 0.9474 0.9474 0.9474 0.9474

Exactitud 0.6429 0.6 0.6071 0.5806 0.8186 0.6 0.5625

Precisión 0.6207 0.5806 0.5667 0.5625 0.7826 0.5806 0.5455

Tabla 6.5 - Ejemplo de datos obtenidos en la fase de testeo II. Muestras de audio 123 a

129 de las 165 analizadas.

Como podemos observar, en la primera fila de la tabla 6.5 se muestra el número

de muestra analizada en la columna correspondiente, en la segunda fila la diferencia de

señal en dB entre las señales de respiración utilizadas y las sibilancias. Las tres filas

consecutivas muestran el número de TP, FP y FN respectivamente. En las tres filas

restantes se muestran los resultados obtenidos en el cálculo de cada una de las metricas

propuestas.

Podemos llegar a unas conclusiones parecidas a las tomadas gracias a la tabla

6.3 correspondiente a los resultados obtenidos en la fase de testeo I, es decir, el

rendimiento del programa se ve perjudicado cuando la mezcla de señal se realiza con

una diferencia de potencia de -5 dB debido al efecto enmascarador que produce la

respiración sobre la sibilancia analizada. La aparición de falsos negativos sigue siendo

inferior a la aparición de falsos positivos y verdaderos positivos, tal y como se reflejará en

la tabla 6.6 a continuación mostrada:

100

Fase Exhaustividad Exactitud Precisión

Testeo I 91.69 % 71.65 % 67.58 %

Testeo II 87.98 % 61.69 % 57.4 %

Tabla 6.6 – Comparación de resultados finales obtenidos en la fase de testeo I y II.

Podemos observar como el porcentaje en las tres métricas analizadas en la fase II

desciende debido al aumento de muestras utilizadas para llevar a cabo esta nueva

evaluación. Además, el descenso de porcentaje también se debe al hecho de que las

señales con respiración utilizadas en la nueva base de datos detallada en la sección 6.1.3

contienen sonidos adventicios, como por ejemplo crepitantes (audio utilizado en la

construcción de la base de datos denominado "Coarse crackles.wav"). Un aumento en el

ruido introducido por la respiración es capaz de enmascarar en mayor medida a las

sibilancias a detectar.

Podemos observar que la métrica cuyo porcentaje desciende en menor medida es

la exhaustividad, lo cual confirma de nuevo el hecho de que nuestro software es robusto

frente a la aparición de falsos negativos. La incorporación de nuevos audios con mayores

interferencias no ha supuesto un gran aumento en la tasa de FN.

Como era de esperar, un aumento en la introducción de ruido ajeno a las

sibilancias ha ocasionado un aumento en la aparición de falsos positivos y por

consiguiente un descenso del 10% aproximadamente en las métricas exactitud y

precisión.

La diferencia entre porcentajes de las tres métricas analizadas nos permite llegar

a conclusiones similares a las obtenidas en el apartado 6.4:

- El número de FN es significativamente menor al número de FP.

- En general, la aparición de FN no se ve excesivamente afectada por la

aparición de ruidos interferentes.

- La aparición de FP si se ha visto afectada en mayor medida por la aparición de

interferencias tales como los crepitantes en las bandas de frecuencia en las

cuales el detector de sibilancias actúa.

- Nuestro sistema sigue siendo robusto frente a la aparición de FN, incluso al

utilizar una base de datos con mayores interferencias y una variedad de

audios mayor.

- El descenso de los porcentajes, en general, no ha sido muy acusado tras

utilizar una base de datos nueva más robusta que la anterior.

101

7 CONCLUSIONES Y LÍNEAS FUTURAS

En primer lugar, la primera conclusión a la que podemos llegar una vez realizadas

todas las tareas descritas en esta memoria es la relativa al cumplimiento de todos los

objetivos propuestos en el apartado número 3:

- Un software capaz de detectar sibilancias ha sido implementado a lo largo de

este trabajo, ofreciendo ciertas funcionalidades que van más allá del simple

hecho de detectarlas. La sencillez y la pequeña cantidad de recursos que

necesita para funcionar son clave frente a otros sistemas mucho más

complejos y sobretodo difíciles de adquirir.

- Tras un estudio del estado del arte en el ámbito de la detección de sonidos

adventicios mediante métodos computarizados, hemos podido estudiar a

fondo ciertas técnicas sobre las cuales nos hemos apoyado para confeccionar

nuestro método de detección de sibilancias.

- Como consiguiente, se han podido observar puntos fuertes y carencias de

estos sistemas con el fin de mejorar en ciertos aspectos nuestro software.

- Se ha realizado un estudio de ciertos sonidos adventicios presentes en la

respiración de pacientes con ciertas patologías, centrándonos en gran medida

en las características propias de las sibilancias y ciertas diferencias que nos

permiten diferenciarlas con respecto a otros sonidos adventicios de

características parcialmente similares.

- Tras este estudio, hemos sido capaces de cuantificar dichas características

con el fin de implementar ciertas etapas del software.

- Hemos conseguido obtener una configuración óptima para nuestro sistema

mediante una serie de fases de evaluación.

- Una fase de testeo dividida en dos secciones ha sido llevada a cabo gracias a

la confección de dos bases de datos de audio distintas, obteniendo resultados

satisfactorios.

- Como se podrá observar en el apartado 9 de esta memoria, un GUI ha sido

creado de forma satisfactoria con el propósito de que el usuario final pueda

aprovechar por completo todas las funcionalidades que aporta el software de

forma fácil e intuitiva.

En lo referente al estudio de los datos obtenidos en las fases de evaluación

podemos destacar los siguientes aspectos:

102

- Los resultados obtenidos en ambas fases de testeo han sido satisfactorios

debido a la obtención de porcentajes relativamente altos en las métricas

propuestas.

- La exhaustividad obtenida en las dos pruebas de testeo realizadas al software

suele ser mayor que la métrica exactitud, por lo tanto, podemos llegar a la

conclusión de que en nuestro software, en la mayoría de las situaciones, la

tasa de falsos negativos es inferior a la de falsos positivos, siendo capaz de

evitar gran cantidad de errores de pérdidas, pudiendo evitar en gran medida la

posibilidad de obviar o pasar por alto componentes espectrales relativos a las

sibilancias en una respiración producida por un paciente. Por esta razón, es

importante remarcar esta ventaja ofrecida por nuestro software.

- El hecho de que nuestro software pueda mostrar una cantidad de falsos

positivos superior a la cantidad de errores cometidos como falsos negativos

puede deberse en gran medida a la calidad de los audios utilizados para llevar

a cabo dichas fases de evaluación. El hecho de no estar filtradas y pre-

procesadas puede ocasionar la aparición de interferencias indeseadas que

dificulten la detección de sibilancias en nuestro software. Por ello, de nuevo

hacer hincapié en la dificultad que hemos encontrado a la hora de obtener

ciertas muestras de audio para completar este trabajo.

- Como es evidente, nuestro software se comportará mejor ante muestras de

audio filtradas y pre-procesadas. El hecho de eliminar componentes en

frecuencia producidas por los ruidos respiratorios y cardiacos aumentará en

gran medida la eficiencia de nuestro sistema a la hora de detectar sibilancias

en la respiración de un paciente.

Una vez tomadas estas conclusiones, nos planteamos la siguiente pregunta: ¿Un

software detector de sibilancias es más fiable para un paciente si genera un exceso de

falsos positivos o un exceso de falsos negativos?

Obviamente, la intención del programador a la hora de diseñar este tipo de

software es la de eliminar todo tipo de espurio que pueda entorpecer el diagnóstico y

evitar perder información a la hora de analizar la señal sonora. Aun así, nos damos

cuenta de que es imposible crear un software perfecto que evite ambos casos, por lo que

es el momento de, una vez asumidos los posibles errores que pueda cometer el software,

determinar cuáles son más o menos graves y determinantes. Desde nuestro punto de

vista, un software detector de sibilancias debería de, ante todo, detectarlas. Aunque

parezca obvio, esto nos da a entender que los posibles falsos positivos no son tan

relevantes a la hora de diagnosticar una enfermedad que los falsos negativos. El no

103

detectar una sibilancia puede hacer que la segunda opinión indique que todo está bien y

no hay anomalías, pudiendo ser el caso contrario y ocasionar un error de diagnóstico

grave. Por otro lado, la aparición de falsas alarmas puede hacer que el médico ponga

especial atención sobre el paciente, llegando a realizar otras pruebas diferentes para

verificar o no la existencia de sibilancias. Puede que con la segunda prueba realmente el

paciente esté sano y con el software se dio una falsa alarma o por el contrario, el

paciente produce sibilancias con su respiración y el hecho de obtener falsos positivos en

la prueba hizo tomar especial atención en el proceso.

Como ya se ha mencionado en ciertas ocasiones, han existido algunas

dificultades que han entorpecido el progreso de este trabajo:

- La escasez de muestras de audio disponibles en la red es la principal. Es un

hecho que ha ralentizado en gran medida la obtención de resultados en la fase

de evaluación de nuestro software.

- La existencia de algunos audios expuestos en ciertas páginas webs no

especializadas en el ámbito de la auscultación no han podido ser utilizadas

debido a un exceso de nivel sonoro en la respiración y ruidos cardiacos,

ocasionando en gran medida un enmascaramiento de las sibilancias que

inducen a error en la detección.

- La creación de una base de datos propia construida a partir de la combinación

pseudoaleatoria de las pocas muestras de audio conseguidas, ha sido una

solución llevada a cabo.

En cuanto al posible futuro de este trabajo, el hecho de seguir mejorando las

características del programa sería una de las prioridades. Para ello, debemos de mejorar

ciertas partes dentro del proceso de detección:

- Construcción de trayectorias. Este es una de las partes clave dentro del

proceso por lo que debemos de hacer especial hincapié en la mejora de esta

técnica. Un aumento en la precisión a la hora de formar trayectorias, evitará en

gran medida posibles errores a la hora de determinar o no el hecho de que

sean sibilancias.

- Pre-procesado para las señales pulmonares que se introduzcan en el

programa. Un nuevo bloque dentro de la estructura del programa como es el

mencionado, puede mejorar mucho la eficiencia del programa. Es un ejemplo

la introducción de ecualizadores y filtros elimina-ruido en el desarrollo del

software.

104

- Obtención de bibliotecas de audios con respiraciones humanas grabadas en

condiciones favorables o incluso planificar una fase de grabación de

respiraciones de pacientes con instrumentos de captación de sonidos

adecuados para esta aplicación.

Tras un proceso de mejora de las prestaciones del programa, una posible

migración a otro lenguaje de programación podría abrir un gran rango de posibilidades a

la hora de implementar esta aplicación en aparatos como fonendoscopios digitales o

incluso en smartphones mediante la confección de una app descargable para los

usuarios. Esto permitiría un rápido y útil uso del software tanto en profesionales como por

usuarios comunes, permitiendo tener una segunda opinión médica al alcance de todos, lo

cual permitiría detectar posibles irregularidades pulmonares a tiempo sin realizar grandes

esfuerzos, un aspecto fundamental a la hora de prevenir y curar multitud de

enfermedades respiratorias.

105

8 BIBLIOGRAFÍA

[1] Sandra Reichert, Raymond Gass, Christian Brandt and Emmanuel Andrès,

Analysis of Respiratory Sounds: State of the Art, Clinical Medicine:

Circulatory, Respiratory and Pulmonary Medicine 2008:2.

[2] A.R.A. Sovijärvi et al. Definition of terms for applications of respiratory

sounds, European Respiratory Review 2000; 10: 77, 597-610.

[3] Marcin Wisniew-ki, Tomasz P. Zielinski, TONALITY DETECTION

METHODS FOR WHEEZES RECOGNITION SYSTEM, AGH University of

Science and Technology, Krakow, Poland. IWSSIP 2012, 11-13 April 2012,

Vienna, Austria.

[4] Hans Pasterkamp, Steve S. Kkraman, and George R. Wodicka, Respiratory

Sounds - Advances Beyond the Stethoscop, Department of Pediatrics and

Child Health, University of Manitoba, Winnipeg, Manitoba; VA Medical

Center, Lexington, Kentucky;School of Electrical and Computer

Engineering, Purdue University, West Lafayette, Indiana.

[5] H.E. Elphick, S. Ritson, H. Rodgers, M.L. Everard, When a "wheeze" is not

a wheeze: acoustic analysis of breath sounds in infants, European

Respiratory Journal 2000; 16: 593-597, UK.

[6] American Thoracic Society Ad Hoc Committee on Pulmonary

Nomenclature. 1977. Updated nomenclature for membership reaction. ATS

News 3:5–6.

[7] R S Cane, S C Ranganathan, S A McKenzie, What do parents of wheezy

children understand by “wheeze”?, Archives of Disease in Childhood 2000;

82:327-332

[8] Antoni Homs-Corbera, José Antonio Fiz, José Morera, and Raimon Jané,

Time-Frequency Detection and Analysis of Wheezes During Forced

Exhalation, IEEE Trasactions on Biomedical Engineering, vol.51, No.1,

January 2004.

106

[9] H E Elphick, G A Lancaster, A Solis, A Majumdar, R Gupta, R L Smyth,

Validity and reliability of acoustic analysis of respiratory sounds in infants.

Archives of Disease in Childhood 2004; 89: 1059-1063. doi:

10.1136/adc.2003.046458

[10] Zbigniew Korona and Mieczyslaw M. Kokar, Lung Sound Recognition Using

Model-Theory Based Feature Selection and Fusion, Department of

Electrical and Computer Engineering, Northeastern University, 360

Huntington Avenue, Boston, MA 02115.

[11] S. A. Taplidou, L. J. Hadjileontiadis, T. Penze, V. Gross and S. M. Panas,

WED: An Efficient Wheezing-Episode Detector Based on Breath Sounds

Spectrogram Analysis, 'Department of Electrical & Computer Engineering,

Aristotle University of Thessaloniki, Thes-saloniki, GREECE Department of

Medicine, Philipps University, Marburg, Germany. 25th Annual Intemational

Conference of the IEEE EMBS. Cancun, Mexico September 17-21,2003.

[12] Mireille Oud, Edo H. Dooijes, AUTOMATED BREATH SOUND ANALYSIS,

University of Amsterdam, Computer Science Dept., Kruislaan 403, The

Netherlands. IEEE EMBS Conf. Proc. 1996, section 4.2.4-3.

[13] Robert P. Baughman, Robert G, Lung Sound Analysis for continuous

Evaluation of Airflow Obstruction in Asthma, Chest 1985;88;364-368.DOI

10.1378/chest.88.3.364.

[14] Abhishek Jain, Jithendra Vepa, Member, IEEE, Lung Sound Analysis for

Wheeze Episode Detection. 30th Annual International IEEE EMBS

Conference, Vancouver, British Columbia, Canada, August 20-24, 2008.

[15] Jiarui Li, Ying Hong, Wheeze detection algorithm based on spectrogram

analysis, Institute of Acoutics, Chinese Academy of Sciences, University of

Chinese Academy of Science. 2015 8th International Symposium on

Computational Intelligence and Design.

[16] J. C. Altozano Racionero, F. J. Cañadas Quesada, Sistema para la

extracción de singing voice en señales musicales polifónicas monoaurales,

107

Proyecto Fin de Carrera, Escuela Politécnica Superior de Linares,

Universidad de Jaén.

[17] Easy Auscultation - https://www.easyauscultation.com

[18] Littmann Stethoscopes - http://www.littmann.com

[19] Thinklabs One - http://www.thinklabs.com

[20] Practical Clinical Skills - https://www.practicalclinicalskills.com/

[21] N. Meslier, G. Charbonneau, J-L. Racineux, Wheezes, European

Respiratory Journal, 1995, 8, 1942–1948, ISSN 0903 - 1936, DOI:

10.1183/09031936.95.08111942, Reino Unido.

[22] Recuero López, Manuel, Ingeniería Acústica, Madrid: Paraninfo, D.L. 1999,

ISBN: 84-283-2639-8.

[23] Alana V. Oppenheim, Ronald W. Schafer, Jhon R. Buck, Tratamiento de

señales en tiempo discreto, 2ª edición, Madrid, 2000, Prentice Hall Iberia,

ISBN: 84-205-2987-7.

[24] Shih-Hong Li, Bor-Shing Lin, Chen-Han Tsai, Cheng-Ta Yang, Bor-Shyh

Lin, Design of Wearable Breathing Sound Monitoring System for Real-Time

Wheeze Detection, Sensors 2017, 17, 171.

[25] F. J. Cañadas Quesada, P. Vera Candeas, N. Ruiz Reyes, Investigación y

desarrollo de técnicas de estimación multi-pitch y su aplicación a la

transcripción automática de señales musicales y polifónicas. Universidad

de Jaén, 2009

[26] Federico Miyara, Acústica y sistemas de sonido, Rosario, República

Argentina, UNR Editora, 2000, ISBN: 950-673-196-9.

108

9 MANUAL DE USUARIO: USO DEL GUI

Se conoce como GUI a la interfaz gráfica de usuario que nos proporciona Matlab a

la hora de desarrollar software. La herramienta que nos brinda para la creación de este

interfaz de usuario es denominada GUIDE o entorno de desarrollo de GUI. Nos permitirá

personalizar por completo la interfaz que se mostrará al usuario, haciendo que este

pueda sacar máximo partido al software de forma rápida e intuitiva. En nuestro caso, el

usuario podrá modificar parámetros de entrada, realizar una selección del audio a

analizar de forma rápida, visualizar todos los parámetros de salida de interés y

seleccionar el tipo de espectrograma que necesite observar. Como se puede intuir, en

este apartado se presentará la interfaz correspondiente a nuestro programa y se mostrará

de forma individual cada uno de los apartados con los que cuenta dicha GUI.

Figura 9.1 - Secciones de la interfaz de usuario

Como apreciamos en la figura 9.1, la interfaz está compuesta por 4 secciones

claramente diferenciadas en la imagen. Es importante remarcar que el usuario tendrá

acceso a este interfaz escribiendo en la línea de comandos de Matlab la palabra

"interface". De esta forma se iniciará la GUI con la que el usuario podrá interactuar e

iniciar el programa principal, denominado como "principal.m". En ningún momento el

usuario se verá obligado a manipular o ejecutar este archivo, simplemente debe

asegurarse de que se encuentre en el mismo directorio que el archivo "interface.m" y

"sg.m". Una vez iniciada la interfaz, el usuario tendrá que interactuar con cada una de las

siguientes secciones que la forman.

109

9.1 Inicio de programa

Es aquí donde el usuario podrá elegir el archivo de audio .wav que deseé analizar

con nuestro programa detector de sibilancias. Para ello, debe pulsar sobre el botón

denominado "Cargar Audio .wav". De esta forma, se abrirá automáticamente una ventana

donde elegir el audio en el directorio donde se ejecuten todas las funciones de Matlab en

ese momento. A continuación, en la figura 9.2, se muestra en detalle esta sección.

Figura 9.2 - Apartado 1 de la interfaz

En la segunda mitad, podemos observar dos indicadores que nos mostrarán la

duración en segundos y la frecuencia de muestreo del audio introducido. Si en algún

momento se cancela la selección de audio o por cualquier otro motivo el archivo no

queda seleccionado, un mensaje de aviso aparecerá en pantalla indicando que no se

realizó correctamente la selección del audio, similar al expuesto en la figura 9.3:

Figura 9.3 – Mensaje de aviso en la selección de audio.

110

9.2 Selección de parámetros

Es en esta sección donde el usuario podrá elegir ciertos parámetros con los que el

programa podrá trabajar y realizar el proceso de detección, además de encontrarse el

botón de inicio del programa principal. En la figura 9.4 se muestra en detalle dicha

sección.

Figura 9.4 - Apartado 2 de la interfaz

En primer lugar, mediante una serie de menús desplegables, el usuario podrá

seleccionar el número de muestras de la ventana con la que se efectuará la STFT al

inicio del programa. Las opciones son 512, 1024 y 2048 muestras (a más muestras por

ventana, menos resolución temporal pero más resolución en frecuencia). En la figura 9.5

podemos observar un ejemplo donde aparecen dichas opciones incluidas en un menú

desplegable.

Figura 9.5 – Ejemplo de menú desplegable.

111

En el siguiente menú, el usuario podrá elegir el tipo de paciente del que se ha

extraído la muestra de audio (niño o adulto), tal y como muestra la figura 9.6.

Figura 9.6 – Menú desplegable para la selección de paciente.

Esto modificará el rango en frecuencia elegido para juzgar las trayectorias. En el

siguiente recuadro que encontramos, observamos tres menús desplegables

correspondientes a la selección de parámetros relativos a la construcción de trayectorias.

En primer lugar, el usuario podrá elegir el rango en frecuencia o cercanía en frecuencia

para la construcción de trayectorias. Podrá elegir entre ±30, ±50 o ±100 Hz tal y como se

muestra en la figura 9.7:

Figura 9.7 – Menú desplegable para la selección del rango en frecuencia.

. En el siguiente menú desplegable, se elegirá la cercanía en tiempo a la hora de

construir las trayectorias. Las opciones son 30, 50 y 100ms, en la figura 9.8 se muestra el

menú desplegable correspondiente.

112

Figura 9.8 – Menú desplegable para la selección del rango en tiempo.

. El tercer menú desplegable que encuentra el usuario está relacionado con la

selección de la duración mínima que debe tener una trayectoria para ser considerada

sibilancia. Las opciones disponibles son las siguientes: 80, 100 y 250 ms. A continuación,

en la figura 9.9, observamos el menú desplegable que nos da a elegir entre las

duraciones mínimas disponibles.

Figura 9.9 – Ejemplo de menú desplegable en el campo "Duración mínima" de la interfaz.

Si alguno de estos parámetros no es seleccionado correctamente, aparecerá un

mensaje de aviso como el que podemos apreciar en la figura 9.10.

Figura 9.10 – Mensaje de aviso al no seleccionar correctamente una duración mínima de trayectoria

113

Por último, encontramos el botón de inicio de programa, el usuario deberá

pulsarlo cuando todos los parámetros hayan sido seleccionados correctamente. Es en

este momento cuando se ejecutará el programa principal y aparecerán los resultados en

la sección 3 de la interfaz.

9.3 Salida de datos

Una vez iniciada la ejecución del programa principal, los datos de salida se

mostrarán en esta sección. Seguidamente se muestra en detalle en la figura 9.11.

Figura 9.11 - Apartado 2 de la interfaz

Como vemos en el ejemplo, se mostrarán los siguientes datos y opciones, en la

figura 9.12 se pueden observar los siguientes elementos:

- Número de sibilancias detectadas.

- Tipo de sibilancia (polifónica o monofónica)

- Número de armónicos que contienen las sibilancias. En el caso de que estas

sean monofónicas, este indicador será rellenado con un 0.

Figura 9.12 – Salida de datos en una prueba realizada con el audio "6025.wav"

Si no se han detectado sibilancias, aparecerá un mensaje de aviso tras pulsar el

botón de inicio de la sección anterior. En ese caso, no se modificarán estos indicadores.

En la figura 9.13 se muestra este mensaje:

Figura 9.13 – Mensaje de aviso en el que se indica que no se han detectado sibilancias en el audio introducido.

114

A continuación, nos encontramos una serie de botones cuya selección permitirá

visualizar cada una de las etapas en el proceso de detección de sibilancias. En la figura

9.14 se observan dichos botones con los que visualizar cada una de las siguientes

etapas:

- Etapa 1: corresponde al espectrograma de la señal de audio.

- Etapa 2: muestra los picos más significativos detectados.

- Etapa 3: permitirá observar las trayectorias interpoladas.

- Etapa 4: mostrará las sibilancias detectadas, en el caso de que existan.

Figura 9.14 – Panel de botones para visualizar cada una de las etapas.

Por último, nos encontramos dos botones y un cuadro de texto editable con los

cuales el usuario podrá especificar qué sibilancia desea reproducir o grabar (mostrado en

la figura 9.16), de forma individual y separada del resto del audio. Como se puede

apreciar en las imágenes asignadas a cada botón, el de la parte superior permite

reproducir la sibilancia indicada y el restante abrirá una ventana con la que podremos

guardar dicho fragmento de audio en un fichero .wav con el nombre que indique el

usuario. En la figura 9.15 podemos visualizar con más detalle estos botones:

Figura 9.15 – Botones para reproducir o grabar las sibilancias especificadas en el panel mostrado en la figura 9.16.

Figura 9.16 – Panel de selección de sibilancia a reproducir o guardar como archivo .wav.

115

9.4 Espectrograma

Este último apartado cuenta con una representación visual de las etapas

seleccionadas en la sección anterior. El usuario podrá visualizar el espectrograma de la

señal de audio y las sibilancias contenidas en ellas, así como el proceso de selección de

picos significativos y trayectorias. En la etapa 1 solo se mostrará el espectrograma de la

señal original, sin ninguna modificación. En el resto de etapas, en el caso de que existan

sibilancias, quedarán marcadas por líneas verticales que marcarán el inicio y final de

cada una de las sibilancias. Para evitar confusiones, estos fragmentos tendrán una banda

azul en su parte superior. Seguidamente, se muestra un ejemplo en la figura 9.17:

Figura 9.17 - Ejemplo de espectrograma con bandas limitadoras

Además, los puntos correspondientes a picos significativos (etapa 2), trayectorias

(etapa 3) o sibilancias (etapa 4) quedarán también marcados, mostrándose con un color

diferente al del espectrograma. Para que el usuario pueda apreciar correctamente estos

puntos, en la esquina superior izquierda de la interfaz se encuentra la barra de

herramientas, la cual cuenta con botones de zoom in y zoom out, "pan" (sirve para poder

interactuar sobre el espectrograma arrastrando en él el cursor) y un cursor de datos para

poder localizar correctamente los puntos del espectrograma que deseé. A continuación,

se muestra dicha barra de herramientas en la figura 9.18 y un ejemplo de un zoom sobre

la etapa 4 en la figura 9.19, donde se aprecian las líneas divisorias y los puntos que

componen la sibilancia:

116

Figura 9.18 - Localización de la barra de herramientas

Figura 9.19 - Zoom sobre Etapa 4

Con las 4 secciones mostradas, el usuario podrá manipular el programa de forma

correcta e intuitiva, pudiendo elegir con total libertad un conjunto de parámetros con los

que el programa realizará las funciones pertinentes. Además, en su mano queda qué

representar en cada caso, adaptando la salida de datos visuales y auditivos según la

situación y el interés del usuario.