seÑales sonoras - ujaen.estauja.ujaen.es/bitstream/10953.1/12093/1/memoria_tfg...figura 4.2. a)...

100
Universidad de Jaén Trabajo Fin de Grado Alumno: María José Merino García Tutor: D. Francisco Jesús Cañadas Quesada D. Juan de la Torre Cruz Depto.: Ingeniería de Telecomunicación Junio, 2020 MONITORIZACIÓN DE LA PRESENCIA DE SIBILANCIAS A PARTIR DEL ANÁLISIS DE SEÑALES SONORAS Escuela Politécnica Superior de Linares

Upload: others

Post on 30-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • 1

    Universidad de Jaén

    Trabajo Fin de Grado

    de Jaén

    Trabajo Fin de Grado

    Alumno: María José Merino GarcíaUniversidad de Jaén

    Trabajo Fin de Grado

    de Jaén

    Trabajo Fin de Grado

    Alumno: María José Merino García

    Tutor: D. Francisco Jesús Cañadas Quesada

    D. Juan de la Torre Cruz

    Depto.: Ingeniería de Telecomunicación

    Junio, 2020

    Alumno: María José Merino García

    MONITORIZACIÓN DE LA PRESENCIA DE SIBILANCIAS A

    PARTIR DEL ANÁLISIS DE

    SEÑALES SONORAS

    MONITORIZACIÓN DE LA PRESENCIA DE SIBILANCIAS A

    PARTIR DEL ANÁLISIS DE

    SEÑALES SONORAS

    MONITORIZACIÓN DE LA PRESENCIA DE SIBILANCIAS A

    PARTIR DEL ANÁLISIS DE

    SEÑALES SONORAS

    MONITORIZACIÓN DE LA PRESENCIA DE SIBILANCIAS A

    Escuela

    Polit

    écn

    ica

    Superior

    de L

    ina

    res

  • 2

  • 3

    ÍNDICE

    1 Resumen .......................................................................................................10

    2 Introducción .................................................................................................11

    2.1 Caracterización del sonido .....................................................................11

    2.1.1 Frecuencia fundamental, duración, intensidad y timbre. ..................12

    2.1.2 Sonido monocanal, estéreo y multicanal ..........................................13

    2.1.3 Sonido armónico e inarmónico .........................................................14

    2.2 Representación tiempo frecuencia: espectrograma ...............................15

    2.3 Sonidos pulmonares ..............................................................................17

    2.3.1 Sonidos respiratorios normales ........................................................17

    2.3.2 Sonidos adventicios .........................................................................19

    2.3.2.1 Sibilancias .................................................................................21

    3 Objetivos .......................................................................................................24

    4 Estado del arte .............................................................................................25

    4.1 Detección de sibilancias ........................................................................25

    4.2 Dispositivos móviles y salud ..................................................................33

    4.3 Sistemas operativos en dispositivos móviles .........................................36

    5 Implementación ............................................................................................37

    5.1 Implementación en MATLAB .................................................................37

    5.1.1 Desarrollo del algoritmo detector de sibilancias ...............................37

    5.1.1.1 Cálculo del espectrograma ........................................................39

    5.1.1.2 Detección de picos.....................................................................41

    5.1.1.3 Creación de trayectorias ............................................................45

    5.1.1.4 Detección de sibilancias.............................................................52

    5.1.1.5 Obtención de audios asociados a las sibilancias y final de

    grabación 55

    5.1.2 Evaluación .......................................................................................59

    5.1.2.1 Base de datos ............................................................................59

    5.1.2.2 Métricas .....................................................................................59

    5.1.2.3 Evaluación a nivel de frame .......................................................61

    5.1.2.4 Evaluación a nivel de sibilancia..................................................65

    5.1.3 MATLAB Coder ................................................................................67

    5.2 Implementación del sistema en Android.................................................69

  • 4

    5.2.1 Diseño general de la aplicación .......................................................69

    5.2.2 Captura de audio y procesado .........................................................71

    5.2.3 Integración en Android del sistema implementado en MATLAB .......73

    5.2.4 Actividades, fragmentos, servicios y clases de la aplicación ............76

    5.2.5 Interfaz de usuario ...........................................................................77

    6 Testeo del sistema implementado en android ...........................................83

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

    8 Bibliografía ...................................................................................................92

    9 Anexos ..........................................................................................................96

    9.1 Manual de instalación ............................................................................96

    9.2 Manual de usuario .................................................................................97

  • 5

    ÍNDICE DE FIGURAS

    Figura 2.1. Curvas de Fletcher y Munson [1] ........................................................13

    Figura 2.2 Espectrograma de un sonido armónico [14] .........................................14

    Figura 2.3 Espectrograma de un sonido inarmónico [14] ......................................15

    Figura 2.5. Ventanas comúnmente utilizadas [3]. .................................................16

    Figura 2.6. Comportamiento de las ventanas en frecuecnia con M=50. a)

    Rectangular. b) Barlett. c) Hanning. d) Hamming [3] ........................................................17

    Figura 2.7. Espectrograma de una respiración vesicular normal [10]. ...................18

    Figura 2.8. Espectrograma de respiración con sibilancias [10]. ............................20

    Figura 2.9. Espectrograma de una respiración con crepitantes finos (fine crackle)

    [10]. .................................................................................................................................21

    Figura 2.10. Representación temporal de una sibilancia monofónica [13]. ...........22

    Figura 2.11. Representación temporal de una sibilancia polifónica [13]. ...............22

    Figura 2.12. Espectrograma del sonido (izquierda) y espectrograma de potencia

    (derecha) de un sonido polifónico [12]. ............................................................................23

    Figura 4.1. Esquema del método propuesto en [15] .............................................26

    Figura 4.2. a) Magnitud del espectrograma 𝑋 de una señal mezcla x(t). b) Detección

    ideal de sibilancia 𝛿𝑤. c) Espectro estimado de sibilancia 𝑋𝑊, d) 𝑑𝐾𝐿(𝑋|𝑋𝑤). e)

    Espectrograma estimado de la respiración 𝑋𝑅. f) 𝑑𝐾𝐿(𝑋|𝑋𝑤) [15] ...................................27

    Figura 4.3. Diagrama de bloques des algoritmo de clasificación [16]. ...................28

    Figura 4.4. Diagrama de flujo del método propuesto [10] .....................................29

    Figura 4.5. Esquema del sistema propuesto en [17] .............................................30

    Figura 4.6. Espectrograma de: a) respiración normal, b) crepitaciones, c) sibilancias

    [17] ..................................................................................................................................30

    Figura 4.7. a) Espectograma de una respiración normal. b) Espectrograma de una

    respiración sibilancias polifónicas [18] .............................................................................31

    Figura 4.8. Diagrama de bloques del método propuesto en [18] ...........................32

    Figura 4.9. Diagrama de bloques del método propuesto en [19] ...........................33

    Figura 4.10. Sistema propuesto en [20]. a) Aplicación móvil desarrollada. b)

    Adquisición de datos en un paciente ................................................................................34

    Figura 4.11. Esquema propuesto para auscultación remota en [21] .....................35

    Figura 4.12. AsthmaMD. Aplicación y medidor de flujo [22]. .................................35

    Figura 4.13. Dispositivo para la monitorización de sibilancias: Wheezo [23]. ........36

    Figura 4.14. Cuota de mercado en teléfonos móviles por Sistema Operativo en 2020

    [24] ..................................................................................................................................36

    Figura 5.1. Esquema de la metodología propuesta...............................................38

  • 6

    Figura 5.2. Espectrograma señal respiración con sibilancias, “M01_p5dB.wav”. ..40

    Figura 5.3. Espectrograma señal respiración con sibilancias, “M09_0dB.wav” .....41

    Figura 5.4. Ejemplo de matriz "picos" (frames 11 a 20) para “M01_p5dB.wav” .....43

    Figura 5.5. Ejemplo de matriz "picos_ind" (frames 11 a 20) para “M01_p5dB.wav”

    ........................................................................................................................................43

    Figura 5.6. Ejemplo de matriz "picos_frec" (frames 11 a 20) para “M01_p5dB.wav”

    ........................................................................................................................................43

    Figura 5.7. Espectrograma con los picos detectados en “M01_p5dB.wav” ...........44

    Figura 5.8. Espectrograma con los picos detectados en “M09_0dB.wav” .............45

    Figura 5.9. Ejemplo de matriz "trayectorias" (frames 11 a 20) para M01_p5dB.wav

    ........................................................................................................................................48

    Figura 5.10. Espectrograma con trayectorias detectadas en “M01_p5dB.wav” .....48

    Figura 5.11. Espectrograma con segunda sibilancia sin interpolar de

    “M09_0dB.wav” ................................................................................................................49

    Figura 5.12. Matriz "trayectorias", frames 482 a 487 ............................................50

    Figura 5.13. Matriz "trayectorias_frec", frames 482 a 487 .....................................50

    Figura 5.14. Resultado primera interpolación, matriz “trayectorias” frames 482 a 487

    ........................................................................................................................................50

    Figura 5.15.Resultado primera interpolación, matriz “trayectorias_frec” frames 482

    a 487 ...............................................................................................................................50

    Figura 5.16. Resultado segunda interpolación, matriz "trayectorias" frames 482 a

    487 ..................................................................................................................................51

    Figura 5.17. Resultado segunda interpolación, matriz "trayectorias_frec” frames 482

    a 487 ...............................................................................................................................51

    Figura 5.18. Espectrograma con segunda sibilancia interpolada de “M09_0dB.wav”

    ........................................................................................................................................51

    Figura 5.19. Espectrograma con trayectorias detectadas en M09_0dB.wav .........52

    Figura 5.20. Matriz “sibilancias_info” para M01_p5dB.wav ...................................53

    Figura 5.21. Espectrograma con sibilancias detectadas en M01_p5dB.wav .........54

    Figura 5.22. Espectrograma con sibilancias detectadas en “M09_0dB.wav” ........55

    Figura 5.23. Matriz "sibilancias_info" que será empleada en Android para

    M01_p5dB.wav ................................................................................................................55

    Figura 5.24. Señal de audio "M01_p5dB.wav" ......................................................57

    Figura 5.25. Últimos 2 segundos de audio señal "y_Final" para "M01_p5dB.wav” 57

    Figura 5.26. Señal de audio "y_Final" para "M01_p5dB.wav" ...............................58

    Figura 5.27. Ejemplo de matriz "y_Sibilancias" para "M01_p5dB.wav" ................58

    Figura 5.28. Ejemplo de vector "sibilancia_referencia" frames 17 al 27 ................61

  • 7

    Figura 5.29. Ejemplo de vector "sibilancas_detectada" frames 17 al 27 ...............62

    Figura 5.30. Ejemplo de un segmento de la tabla generada con los resultados de la

    evaluación. ......................................................................................................................63

    Figura 5.31. Resultados a nivel de sibilancia para SNR=0dB audio "M09_p0dB.wav"

    ........................................................................................................................................66

    Figura 5.32. Resultados a nivel de sibilancia para SNR=5dB audio "M09_0dB.wav"

    ........................................................................................................................................67

    Figura 5.33. Inferfaz MATLAB Coder ....................................................................68

    Figura 5.34. MATLAB Coder. "Check for Run-Times Issues" ...............................68

    Figura 5.35. Diagrama de flujo principal de la aplicación. .....................................70

    Figura 5.36. Extracto del archivo AndroidManifest.xml con los permisos de acceso

    ........................................................................................................................................71

    Figura 5.37. Estructura de un fichero .wav [33]. ....................................................72

    Figura 5.38. Ejemplo de la información almacenada en fichero .txt ......................73

    Figura 5.39. Extracto del directorio "cpp”. .............................................................74

    Figura 5.40. Definición del nombre de la librería y ficheros que la componen. ......74

    Figura 5.41. JNI en “Algoritmo.c” ..........................................................................75

    Figura 5.42. Cargar librería en RecordAndSave.java ............................................75

    Figura 5.43. Método “getWheezes()” en RecordAndSave.java .............................75

    Figura 5.44. Actividades, fragmentos, servicios y clases de la aplicación .............76

    Figura 5.45. Splash screen ..................................................................................78

    Figura 5.46. Pantalla de monitorización 1 .............................................................79

    Figura 5.47. Pantalla de Monitorización 2 .............................................................79

    Figura 5.48. Pantalla de monitorización 3 .............................................................80

    Figura 5.49. Pantalla Ruta de Grabación ..............................................................80

    Figura 5.50. Pantalla Instrucciones de uso ...........................................................81

    Figura 5.51. Menú de navegación ........................................................................82

    Figura 6.1. Segmento de la carpeta ......................................................................83

    Figura 6.2. Extracto de las cinco primeras sibilancias detectadas en la prueba ....85

    Figura 6.3.Resultados obtenidos para sibilancia nº 6 ...........................................88

    Figura 6.4. Resultados obtenidos para sibilancia nº 7 ..........................................89

    Figura 6.5. Resultados obtenidos para sibilancia nº 8 ..........................................89

    Figura 6.6. Resultados obtenidos para sibilancia nº 9 ..........................................89

    Figura 9.1 Depuración USB ..................................................................................96

    Figura 9.2 Botón "Run app" ..................................................................................96

    Figura 9.3. Splash Screen. Pantalla visualizada al abrir la aplicación en su

    dispositivo móvil. ..............................................................................................................97

  • 8

    Figura 9.4. Permiso lectura y escritura .................................................................97

    Figura 9.5. Permiso de acceso al micrófono .........................................................97

    Figura 9.6.Cambios en la pantalla de monitorización. ...........................................98

    Figura 9.7. Menú de navegación ..........................................................................99

    Figura 9.8. Pantalla "Ruta de grabación" ............................................................ 100

    Figura 9.9. Pantalla "Instrucciones de uso" ........................................................ 100

  • 9

    ÍNDICE DE TABLAS

    Tabla 5.1. Configuraciones con métricas más altas para 0 dB. ............................63

    Tabla 5.2. Configuraciones con métricas más altas para 5 dB .............................64

    Tabla 5.3. Configuración óptima ...........................................................................65

    Tabla 5.4. Métricas finales obtenidas para la configuración óptima ......................65

    Tabla 6.1. Caracterización sibilancias en evento sonoro 1 ...................................84

    Tabla 6.2. Caracterización de sibilancias en evento sonoro 2 ..............................84

    Tabla 6.3. Caracterización de sibilancias en evento sonoro 3 ..............................85

    Tabla 6.4. Resultados de la evaluación Android ...................................................87

  • 10

    1 RESUMEN

    En este Trabajo de fin de grado se propone la creación de una aplicación Android

    de monitorización capaz de detectar sibilancias presentes en las señales de audio

    respiratorias capturadas de forma continua con el micrófono del dispositivo móvil. El

    método de detección de sibilancias, desarrollado en MATLAB, se basa en el análisis

    espectral de la señal a partir del cálculo de la Transformada en Tiempo Corto de Fourier

    (STFT) para la identificación de trayectorias espectrales que serán determinadas como

    sibilancias si cumplen con las características en tiempo y frecuencia de los sonidos

    sibilantes. Finalmente, este algoritmo será convertido a C e integrado en la aplicación móvil

    programada en Java de tal forma que permitirá al usuario llevar a cabo la monitorización

    de sibilancias.

  • 11

    2 INTRODUCCIÓN

    La auscultación sigue siendo el principal proceso llevado a cabo en los centros

    sanitarios para estudiar el estado de salud de las vías respiratorias y de los pulmones. Sin

    embargo, la aparición de sibilancias severas que reflejan un desorden pulmonar suele

    agudizarse durante la noche, momento en el que el paciente se encuentra en su hogar y

    no es posible analizarlo por parte del médico. Como consecuencia, cuando una persona

    con sibilancias severas acude a la consulta puede que no presente estas sibilancias

    durante la auscultación, siendo redirigida a su hogar en lugar de a un examen más

    exhaustivo.

    En este Trabajo Fin de Grado se presenta una app basada en Android que permite

    una monitorización continua durante la noche para detectar sibilancias severas no

    enmascaradas por la respiración mediante el uso de un smartphone. De esta forma, se

    podrá aportar al médico en consulta señales sonoras con las sibilancias detectadas durante

    la noche, reduciendo así el número de personas con este tipo de patologías que no pueden

    ser correctamente diagnosticadas.

    Previamente a la captura de señales sonoras y detección de sibilancias en ellas, es

    necesario conocer algunas de las características más relevantes del sonido, así como los

    aspectos que permiten identificar y diferenciar las sibilancias respecto a otros sonidos

    respiratorios.

    2.1 Caracterización del sonido

    El sonido es una vibración mecánica que se transmite a través de un medio elástico

    (como el aire o el agua), produciendo pequeñas variaciones de presión en torno a la presión

    estática del medio, que generan una sensación auditiva al ser percibidos por el oído. Las

    ondas acústicas se propagan en la misma dirección que la presión, por lo que son

    denominadas longitudinales, a diferencia de las ondas electromagnéticas que son

    transversales, al propagarse en dirección perpendicular al campo eléctrico y magnético.

    El término de onda sonora hace referencia a las ondas acústicas con frecuencia

    comprendida dentro del rango audible o próxima a este, siendo este el comprendido entre

    15 Hz y 20 KHz [1].

    La onda acústica está definida en cada punto del medio elástico por el que se

    propaga por dos magnitudes físicas: la presión y la velocidad molecular (velocidad de

    desplazamiento o vibración de las partículas del medio).

    Además, se puede caracterizar por otros parámetros físicos tales como frecuencia

    fundamental, duración, timbre e intensidad.

  • 12

    2.1.1 Frecuencia fundamental, duración, intensidad y timbre.

    Frecuencia fundamental

    Se denomina frecuencia (𝑓) al número de vibraciones por segundo de una onda

    acústica, medida en Hz. Se trata por tanto, de la inversa del periodo (𝑇) definido como el

    tiempo en el que una onda realiza una vibración u oscilación completa.

    La frecuencia fundamental se corresponde con la más baja del espectro y se

    conocerán como armónicos de esta aquellas frecuencias múltiplos enteros de la misma (1).

    𝑓𝑛(𝐻𝑧) = 𝑛 ∙ 𝑓0 𝑛 > 0 ∈ 𝑁 (1)

    Duración

    La duración de un sonido es el tiempo en el que permanece la vibración de una

    onda sonora y, por tanto, el tiempo en el que este está activo.

    Intensidad

    La intensidad sonora mide la potencia acústica por unidad de área, perpendicular a

    la dirección de propagación. El parámetro más común para cuantificarla es el nivel de

    presión sonora, SPL (Sound Pressure Level) [2], que relaciona la presión de un sonido

    respecto a la presión de referencia dada por el umbral de audibilidad del ser humano.

    𝑆𝑃𝐿 (𝑑𝐵) = 20 𝑙𝑜𝑔10 (𝑝𝑟𝑚𝑠 [𝑃𝑎]

    𝑝𝑜[𝑃𝑎]) , siendo 𝑝𝑜 = 20 ∙ 10

    −6 𝑃𝑎 (2)

    Sin embargo, el oído no percibe igual todas las variaciones de presión que ocurran,

    sino que dependerá de la duración del sonido y de su frecuencia, como consecuencia de

    la sensibilidad del oído a distintas frecuencias. Así, aparece el parámetro subjetivo de

    sonoridad, medido en fonios, y obtenido para cada sonido en función de cómo es percibido

    un sonido por un oyente promedio. En la figura 2.1 se representan contornos con igual

    sonoridad para tonos puros, denominadas curvas isofónicas, que muestran el nivel de

    presión sonora en dB respecto a la frecuencia. Se observa que las curvas presentan unos

    niveles más bajos en la región en torno a 3000 y 4000 Hz, justificado porque esta banda

    de frecuencias es la banda de mayor sensibilidad del oído, lo que se traduce en un menor

    nivel de presión sonora necesaria para obtener el mismo volumen (sonoridad), medido en

    fonios.

  • 13

    Figura 2.1. Curvas de Fletcher y Munson [1]

    Timbre

    Es la cualidad del sonido que nos permite distinguir entre sonidos de igual,

    intensidad y duración procedentes de diferentes fuentes sonoras, es decir, permiten

    identificar las características de la fuente. Está relacionado con la envolvente espectral

    (intensidad relativa de los parciales), con la envolvente dinámica y con los transitorios.

    2.1.2 Sonido monocanal, estéreo y multicanal

    Los sonidos también pueden clasificarse en monocanal, estéreo y multicanal.

    Sonido monocanal

    Se trata del resultado de la suma de todas las fuentes o canales en uno solo. Por

    tanto, carece de información espacial, no siendo posible determinar el número de fuentes

    empleadas para su grabación.

    Sonido estéreo

    Formado por dos canales grabados con diferentes micrófonos de forma

    independiente. De esta forma, a diferencia del sonido monocanal presenta información

    espacial. Generalmente estos canales se corresponden con izquierdo y derecho.

  • 14

    Sonido multicanal

    Compuesto por cuatro o más canales grabados de forma independiente, tratando

    de conseguir un sonido envolvente. Al igual que el sonido estéreo es posible extraer

    información espacial de él.

    2.1.3 Sonido armónico e inarmónico

    Atendiendo a la periodicidad, un sonido se puede clasificar en armónico o

    inarmónico.

    Sonido armónico

    Se trata de señales con una forma de onda constante y periódica o cuasi-periódica.

    Las componentes espectrales se encuentran equiespaciadas con una separación

    aproximada a la frecuencia fundamental (𝑓0).

    Figura 2.2 Espectrograma de un sonido armónico [14]

    Sonido inarmónico

    Por el contrario, no presentan una forma de onda periódica. El espectro también

    tiene un carácter discreto con picos en las frecuencias correspondientes a cada parcial,

    pero estas carecen de relación entre sí.

  • 15

    Figura 2.3 Espectrograma de un sonido inarmónico [14]

    2.2 Representación tiempo frecuencia: espectrograma

    La Transformada de Fourier es una herramienta muy útil para conocer la energía

    de cada componente en frecuencia de una señal. Sin embargo, tiene un gran inconveniente

    y es que carece de información temporal, por lo que no es válida para señales no

    estacionarias, que suponen la mayoría de los casos.

    Por ello, se recurre a la Transformada en Tiempo Corto de Fourier (STFT, Short

    Time Fourier Transform) que consiste en el enventanado de la señal para realizar el cálculo

    de la Transformada de Fourier en cada una de ellas. Así se obtiene el espectrograma, que

    representará la frecuencia en el eje de ordenadas y el tiempo en el eje de abscisas.

    En lo que nos concierne en este trabajo, la información temporal también debe

    considerarse ya que para establecer si una concentración alta de energía presente en el

    espectro se trata de una sibilancia, esta tendrá que cumplir tanto con requisitos temporales

    como en frecuencia, que serán detallados en apartados posteriores. Esto hace que el uso

    del espectrograma en este ámbito sea de gran relevancia.

    En este caso, se hará referencia a la STFT en tiempo discreto pues se trabaja con

    señales de audio muestreadas.

    Para obtener las distintas tramas en las cuales se calcula la Transformada de

    Fourier se realiza un enventanado de la señal. Las ventanas podrán ser de distinto tipo

    cumpliendo con la ecuación (3), siendo 𝐿 la longitud de la ventana en muestras.

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

    (3)

  • 16

    El cálculo de la STFT en tiempo discreto, 𝑋(𝑚, 𝑤) , siendo 𝑥[𝑛] la señal discreta a

    la que se le aplica la STFT y 𝑤[𝑛] la función correspondiente a la ventana que realizará la

    segmentación de la señal en tramas, se obtiene con la ecuación (4).

    𝑋(𝑚, 𝑤) = ∑ 𝑥[𝑛] ∙ 𝑤[𝑛 − 𝑚] ∙ 𝑒−𝑗𝑤𝑛∞𝑛=−∞ , 𝑠𝑖𝑒𝑛𝑑𝑜 𝑤 = 2𝜋𝑓 (4)

    Al seleccionar la ventana y su tamaño en muestras es necesario tener en cuenta

    que esto afectará a la resolución temporal y en frecuencia de la señal. La resolución en

    frecuencia se corresponde con la distancia mínima en muestras de dos frecuencias para

    que sea posible distinguirlas tras aplicar el enventanado.

    Una ventana con un menor número de muestras, es decir, una ventana más

    estrecha, ofrecerá una mejor resolución temporal pues cada trama representa a un menor

    número de muestras. Sin embargo, en frecuencia el lóbulo de la ventana será mayor,

    empeorando la resolución en frecuencia al ser necesaria una mayor separación entre

    frecuencias para que puedan ser diferenciadas. Es por ello que la opción óptima dependerá

    de la aplicación.

    Por su parte, cada tipo de ventana presenta unas características diferentes en

    cuanto al ancho del lóbulo principal y laterales. Una ventana más suave en tiempo presenta

    unos lóbulos laterales en frecuencia más atenuados. Entre las más empleadas se

    encuentran la ventana de Hanning, Hamming o Blackman.

    Así, es posible observar en la figura 2.4 y figura 2.5, cómo la ventana rectangular

    es la que presenta una caída más abrupta en tiempo, dando lugar en frecuencia a unos

    lóbulos laterales mayores (figura 2.5 a)), mientras que la ventana de Hanning cuya

    respuesta temporal es más suave, en frecuencia sus lóbulos laterales son menores y

    decaen de forma más rápida con el aumento de la frecuencia (figura 2.5 c)).

    En el desarrollo de este Trabajo de Fin de Grado se ha empleado la ventana de

    Hanning.

    Figura 2.4. Ventanas comúnmente utilizadas [3].

  • 17

    Figura 2.5. Comportamiento de las ventanas en frecuecnia con M=50. a) Rectangular. b) Barlett. c) Hanning. d) Hamming [3]

    Por otro lado, el espectrograma que se empleará en este proyecto se corresponderá

    con el módulo del resultado obtenido al aplicar la STFT a la señal de audio muestreada de

    entrada (5). En el método desarrollado para la detección de sibilancias la fase no es

    relevante, puesto que se basa en la búsqueda de energía concentrada en torno a cierta

    frecuencia que puede oscilar dentro de unos límites y que tiene una determinada

    continuidad temporal. Es por ello que la fase solo será considerada para la síntesis de

    audio realizada a la finalización del proceso de detección.

    𝑌(𝑚, 𝑤) = |𝑋(𝑚, 𝑤)| (5)

    2.3 Sonidos pulmonares

    2.3.1 Sonidos respiratorios normales

    Los sonidos respiratorios normales (RS) son aquellos emitidos por pulmones sanos.

    Están caracterizados por un espectro de banda ancha con una mayor concentración de

    energía en el rango de los 60 a 1600 Hz [4], aunque pueden alcanzar los 4000 Hz [9].

    Es por ello por lo que, para cumplir con el Teorema de Nyquist-Shannon (6) se

    empleará una frecuencia de muestreo de 8000 Hz para todos los audios.

    𝑓𝑠 > 2 ∙ 𝑓𝑚𝑎𝑥 (6)

  • 18

    A continuación, se realiza una clasificación en función de la localización de los

    mismos [5].

    Sonido vesicular

    Caracterizado por ser suave, no musical (no periódico). Puede apreciarse durante

    la auscultación sobre los pulmones. Es un sonido con una duración e intensidad inferior en

    la espiración que en la inspiración en la que se extiende por toda la fase. Sin embargo, por

    su naturaleza, solo puede escucharse en la espiración. Asimismo, en condiciones normales

    no presenta una pausa entre la inspiración y la espiración. Se encuentran en el rango de

    frecuencia comprendido entre 100 y 1000 Hz, aunque generalmente son más energéticos

    hasta los 200 Hz.

    En la figura 2.6 se muestra como ejemplo el espectrograma de una respiración

    vesicular normal. Se observa que la energía de las trayectorias continuas que puedan

    existir en la banda de frecuencias media-alta para la que están definidos estos sonidos

    (identificadas con flechas verticales), decaerá con la frecuencia, siendo su energía respecto

    a la respiración poco diferenciable. Sin embargo, en la baja frecuencia inferior a los 100 Hz

    (flecha horizontal) se observa la existencia de una mayor concentración de energía

    correspondiente a sonidos del corazón y de los músculos que intervienen en la respiración.

    Figura 2.6. Espectrograma de una respiración vesicular normal [10].

  • 19

    Sonido bronquial

    Es audible sobre las vías respiratorias grandes. A diferencia del sonido vesicular si

    presenta una pausa entre espiración e inspiración y presenta una mayor intensidad. Puede

    alcanzar frecuencias superiores al sonido vesicular, extendiéndose desde los 100 a los

    1500 Hz.

    Sonido broncovesicular

    Es posible escucharlo en la parte alta de la espalda, entre la escápula y en la parte

    central del pecho y tiene una duración similar en la fase inspiratoria y espiratoria. El rango

    de frecuencias es intermedio a los de los sonidos respiratorios anteriores.

    Sonido traqueal

    Se caracteriza por ser un sonido áspero y muy audible. Presenta igual duración en

    ambas fases de la respiración con una pausa muy apreciable entre ambas. Se extiende

    desde los 100 Hz a los 1500 Hz con una caída de energía en los 800 Hz. No obstante, en

    ocasiones puede alcanzar los 5000 Hz.

    Sonido producido por la boca

    Es silencioso para una persona sana, siendo una mayor audibilidad un indicador de

    problemas respiratorios, como son el asma o bronquitis crónica. Para personas con dichas

    enfermedades puede ser muy audible incluso a cierta distancia. Presenta una distribución

    en frecuencia similar al del ruido blanco, en el rango de los 200 a los 2000 Hz.

    2.3.2 Sonidos adventicios

    Son aquellos que se superponen a la respiración normal y pueden ser indicadores

    de distintas enfermedades respiratorias. Es posible clasificarlos en dos grupos: sonidos

    adventicios continuos y sonidos adventicios discontinuos.

    Sonidos adventicios continuos (CAS)

    Se consideran continuos aquellos sonidos adventicios con una duración superior a

    80 o 100 ms [7], o 250 ms [5], en función de la fuente consultada. A su vez, en función del

    tono pueden clasificarse como sibilancias (high-pitched) o Rhonchi (low-pitched).

    Ambos sonidos presentan un comportamiento que podría considerar senoidal, con

    frecuencias comprendidas entre los 100 y 1000 Hz [5], si bien los Rhonchi presentan una

    frecuencia fundamental más baja, en torno a los 200 Hz, mientras que las sibilancias

    pueden alcanzar frecuencias mayores. Son generalmente sonidos armónicos.

  • 20

    Entre las enfermedades que pueden asociarse con estos sonidos son asma y la

    enfermedad pulmonar obstructiva crónica (EPOC).

    En la figura 2.7 se representa el espectrograma de una respiración con sibilancias

    en el intervalo 1.55 a 1.85 segundos aproximadamente, con una frecuencia fundamental

    entorno a los 400 Hz. Tal y como se ha mencionado, se presentan en el espectrograma

    formando líneas horizontales, representando una alta energía durante un tiempo superior

    al mínimo establecido de 80, 100 o 250 ms en una banda estrecha de frecuencias.

    Figura 2.7. Espectrograma de respiración con sibilancias [10].

    Sonidos adventicios discontinuos (DAS)

    Se diferencian de los sonidos adventicios continuos en la duración, siendo estos

    inferiores a 25 ms [5]. Es posible clasificarlos según su origen en: crepitantes finos (fine

    crackles) y crepitantes gruesos (Coarse crackles).

    Los crepitantes finos son producidos por aperturas en las vías respiratorias

    pequeñas y se caracterizan por una muy corta duración, de unos 5 ms, una alta frecuencia,

    en torno a 650 Hz y es un sonido no musical. Solo son audibles durante la inspiración.

    Pueden estar relacionados con enfermedades como la neumonía y la fibrosis pulmonar.

    Los crepitantes gruesos son producidos por burbujas de aire en los bronquios y

    presentan una duración próxima a 15 ms y una frecuencia fundamental de 350 Hz. Están

    relacionados con enfermedades como la bronquitis, la bronquitis crónica y EPOC.

    Un ejemplo de sonidos crepitantes, concretamente crepitantes finos, se muestra en

    la figura 2.8. Se presentan en frecuencias significativamente superiores al resto de sonidos

    adventicios mencionados. A diferencia de las sibilancias, los crepitantes pueden

  • 21

    identificarse en el espectrograma como concentraciones de energía que forman líneas

    verticales, tratándose de sonidos de una duración muy reducida y abarcando una amplia

    banda de frecuencias.

    Figura 2.8. Espectrograma de una respiración con crepitantes finos (fine crackle) [10].

    2.3.2.1 Sibilancias

    Las sibilancias son un tipo de sonido adventicio continuo audible durante la

    respiración. En tiempo presentan un comportamiento senoidal y en frecuencia un conjunto

    de picos de banda estrecha que forman líneas de frecuencia sobre el tiempo, observándose

    en el espectrograma líneas aproximadamente horizontales. Pueden encontrarse en la

    banda de los 100 a 1000 Hz y una duración mínima de 100 ms según el CORSA

    (Computarized Respiratory Sound Analysis) [6] o de 250 ms en base a la ATS (American

    Thoracic Society) [8].

    Uno de los mayores problemas que se encuentra en la búsqueda de las

    características que definen las sibilancias es la disparidad de valores encontrados. Como

    se ha visto, la duración mínima de las sibilancias es definida como 250 ms, 100 ms e incluso

    80 ms, en distintas fuentes. Con la frecuencia fundamental ocurre lo mismo. Para la ATS

    establece que es de mínimo 225 Hz en niños y de 400 Hz en adultos, mientras que en el

    CORSA se considera una frecuencia fundamental mínima de 100 Hz.

    La detección de las mismas es muy importante para diagnosticar múltiples [8]

    enfermedades pulmonares como el asma o la bronquitis. Su localización, duración y su

    relación con respecto al total del ciclo respiratorio también son aspectos que ayudan al

    médico en la distinción de sibilancias [11].

    A su vez, las sibilancias pueden clasificarse en monofónicas o polifónicas [12].

  • 22

    Una sibilancia monofónica es aquella que presenta un único pico en frecuencia o

    una frecuencia fundamental y sus armónicos. Este tipo de sibilancias indican un

    estrechamiento de las vías aéreas largas. La forma de su onda en tiempo se encuentra en

    la figura 2.9.

    Figura 2.9. Representación temporal de una sibilancia monofónica [13].

    Por el contrario, una sibilancia polifónica presenta picos adicionales que difieren en

    frecuencia de sus armónicos. Las sibilancias polifónicas indican una anomalía en las vías

    cortas, como ocurre en los pacientes con asma. Su forma en tiempo se representa en la

    figura 2.10.

    Figura 2.10. Representación temporal de una sibilancia polifónica [13].

    En la figura 2.11, se muestra el espectrograma de sonido durante un ciclo

    respiratorio completo (izquierda). Se representa a la derecha su espectrograma de

    potencia para el instante en el que se observa un pico en la fase de expiración, apreciando

    que, además del pico presente en la frecuencia fundamental, 230 Hz, y sus armónicos,

  • 23

    existen picos más energéticos incluso que los armónicos de dicha sibilancia a partir de 500

    Hz, lo que implica que se trata de un sonido polifónico.

    Figura 2.11. Espectrograma del sonido (izquierda) y espectrograma de potencia (derecha) de un sonido polifónico [12].

  • 24

    3 OBJETIVOS

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

    aplicación en Android que permita una monitorización continua de sibilancias severas, no

    enmascaradas por sonidos respiratorios normales, mediante la captura de señales sonoras

    directamente a partir del micrófono integrado en un smartphone. A partir de estas señales

    sonoras y mediante un algoritmo desarrollado inicialmente en MATLAB que posteriormente

    será migrado a la plataforma Android se determinará la presencia de sibilancias.

    A continuación, se detallan los objetivos secundarios necesarios para alcanzar este

    objetivo principal.

    Recopilación y estudio de material bibliográfico relacionado con la captura de audio

    en smartphones basados en Android.

    Recopilación y estudio de material bibliográfico relacionado con la detección de

    sibilancias sonoras.

    Implementación y evaluación del algoritmo de detección de sibilancias en MATLAB.

    Creación de una base de datos adecuada al problema.

    Implementación del sistema propuesto en Android.

    Diseño de una aplicación basada en Android para captura y procesado de audio.

    Integración del algoritmo de detección de sibilancias en Android.

  • 25

    4 ESTADO DEL ARTE

    4.1 Detección de sibilancias

    Actualmente, son diversos los métodos existentes para la detección de sibilancias.

    Asimismo, se observa que no existe un consenso en cuanto a los parámetros que definen

    las sibilancias, tales como duración o frecuencia de oscilación, principalmente porque estos

    dependerán de la edad, de la capacidad pulmonar, etc. A continuación, se presentan

    algunos de los estudios realizados en este ámbito.

    En [15], se presenta un método de detección de sibilancias basado en la

    factorización de matrices no negativas (Non-negative Matrix Factorization, NMF) que

    permite separar los sonidos respiratorios de las sibilancias de un mismo audio. En este

    caso, basándose en el CORSA se establece el rango de frecuencia de las sibilancias de

    100-1000 Hz y la duración mínima de 100 ms. El proceso llevado a cabo puede dividirse

    en dos etapas tal y como se aprecia en el esquema de la figura 4.1, una primera etapa de

    separación de respiración y sibilancias y la segunda etapa en la que se determina si los

    sonidos extraídos se corresponden o no con sibilancias finalmente.

    En la etapa de separación se persigue modelar las sibilancias y los sonidos

    respiratorios de la forma más fiel posible a cómo se presentan estos sonidos en la realidad

    de forma natural, estableciendo dos restricciones en la factorización de NMF: smoothness

    y sparseness. Esto se realiza a partir del espectrograma, obtenido aplicando la STFT con

    una ventana de Hamming de 256 muestras con un solape del 25% a 2048 kHz. De esta

    forma, las sibilancias son modeladas como bandas estrechas y los sonidos respiratorios

    como banda ancha y variación temporal lenta. En la segunda etapa de detección se emplea

    la divergencia Kullback-Leibler para discriminar entre sibilancias y respiración.

  • 26

    Figura 4.1. Esquema del método propuesto en [15]

    En la figura 4.2 (a) se muestra un ejemplo del espectrograma de una señal mezcla

    de sibilancias y respiración, en la c) se observa las sibilancias que han sido detectadas y

    extraídas, y en e) la respiración restante la respiración base. En las gráficas b) d) y f) se

    muestran los intervalos ideales donde deberían detectarse las sibilancias, y la divergencia

    de Kullback-Leibler para las sibilancias y respiración, respectivamente. Los resultados

    muestran una precisión (Accuracy) del 95,86%.

  • 27

    Figura 4.2. a) Magnitud del espectrograma 𝑋 de una señal mezcla x(t). b) Detección ideal de sibilancia 𝛿𝑤. c) Espectro estimado de sibilancia 𝑋�̂�, d) 𝑑𝐾𝐿(𝑋|𝑋�̂�). e) Espectrograma estimado de la respiración �̂�𝑅. f) 𝑑𝐾𝐿(𝑋|𝑋�̂�) [15]

    En el estudio realizado en [16] se presenta un clasificador automático entre sonidos

    adventicios continuos (CAS) y sonidos respiratorios normales (RS) mediante el análisis

    multiescala de la frecuencia intermedia (FI) y de la envolvente (IE), calculada tras la

    descomposición en modo empírico (EEMD). La clasificación se basa en que la dispersión

    FI de las señales disminuye considerablemente cuando existen sonidos adventicios

    continuos en la respiración. El método llevado a cabo se describe a continuación.

    En primer lugar, se extraen los segmentos candidatos a sonidos adventicios

    continuos (CAS) que se encuentran superpuestos a la respiración normal (etapa

    esquematizada en figura 4.3. Después, en cada segmento se realiza de nuevo una nueva

    comprobación para verificar si realmente se trata o no de CAS o respiración normal.

    Finalmente, el audio completo será determinado como respiración normal o que contiene

    CAS.

    Tras la detección de sibilancias se emplearán tres umbrales que serán optimizados

    para distinguir sonidos respiratorios y sibilancias a partir del resultado de la dispersión.

    Aplicando que los segmentos con CAS tienen una FI inferior a los sonidos respiratorios

    normales, los segmentos CAS son identificados calculando la dispersión FI 𝜎𝐹𝐼,𝑖 en cada

    intervalo considerado al aplicar una ventana deslizante de 125 muestras a 3125 Hz y un

  • 28

    solape del 92%, lo que supone una duración de 40 ms, menor que la mitad de la duración

    de una sibilancia considerada en este artículo (100 ms).

    A partir de estos valores 𝜎𝐹𝐼,𝑖 obtenidos y de unos umbrales establecidos

    empíricamente, los segmentos serán considerados sonidos adventicios o descartados.

    Por último, se debe comprobar si los segmentos clasificados como CAS pertenecen

    a la misma trayectoria o no, en basa a 𝜎𝐹𝐼,𝑖 y a la separación temporal que exista entre

    ellos.

    Figura 4.3. Diagrama de bloques des algoritmo de clasificación [16].

    Por otra parte, el estudio presentado en [10] se basa en la extracción de información

    a partir del espectrograma de forma dinámica que permita identificar sibilancias con un

    patrón de reconocimiento. En él, se considera una duración mínima de sibilancia de 100

    ms y una frecuencia mínima de 100 Hz.

    El software desarrollado y cuyo diagrama de flujo se presenta en la figura 4.4, parte

    del pre-procesado de las señales de audio de entrada, en el que se comprueba la

    frecuencia de muestreo. Para aquellas superiores a 9 kHz, se aplica un filtro paso bajo con

    frecuencia de corte de 4 kHz para evitar aliasing antes de remuestrear la señal.

    Posteriormente, se aplica un filtro paso alto con frecuencia de corte 4 kHz para eliminar la

    baja frecuencia que puede introducir interferencias a causa de otros sonidos respiratorios

    o sonidos del corazón.

  • 29

    Una vez la señal está completamente pre-procesada para disponer de señales lo

    más normalizadas posible e independientes de las condiciones de grabación de las

    mismas, se obtiene el espectrograma a partir de una STFT de 1024 puntos con un

    solapamiento del 60%, al que se aplicará procesado de imagen para aislar las líneas

    presentes en la imagen que podrán corresponderse con trayectorias sibilantes. Para ello,

    se aplica una máscara Laplaciana 9x9 junto con un umbral que será el 80% del máximo

    valor del espectrograma, descartando todos los valores inferiores.

    La información extraída será almacenada para mejorar el algoritmo de detección

    mediante una red neuronal.

    Figura 4.4. Diagrama de flujo del método propuesto [10]

    Con el objetivo de mejorar los resultados de la auscultación tradicional, en [17] se

    propone un sistema para procesar las señales grabadas mediante un microcontrolador. La

    clasificación de sonidos respiratorios se realiza mediante la Transformada de Wavelet en

    paquetes (WPT, Wavelet Packet Transform). En este artículo se considera para los sonidos

    crepitantes una duración inferior a 20 ms y una frecuencia en el rango de 100 a 2000 Hz y

    para las sibilancias una duración superior a 200 ms.

  • 30

    En el sistema propuesto, el micrófono se colocará en el pecho del paciente (Figura

    4.5) y la señal podrá ser procesada y clasificada antes de ser enviada a una estación

    remota en la cual se realice la monitorización de estos sonidos.

    Figura 4.5. Esquema del sistema propuesto en [17]

    La clasificación será realizada con ayuda de una red neuronal que, gracias al

    entrenamiento, será más robusta. Asimismo, de forma preliminar se muestra en este

    artículo (figura 4.6) los espectrogramas correspondientes a una respiración normal (a), con

    crepitaciones (b) y con sibilancias (c) observando que estos sonidos poseen características

    de tiempo y frecuencia que les diferencia en base a las cuales poder clasificarlos.

    Respecto al pre-procesado de la señal también destacan la necesidad de

    normalizar la señal para reducir la variabilidad entre diferentes grabaciones.

    Figura 4.6. Espectrograma de: a) respiración normal, b) crepitaciones, c) sibilancias [17]

  • 31

    Los artículos [18] y [19] que se detallan a continuación son en los que se basa

    principalmente el método de detección de sibilancias de este Trabajo Fin de Grado.

    En [18] se propone un software para la detección de sibilancias basado en el

    análisis espectral. Las características que representan a las sibilancias para este artículo

    son 250 ms de duración mínima y una frecuencia en el rango de 225 a 800 Hz. En la figura

    4.7 se representa el espectrograma de una respiración normal (a) y una respiración con

    sibilancias polifónicas (b).

    Figura 4.7. a) Espectograma de una respiración normal. b) Espectrograma de una respiración sibilancias polifónicas [18]

    El método propuesto (figura 4.8) comienza con la estandarización de las señales de

    entrada mediante normalización y remuestreo de las mismas a 5500 Hz, con el objetivo de

    que las condiciones de grabación no influyan en el resultado. Para obtener el

    espectrograma, se emplea una ventana de Hanning de 50 ms con un solape del 50%. Tras

    aplicar la FFT, solo se almacenan los tres picos de mayor energía de cada frame que

    superen un umbral determinado empíricamente y que pertenezcan al rango de frecuencias

    considerado (225-800 Hz). A continuación, para que estos picos sean considerados parte

  • 32

    de una misma sibilancia, los picos de un frame y de sus frames vecinos deberán cumplir

    con una diferencia de frecuencia no superior a 30 Hz. En caso contrario, serán descartados.

    En los picos en los que sí se cumpla la condición anterior, se comprueba si la agrupación

    de picos creada es superior a 250 ms, para considerar que se ha detectado una sibilancia.

    Los resultados obtenidos muestran que el algoritmo es capaz de detectar el 100%

    de las muestras con sibilancias, el 89% de las sibilancias monofónicas/polifónicas y un 60%

    las sibilancias sonoras.

    Figura 4.8. Diagrama de bloques del método propuesto en [18]

    En el método propuesto en [19] se realiza un proceso similar para la búsqueda de

    sibilancias basado en el análisis tiempo-frecuencia, pero además añade el concepto de

    efecto Haas como parámetro para determinar la cercanía en tiempo que deben cumplir los

    distintos picos detectados para ser considerados como parte de una misma trayectoria

    candidata a sibilancia.

    En este caso, no realiza un remuestreo previo, variando las frecuencias de entrada

    de los audios de prueba de 4000 Hz a 8012 Hz. El algoritmo parte del cálculo de la

    Transformada de Fourier de Tiempo Corto (STFT) de la señal y de la sustracción del sonido

    de fondo procedente del sonido respiratorio con un filtro de suavizado.

    En este caso, se opta por realizar una división entre distintas bandas de frecuencias

    para la detección de sibilancias, estableciendo en cada una de ellas un umbral de amplitud

    que deben cumplir los “bins” del espectrograma para ser considerados como picos. A

    continuación, se realiza la agrupación de los mismos basándose en la similitud de

    frecuencia entre trayectorias y el efecto Haas, por el que, si dos sonidos alcanzan el oído

  • 33

    con una diferencia inferior a 50 ms, serán interpretados como un único sonido por el

    cerebro.

    Finalmente, para las agrupaciones finales se comprueba si estas tienen una

    duración superior a 150 ms, siendo esta la duración mínima considerada en este artículo

    para una sibilancia. En caso afirmativo, se procederá a comprobar si la potencia de las

    posibles sibilancias es superior a un umbral definido como el cociente de la potencia de la

    posible sibilancia y la potencia total del sonido. De esta forma, se pretende descartar ruido

    que pueda cumplir con las características anteriores. Si este fuese el caso, la potencia del

    ruido sería muy inferior a la de las sibilancias, por lo que sería descartado.

    Figura 4.9. Diagrama de bloques del método propuesto en [19]

    4.2 Dispositivos móviles y salud

    La evolución de las TIC tiene un papel decisivo en el ámbito de la medicina, sobre

    todo en el tratamiento de pacientes crónicos, mejorando la monitorización y asistencia. Así,

    destacamos en este caso las m-Health como una variante de las e-Health (telemedicina),

    basada en la práctica de la medicina y la salud pública soportada por dispositivos móviles

    como teléfonos, dispositivos de monitorización de pacientes, asistentes digitales y otros

    dispositivos inalámbricos.

    De esta forma, se pretende aprovechar el avance de las TIC para mejorar las tareas

    de detección y monitorización de enfermedades entre otros. Además, dado que el

    dispositivo móvil es un elemento muy presente en la sociedad actual, los servicios

    implementados podrán tener un gran alcance. Así, es posible desarrollar herramientas de

    apoyo a las tareas de detección de enfermedades o monitorización de las mismas llevadas

    a cabo por profesionales, aportando información adicional que acelere el diagnóstico o que

    podría no producirse en la duración de una consulta médica convencional. Asimismo, estas

    aplicaciones también pueden estar dirigidas al personal sanitario como es el caso del

    sistema propuesto en [20].

    En este artículo, se presenta una aplicación móvil para la detección de sonidos

    crepitantes en pacientes con neumonía intersticial difusa (Diffuse Interstitial Pneumonia,

    DIP) para sustituir los estetoscopios tradicionales en la tarea de auscultación. El sistema

  • 34

    propuesto se compone de la aplicación móvil y de un micrófono electrect protegido para

    capturar los sonidos respiratorios (figura 4.10). La aplicación dispone de una lista con todos

    los pacientes y grabaciones realizadas, disponiendo del historial de pruebas realizadas en

    el propio dispositivo.

    Se propone realizar la grabación en diferentes puntos, al igual que en una

    auscultación tradicional. Así, al finalizar todas las grabaciones, se mostrará una imagen

    indicando el punto en el que se ha detectado el sonido crepitante, una gráfica que

    represente la grabación completa realizada indicando el segmento en el que ha sido

    detectado y un resumen de todas las crepitaciones detectadas durante el análisis completo.

    Figura 4.10. Sistema propuesto en [20]. a) Aplicación móvil desarrollada. b) Adquisición de datos en un paciente

    Respecto a la etapa de captura y procesado, se emplea una frecuencia de muestreo

    de 10 kHz y 16 bits por muestra para realizar la grabación, y como paso previo al procesado

    de audio, se aplica un filtrado paso banda entre 75 y 1000 Hz para reducir otros sonidos

    respiratorios o del corazón que puedan interferir en el resultado.

    Los resultados conseguidos para la detección de crepitantes finos reflejan una

    precisión entre el 84.86% y 89.16%, una sensibilidad entre 93.45% y 97.65%, y una

    especificidad del 99.82% al 99.84%, mientras que para crepitantes gruesos no se obtienen

    unos resultados satisfactorios.

    En el artículo [21] se presenta una solución para realizar la auscultación tradicional

    de forma remota a partir de la transmisión de las señales sonoras. El motivo de la necesidad

    de una auscultación remota es el mismo por el que en este Trabajo de Fin de Grado se

    pretende crear una aplicación que permita monitorizar las sibilancias, y es que en

    ocasiones algunos problemas respiratorios se acentúan durante la noche y pueden no

    ocurrir durante la auscultación en la consulta médica, por lo que su detección es

  • 35

    complicada. El esquema a seguir se basa en el uso de un estetoscopio en el que se inserta

    un auricular común de un dispositivo móvil con el objetivo de captar dicha señal con el

    dispositivo móvil del paciente para posteriormente ser enviado al dispositivo móvil del

    médico.

    Figura 4.11. Esquema propuesto para auscultación remota en [21]

    Por otro lado, AsthmaMD [22] es una aplicación móvil que permite a los pacientes

    con asma grabar y tener un registro de su flujo de pico. Asimismo, muestra

    automáticamente posibles desencadenantes de los resultados obtenidos, tales como

    alergia, polen o contaminación. Facilita a los pacientes la toma de la medicación mediante

    los recordatorios que pueden establecerse. En este caso, la aplicación está tanto orientada

    al paciente como al profesional sanitario con el objetivo de conseguir una monitorización

    de los pacientes. Para ello, es posible compartir los resultados obtenidos.

    Figura 4.12. AsthmaMD. Aplicación y medidor de flujo [22].

  • 36

    En relación con la monitorización de sibilancias aplicable a enfermedades

    respiratorias como el asma se presenta el dispositivo lanzado en 2019 por la empresa

    Respiri llamado Wheezo [23]. El dispositivo wheezo es el que realiza la monitorización de

    sibilancias y acompañado con una aplicación móvil, ofrece funciones similares a la

    aplicación AsthmaMD, como recordatorios para tomar la medición, síntomas y posibles

    causas de dichos problemas respiratorios. Por el momento no está disponible, pero se

    pretende incluir el efecto de las condiciones meteorológicas.

    Figura 4.13. Dispositivo para la monitorización de sibilancias: Wheezo [23].

    4.3 Sistemas operativos en dispositivos móviles

    Desde el nacimiento de los smartphones, estos han ido adquiriendo cada vez más

    peso en prácticamente todos los ámbitos cotidianos. Por ello, la monitorización que se

    pretende realizar se desarrollará para dispositivos móviles.

    No obstante, existen diferentes sistemas operativos que requieren el desarrollo de

    una aplicación diferente al menos en ciertos aspectos, aunque compartan similitudes. Por

    ello, para realizar la aplicación que aquí se presenta, se ha seleccionado el sistema

    operativo más extendido actualmente, Android, con una cuota de mercado muy superior a

    su inmediato competidor, iOS, como se puede observar en la figura 4.14.

    Figura 4.14. Cuota de mercado en teléfonos móviles por Sistema Operativo en 2020 [24]

  • 37

    5 IMPLEMENTACIÓN

    5.1 Implementación en MATLAB

    5.1.1 Desarrollo del algoritmo detector de sibilancias

    Uno de los bloques principales de este trabajo es el procesado de la señal de audio

    capturada por el micrófono del dispositivo móvil. Este procesado se realiza en MATLAB,

    para posteriormente ser migrado a C e integrado en Android. Para ello, se desarrolla un

    algoritmo capaz de identificar sibilancias, así como de realizar la síntesis de audio

    correspondiente a cada una de ellas para almacenar un fichero .wav en el dispositivo junto

    con un fichero de texto indicando la duración de las mismas, tiempo de ocurrencia y

    frecuencia. Asimismo, es necesario que este algoritmo sea capaz de ofrecer como

    parámetro de salida un audio con los dos últimos segundos de la señal de entrada, que en

    la aplicación móvil será la señal capturada, para poder realizar el procesado de forma

    continua sin perder información.

    La implementación del código capaz de detectar sibilancias está basada en los

    métodos definidos en [18] y [19], al cual se añade la síntesis del segmento final del audio

    formado por los dos últimos segundos, así como de las sibilancias que hayan sido

    detectadas en cada caso. El esquema propuesto en ese proyecto se muestra en la figura

    5.1 , que descrito por etapas será:

    1. Remuestreo de la señal a 8000 Hz y cálculo del espectrograma mediante la

    transformada rápida de Fourier (STFT, Short Time Fourier Transform).

    2. Obtención de los picos más significativos del espectrograma. En cada frame

    (cada columna del espectrograma, formada por todas las componentes en

    frecuencia de un instante temporal) serán buscados aquellos picos cuya

    diferencia respecto a picos vecinos sea superior a un determinado umbral que

    será optimizado en apartados posteriores.

    3. Creación de trayectorias a partir de los picos significativos detectados que

    cumplan con las características de cercanía en tiempo y frecuencia entre sí.

    4. Detección de sibilancias a partir de las trayectorias que cumplan con las

    características que definen una sibilancia en tiempo y frecuencia.

    5. Si existen sibilancias, obtención del audio correspondiente al segmento

    temporal donde se encuentra la sibilancia. En cualquier caso, se obtendrá la

    señal de audio correspondiente a los dos últimos segundos de grabación.

  • 38

    Figura 5.1. Esquema de la metodología propuesta.

  • 39

    5.1.1.1 Cálculo del espectrograma

    Como paso previo al cálculo del espectrograma, se obtiene la señal monocanal si

    esta fuese estéreo y se aplica un remuestreo de 8000 Hz. El espectrograma será calculado

    mediante la STFT y está implementado en la función “Espectrograma.m” cuyos parámetros

    de entrada son:

    “y”: señal que contiene el audio de entrada remuestreado.

    “nfft”: número de transformadas rápidas de Fourier a realizar.

    “fs”: frecuencia de muestreo del audio.

    “window”: ventana empleada para el cálculo del espectrograma, será de tipo

    Hanning y con un número de muestras que será optimizado en apartados

    posteriores.

    “noverlap”: muestras de cada ventana que serán solapadas para el cálculo

    de la transformada en la siguiente ventana. En este caso será del 50%,

    coincidiendo con el método del artículo [18].

    Por su parte, se obtendrá como salida:

    “Ycomplex”: contiene el espectrograma resultante con valores complejos.

    “toy”: vector con los valores de tiempo para el espectrograma.

    “foy”: vector con los valores del eje de frecuencia para el espectrograma.

    Todo el procesado de audio se realizará en el dominio de la frecuencia,

    trabajándose por tanto con el módulo de la variable “Ycomplex”, a la que denominaremos

    “Yabs”. No obstante, será necesario emplear la fase para finalizar el algoritmo y obtener

    los audios finales de las sibilancias, si existen, y de los últimos dos segundos de audio, por

    lo que este valor se almacenará en “Yang”.

    El espectrograma resultante estará compuesto por celdas con una coordenada para

    el eje de abscisas correspondiente al tiempo y una coordenada para el eje de ordenadas

    correspondiente a la frecuencia. Estas celdas serán denominadas bins. Asimismo,

    denominaremos frame a cada una de las columnas que compone el espectrograma, siendo

    este por tanto la agrupación de bins con el mismo valor de coordenada temporal.

    Para representar el espectrograma se empleará la función “imagesc” con

    parámetros de entrada, eje de coordenadas correspondiente al tiempo, denominado “toy”,

    eje de ordenadas correspondiente a la frecuencia, denominado “foy” y la matriz que

    contiene el espectrograma en valor absoluto “Yabs”.

    En relación a la resolución del espectrograma empleado, se han considerado tres

    valores para el tamaño en muestras de la ventana empleada para calcular la STFT: 256,

    512 y 1024. Un mayor número de muestras por ventana, supone que un mayor intervalo

    temporal estará representado por un mismo bin o celda, de tal forma que la resolución es

  • 40

    menor. Sin embargo, no siempre es necesaria una gran resolución, sino que dependerá de

    la aplicación. En este caso, se comprobará cuál es la ventana que ofrece unos mejores

    resultados de entre las propuestas anteriormente, en apartados posteriores.

    En la figura 5.2 se puede observar el espectrograma de una señal de audio con

    sibilancias de 8 segundos de duración empleando una ventana de Hanning de 512

    muestras con un solape del 50% para una frecuencia de muestreo de 8000 Hz. En

    concreto, existen dos sibilancias que ocurren entre 0.38 y 1.34 segundos y 5.68 y 6.7

    segundos, respectivamente. Estas se corresponden con las zonas de mayor energía

    presentes en el espectrograma.

    Figura 5.2. Espectrograma señal respiración con sibilancias, “M01_p5dB.wav”.

    En la figura 5.3 se representa otro espectrograma de una señal con sibilancias,

    calculado con una ventana de Hanning de 256 muestras con un solape del 50% para una

    frecuencia de muestreo de 8000 Hz. Presenta una duración de 18 segundos y cuatro

    sibilancias apreciables en los intervalos de 3.6 a 4.3, 7.6 a 8.4, 12.5 a 13.3 y 14.6 a 15.4

    segundos, respectivamente.

  • 41

    Figura 5.3. Espectrograma señal respiración con sibilancias, “M09_0dB.wav”

    5.1.1.2 Detección de picos

    En esta etapa, se buscarán los picos más significativos del espectrograma en cada

    frame. Para ser considerados como tal, deberán cumplir con un umbral definido como la

    diferencia de amplitud con respecto a los bins vecinos, que será optimizado en el apartado

    5.1.2.3 para la base de datos empleada en este Trabajo de Fin de Grado.

    Cabe destacar que la respiración humana y el corazón producen sonidos en baja

    frecuencia, así como los sistemas de grabación. Además, teniendo en consideración el

    hecho de que la captura de audio se realizará con el micrófono de un dispositivo móvil, el

    descarte de la baja frecuencia en nuestro método es muy necesario para una correcta

    detección reduciendo posibles interferencias. Por tanto, como paso previo a la detección

    de picos se descartará la banda de frecuencia de 0 a 60 Hz, tal y como se propone en [25].

    Con el fin de conseguir unos resultados más fiables e independientes de las

    diferentes condiciones que pueden darse en la grabación, así como de las características

    de la respiración de la persona de quien procede ese audio, se opta por normalizar el

    espectrograma para el cálculo de los picos más significativos, y posteriormente se

    desnormalizará al terminar esta etapa. Por tanto, el espectrograma será normalizado por

    el cociente de la suma de todas las amplitudes entre el número de puntos en frecuencia,

    𝐹, y el número de puntos en tiempo, 𝑇, obteniendo el espectrograma normalizado 𝑌𝑛𝑜𝑟𝑚 (7)

    [15].

  • 42

    𝑌𝑛𝑜𝑟𝑚 =𝑌𝑎𝑏𝑠

    ∑ ∑ 𝑌𝑎𝑏𝑠,𝑓,𝑡𝑇𝑡−1

    𝐹𝑓=1

    𝐹∙𝑇

    (7)

    Para este proceso de detección de picos significativos, se empleará la función

    “findpeaks” perteneciente a la Toolbox de MATLAB “Signal Processing Toolbox”, la cual

    además de tener como parámetro de entrada el vector en el que buscar los picos

    significativos, que en este caso se corresponde con cada frame del espectrograma, permite

    especificar diferentes argumentos para controlar los picos buscados. En este caso los

    parámetros que deben especificarse requieren emplear las siguientes entradas:

    “Sortstr”: permite indicar cómo ordenar los picos encontrados. Puesto que

    en este caso se buscan los más energéticos, se empleará un orden

    descendente, indicando a continuación de esta entrada “Descend”.

    “MinPeakDistance”: distancia mínima entre picos significativos. Este

    parámetro permitirá limitar que solo se devuelva un pico por frame

    correspondiente a una posible sibilancia. A partir del análisis del

    espectrograma se observa que 5 bins de separación son suficientes para no

    identificar más de un pico por sibilancia.

    “Npeaks”: establece el número de picos máximo que buscar. En este caso

    no se requiere gran cantidad de picos, solo aquellos con una energía muy

    destacable respecto al resto del espectrograma, pues son los que podrían

    pertenecer a una sibilancia. Se ha empleado 5 como valor.

    “Threshold”: diferencia de amplitud entre un bin respecto a sus vecinos

    (anterior y posterior) para ser considerado un pico significativo. Este umbral

    será determinado en la fase de evaluación y de él dependerá en gran

    medida la eficacia de la detección.

    Esta etapa la realiza la función “DeteccionPicos.m”, que recibirá como entrada el

    vector con los valores temporales “toy”, el vector con los valores de frecuencia “foy”, el

    módulo del espectrograma “Yabs” y el valor “Umbral” empleado en “findpeaks”. Por su

    parte, se obtendrán como salidas las siguientes matrices:

    “picos”: matriz con 5 filas (número máximo de picos que pueden ser

    detectados por frame, definido anteriormente) y tantas columnas como

    frames tenga el espectrograma. Los picos obtenidos en cada iteración del

    bucle que recorrerá el espectrograma por frames y contendrá “findpeaks”,

    serán almacenados en la columna correspondiente (ejemplo en figura 5.4).

    “picos_ind”: misma estructura que la matriz anterior. En este caso

    almacenará las posiciones de los picos detectados dentro de un frame. De

  • 43

    esta forma, podrán ubicarse dentro del espectrograma los picos detectados,

    pues se dispone de su posición respecto a la frecuencia y la posición

    respecto al vector de tiempos vendrá dado por la columna en la que se

    encuentren dentro de la matriz “picos_ind” (ejemplo en figura 5.5).

    “picos_frec”: misma estructura que “picos” y “picos_ind”, en los que a

    diferencia de estos se almacenará la frecuencia asociada a los picos

    detectados (ejemplo en figura 5.7).

    “YabsPicos”: amplitudes del espectrograma correspondientes

    exclusivamente a los picos detectados, siendo el resto de bins cero.

    Figura 5.4. Ejemplo de matriz "picos" (frames 11 a 20) para “M01_p5dB.wav”

    Figura 5.5. Ejemplo de matriz "picos_ind" (frames 11 a 20) para “M01_p5dB.wav”

    Figura 5.6. Ejemplo de matriz "picos_frec" (frames 11 a 20) para “M01_p5dB.wav”

    Mediante las tres matrices anteriores será posible disponer de toda la información

    para el acceso a los bins correspondientes en etapas posteriores del procesado, puesto

    que se dispone directamente de los valores de amplitud y frecuencia de los picos, así como

  • 44

    la posición exacta dentro de cada frame (columnas) y su posición en frecuencia en el

    espectograma (valores almacenados en “picos_ind”).

    En la figura 5.7 se representan los picos obtenidos para la señal ejemplo

    “M01_p5dB.wav” en el espectrograma, que al igual que para la representación de su

    espectrograma en la figura 5.2, se ha obtenido con una ventana de Hanning de 512

    muestras con solape del 50% para una frecuencia de muestreo de 8000 Hz.

    Figura 5.7. Espectrograma con los picos detectados en “M01_p5dB.wav”

    Para el caso de la señal ejemplo “M09_0dB.wav” los picos obtenidos se muestran

    gráficamente en la figura 5.8, siendo el espectrograma el resultado de aplicar una ventana

    de Hanning de 256 muestras con un solapamiento del 50% con frecuencia de muestreo de

    8000 Hz.

  • 45

    Figura 5.8. Espectrograma con los picos detectados en “M09_0dB.wav”

    5.1.1.3 Creación de trayectorias

    Las sibilancias, como se ha comentado anteriormente, pueden diferenciarse en el

    espectrograma como picos o componentes muy energéticas en un rango de frecuencias

    estrecho (banda estrecha) superpuestos a la respiración humana. Además, como se ha

    visto las sibilancias son sonidos adventicios continuos, por lo que para ser consideradas

    como tal tendrán una duración mínima, que para el algoritmo aquí desarrollado será de 250

    ms en base a diversas fuentes, entre ellas [7,18], así como una frecuencia fundamental en

    el rango de 100 a 1000 Hz [4].

    La creación de trayectorias llevada a cabo [18, 19]. está basada en el agrupamiento

    de los picos detectados que cumplan con la cercanía en tiempo y en frecuencia entre ellos.

    En cuanto a la cercanía en tiempo, se establecerá como límite el efecto Haas [19], por el

    que dos sonidos independientes que alcancen el oído con una separación inferior a 50 ms,

    serán interpretados como un único sonido. Por otra parte, el límite de separación en

    frecuencia para que dos picos significativos consecutivos detectados puedan pertenecer a

    la misma trayectoria será de ±30 Hz [18].

    No obstante, la creación de una trayectoria no implica la existencia de una

    sibilancia, pues como se ha citado al inicio de este apartado. Para que una trayectoria sea

  • 46

    considerada como sibilancia, debe superar la duración mínima y que su frecuencia

    fundamental esté en el rango establecido.

    La comprobación de esta continuidad temporal se realizará mediante una ventana

    deslizante centrada en t, que abarcará 𝑡 ± 50 𝑚𝑠, suponiendo una anchura total de no más

    de 100 ms, basada en [26]. Esta recorrerá todos los frames de la matriz “picos” (o

    “picos_frec”) comprobando si existen picos dentro de esa ventana, en el resto de frames.

    De no ser así, el pico será descartado pues no cumplirá con el efecto Haas en ningún caso,

    al no estar dentro de la ventana definida. Si existen picos en los frames dentro de la

    ventana, se cumplirá la continuidad temporal y se pasará a comprobar la continuidad en

    frecuencia de ±30 Hz.

    En resumen, el método llevado a cabo para la creación de trayectorias es el

    siguiente:

    i) Se toman los picos que estén dentro de los límites de la ventana deslizante

    centrada en 𝑡 con y con límites 𝑡 ± 50 𝑚𝑠.

    ii) Se busca el máximo absoluto de la ventana (“Emax”), cuya frecuencia 𝑓𝐸𝑚𝑎𝑥 se

    usará como umbral en base a la cual verificar la cercanía en frecuencia. Este

    máximo estará en la posición 𝑡𝐸𝑚𝑎𝑥 que se econtrará comprendido en (8),

    puesto que se encuentra dentro de la ventana centrada en 𝑡 (instante del frame

    actual considerado).

    iii) Se comprueba si algún pico del frame actual situado en el instante 𝑡 cumple con

    la cercanía en frecuencia (9) respecto al máximo absoluto encontrado en la

    ventana. De ser así, los picos pertenecerán a la misma trayectoria.

    iv) Terminado el proceso en el frame 𝑡, la ventana se desplazará una posición

    siendo ahora el frame en el que se realiza la comprobación el frame

    correspondiente a la posición 𝑡 + 1, y volverá a realizarse el mismo proceso.

    𝑡𝐸𝑚𝑎𝑥 − ∆𝑡 ≤ 𝑡 ≤ 𝑡𝐸𝑚𝑎𝑥 + ∆𝑡 (8)

    𝑓𝐸𝑚𝑎𝑥 − ∆𝑓 ≤ 𝑓(𝑡) ≤ 𝑓𝐸𝑚𝑎𝑥 + ∆𝑓 (9)

    Cabe destacar que este proceso puede producir trayectorias con nulos intermedios,

    si en esas posiciones bien no se han detectado picos erróneamente o se han detectado,

    pero han sido descartados en la etapa de creación de trayectorias al carecer de cercanía

    en frecuencia. Sin embargo, si la distancia entre picos no nulos es inferior a 50 ms,

    formarán parte de la misma trayectoria.

    Para solucionarlo y completar las trayectorias se aplica interpolación en aquellas en

    las que sea necesario, conociendo que cada fila corresponde a una trayectoria, se buscará

  • 47

    en cada una de ellas los ceros intermedios que existan. En caso afirmativo, se procede a

    realizar la interpolación como la media entre los valores no nulos más próximos entre sí.

    De tal forma que para un nulo que se presente en el instante t, 𝑓(𝑡) = 0 y 𝐸(𝑡) = 0,

    comprendido en el intervalo de duración de la sibilancia, se obtiene su valor en frecuencia,

    𝑓(𝑡) y su valor de energía 𝐸(𝑡) mediante las ecuaciones (10) y (11). En primer lugar, se

    interpolará comenzado por el nulo ubicado en un instante inferior, para posteriormente si

    hay más de un nulo que interpolar, el siguiente pico se pueda obtener como la interpolación

    entre ambos.

    𝑓(𝑡) =𝑓(𝑡−1)+𝑓(𝑡𝑓>0)

    2 (10)

    𝐸(𝑡) =𝐸(𝑡−1)+𝐸(𝑡𝑓>0)

    2 (11)

    La creación de trayectorias está implementada en la función

    “CreacionTrayectorias.m”, que recibe como parámetros de entrada los vectores de tiempos

    y frecuencia “toy” y “foy”, respectivamente, así como las matrices “picos” y “picos_ind”,

    resultado de la función previa “DeteccionPicos.m”. Como parámetros de salida tendrá, las

    matrices “trayectorias”, “trayectorias_frec” y “trayectorias_ind”, que contendrán los valores

    de los picos que sí forman parte de una trayectoria, es decir, respectivamente el resultado

    de “picos”, “picos_ind” y “picos_frec” tras aplicar los conceptos de cercanía en tiempo y en

    frecuencia. Asimismo, para visualizar el espectrograma resultante de la creación de

    trayectorias durante el desarrollo de la implementación del código en MATLAB se tiene

    como salida “YabsTrayectorias” para trayectorias aún no interpoladas, e

    “YabsTrayectoriasInt” tras la interpolación.

    En la figura 5.9, se muestra la matriz “trayectorias” resultante para “M01_p5dB.wav”

    en los frames 11 a 20, en la que siendo comparada con la matriz “picos” de la figura 5.4,

    se observa cómo los picos seleccionados en base al método de agrupación para formar

    parte de la misma trayectoria han sido los más energéticos en cada caso. Asimismo, se

    han obtenido once trayectorias, de las cuáles solo dos deberían corresponderse con

    sibilancias, tal y como se observó en su espectrograma (figura 5.2). El resto serán

    consecuencia de una alta energía de la respiración que deberá ser descartada en la fase

    de detección de sibilancias del siguiente apartado.

  • 48

    Figura 5.9. Ejemplo de matriz "trayectorias" (frames 11 a 20) para M01_p5dB.wav

    A continuación, siguiendo con los ejemplos anteriores, se muestra el espectrograma

    resultante (figura 5.10) con las trayectorias para “M01_p5dB.wav” con una ventana de

    Hanning de 512 muestras, solapamiento del 50% y una frecuencia de muestreo de 8000

    Hz.

    Figura 5.10. Espectrograma con trayectorias detectadas en “M01_p5dB.wav”

  • 49

    Respecto al ejemplo de la señal “M09_0dB.wav” en el que se aplica una ventana

    de Hanning de 256 muestras, solapamiento del 50% y frecuencia de muestreo de 8000 Hz,

    se observa la omisión de diferentes picos. Sin embargo, conociendo que, para estos

    parámetros, cada bin en frecuencia se corresponde con 16 ms, para que por el efecto Haas

    no provoque una división de la trayectoria, la separación entre picos no nulos que debe ser

    inferior a 50 ms, lo que se corresponde con un máximo de hasta tres bins. Puesto que esto

    se cumple, la interpolación permitirá la reconstrucción de la trayectoria.

    Como ejemplo de ello, la figura 5.11 muestra la trayectoria correspondiente que

    conocemos que corresponde por su ubicación en tiempo y frecuencia con la segunda

    sibilancia de este audio.

    Figura 5.11. Espectrograma con segunda sibilancia sin interpolar de “M09_0dB.wav”

    A continuación, se muestra cómo se lleva a cabo el proceso de interpolación

    gráficamente para los picos omitidos en la trayectoria correspondientes a los frames 484 y

    485 y tiempos 7.728 y 7.744 segundos, respectivamente. En figura 5.12 y figura 5.13

    también se presentan los nulos correspondientes a estas posiciones en las matrices

    “trayectorias” y “trayectorias_frec”.

  • 50

    Figura 5.12. Matriz "trayectorias", frames 482 a 487

    Figura 5.13. Matriz "trayectorias_frec", frames 482 a 487

    En primer lugar, se interpolará la posición 484, a partir del valor anterior y posterior

    más próximos a esta (en este caso las posiciones 483 y 486), aplicando las ecuaciones

    (10) y (11) para frecuencia y energía (amplitud) en cada caso.

    Figura 5.14. Resultado primera interpolación, matriz “trayectorias” frames 482 a 487

    Figura 5.15.Resultado primera interpolación, matriz “trayectorias_frec” frames 482 a 487

    A continuación, aplicando de nuevo la interpolación para la posición 485 a partir de

    los valores de las posiciones 484 (ya interpolada) y 486, se completan los nulos de la

    trayectoria detectada (figura 5.16 y figura 5.17). Mediante la sucesiva búsqueda de las

  • 51

    posiciones en las que las trayectorias están incompletas y realizando el mismo proceso, se

    obtiene la trayectoria completa tal y como se presenta en la figura 5.18.

    Figura 5.16. Resultado segunda interpolación, matriz "trayectorias" frames 482 a 487

    Figura 5.17. Resultado segunda interpolación, matriz "trayectorias_frec” frames 482 a 487

    Figura 5.18. Espectrograma con segunda sibilancia interpolada de “M09_0dB.wav”

    Por último, en la siguiente figura (figura 5.19), se representan las trayectorias

    finales. Nuevamente, se observan picos que han formado distintas agrupaciones por su

  • 52

    cercanía tanto en tiempo como en frecuencia y por ello siguen formando parte de las

    posibles trayectorias candidatas a sibilancias. No obstante, esto deberá resolverse en la

    etapa final de la detección descrita en el siguiente apartado.

    Figura 5.19. Espectrograma con trayectorias detectadas en “M09_0dB.wav”

    5.1.1.4 Detección de sibilancias

    Las sibilancias, como ya se ha ido comentando en apartados anteriores, presentan

    continuidad en el tiempo, que en función de las fuentes consultadas será como mínimo 80,

    100 o 250 ms. En el presente trabajo, puesto que se trata de una monitorización continua

    de las sibilancias que ocurran durante la noche y puedan no ser detectadas durante una

    auscultación tradicional en la consulta médica, resulta una herramienta interesante para

    aquellos casos más graves que necesiten de una atención rápida tras la vista de los

    resultados. Dado que la gravedad de las sibilancias está relacionada con su sonoridad y

    su duración temporal, se perseguirá la detección de sibilancias con una duración mínima

    de 250 ms [7] en la banda de 100 a 1000 Hz [5].

    Por tanto, este código desarrollado en “DeteccionSibilancias.m” tendrá como

    parámetros de entrada “toy”, “foy”, “trayectorias” y “trayectorias_ind”. A partir de

    “trayectorias” se buscará el número de valores no nulos por trayectoria (por filas), lo que

  • 53

    coincidirá con las posiciones de la trayectoria en cuestión. De esta forma, con el frame

    (columna) inicial y final donde se encuentra la trayectoria, obtendremos la duración de la

    misma, determinando una trayectoria candidata a sibilancia si esta es mayor a 250 ms. En

    caso afirmativo, se calcula la frecuencia fundamental como la media de la frecuencia en

    todos sus frames. Si esta se encuentra en el rango de 100 a 1000 Hz, la trayectoria será

    considerada sibilancia.

    Finalmente, esta función devolverá tres matrices: “sibilancias”, “sibilancias_info” e

    “YabsSibilancias”.

    “sibilancias”: compuesta por tantas filas como sibilancias se hayan

    detectado y el número de columnas coincidente con el número de frames.

    Por tanto, contendrá las filas de “trayectorias” que se correspondan con

    sibilancias.

    “sibilancias_info”: contiene información relevante sobre las sibilancias tras

    la etapa de detección. Estará formada por un número de filas igual al número

    de sibilancias detectadas y cuatro columnas. Las dos primeras contendrán

    el frame inicial y final de ocurrencia de la sibilancia en cuestión, la tercera

    almacenará su duración en tiempo y la cuarta su frecuencia fundamental