¿Cómo determinar la "variabilidad" en un rango de frecuencia?

8

Esta es una continuación de una pregunta anterior .

Estoy tratando de analizar los sonidos de la respiración y los ronquidos, y aunque ahora puedo detectar bastante bien los ronquidos, la respiración es un desafío mayor.

He aprendido que si rompo el rango de frecuencia analizado (aproximadamente 4KHz, muestreado a aproximadamente 8KHz, con un tamaño de fotograma de 1024) en aproximadamente 5 subranges, muy a menudo una de las subranges exhibe una buena sensibilidad (usando la diferencia espectral) que está enterrada en el ruido en el rango general. El truco consiste en determinar en qué subrango confiar "cuándo".

Presumiblemente, el subrango "confiable" exhibiría variabilidad a una velocidad entre aproximadamente 2Hz y 0.05Hz, mientras que los subranges "malos" se comportarían de manera más aleatoria, siendo la mayor parte de su variación a intervalos más cortos.

Podría improvisar algún tipo de algoritmo para suavizar los valores en una resolución inferior a un segundo y luego calcular la variabilidad en intervalos más largos, pero me pregunto si no hay un algoritmo "enlatado" para este tipo de cosas, algo con tal vez ¿Un mínimo de teoría detrás de esto?

¿Alguna sugerencia?

[Nota: me doy cuenta de que uno podría, en teoría, usar una FFT para extraer esta información, pero eso parece usar un bate de béisbol para matar una pulga. ¿Quizás algo un poco más liviano?]

Adicional:

En cierto sentido (para usar una analogía), estoy tratando de detectar una señal de "banda base" en una transmisión de RF (solo la "RF" son frecuencias de audio, y la "banda base" está por debajo de 8Hz). Y, en cierto sentido, el "RF" es "espectro extendido": los sonidos que quiero detectar tienden a generar muchos armónicos y / o tienen varios componentes de frecuencia separados, por lo que si una banda del espectro es demasiado ruidosa, puedo Probablemente haga uso de otro. El objetivo es determinar básicamente alguna métrica que se parezca a la SNR para las diversas bandas de frecuencia, bajo el supuesto de que la mayoría del "ruido" es> 2Hz y mi señal es inferior a 2Hz.

Tengo como entrada a este algoritmo las amplitudes sin procesar (suma de amplitudes FFT en todas las frecuencias incluidas) para cada banda, medida a intervalos de 8Hz.

(Debe tenerse en cuenta que, si bien no he realizado ninguna medición formal de SNR, la SNR general en todo el espectro procesado parece estar con frecuencia cerca o por debajo de 1.0, si observa visualmente la envolvente de sonido en una herramienta como Audacity, no hay modulación del la envolvente es notable (a pesar de que el oído puede discernir claramente los sonidos de respiración). Es por eso que es necesario analizar las bandas para encontrar aquellas con SNR decente).

Daniel R Hicks
fuente
Por variabilidad, ¿te refieres a tiempo o a través de frecuencias?
Phonon
Variabilidad en el tiempo. A una velocidad entre aproximadamente 0.05Hz y 2Hz, ignorando la variabilidad a intervalos más largos o más cortos.
Daniel R Hicks
1
@DanielRHicks ¿Qué estamos tratando de detectar exactamente aquí? Quiero asegurarme de que entiendo la (s) pregunta (s): estoy tratando de cuantificar las características que desea medir primero.
Spacey
Ver los detalles agregados.
Daniel R Hicks

Respuestas:

4

Daniel

Al volver a leer su pregunta, parece que lo que aprendí a ser conocido como el "ancho de banda de Gabor" podría serle útil en este caso, ya que intenta medir la "variabilidad espectral". (Dilip dio una buena respuesta a mi pregunta sobre Momentos espectrales aquí).

Cuando lo estudié más a fondo, el ancho de banda de Gabor parece ser realmente una medida de cuán 'extendido' es el espectro de su media. (De ahí la manipulación de los momentos).

Echa un vistazo y mira lo que piensas.

Spacey
fuente
1

Lo que necesitas parece mucho más grande que una pulga. Por lo tanto, es posible que deba ir en la dirección opuesta y hacer más que solo una FFT. Quizás cepstrum de baja frecuencia o análisis cepstral para encontrar su frecuencia "exiter".

hotpaw2
fuente
Sí, parece que vale la pena estudiarlo (¿o debería decir otni?).
Daniel R Hicks
Supongo que no veo una forma obvia de aplicar "cepstrum" a mis datos para analizar intervalos de tiempo más largos que mi intervalo de cuadros.
Daniel R Hicks
1

X(m,n)

Esto es lo que sugiero:

Para cada n:

  • rn(l)X(:,n)
  • rn(l)

Elija la subbanda con el pico de autocorrelación más alto (= el más "agudo").

Medidas de pico para observar:

  • maxlLrn(l)rn(0)
  • curtosis
  • relación de media geométrica a aritmética

Este tipo de métricas se utilizan, por ejemplo, para distinguir el habla con voz / sin voz.

pichenettes
fuente
¿Puede explicar qué valor da la media geométrica sobre la media aritmética? Además, cuando menciona el máximo de la autocorrelación normalizada sobre la autocorrelación en tau = 0, ¿por qué es una cifra de mérito?
Spacey