Esta é uma continuação de uma pergunta anterior .
Estou tentando analisar os sons da respiração e do ronco e, embora eu possa detectar muito bem o ronco agora, a respiração é um desafio maior.
Aprendi que se eu quebrar a faixa de frequência analisada (cerca de 4KHz, amostrada em cerca de 8KHz, com um tamanho de quadro de 1024) em cerca de 5 subfaixas, muitas vezes uma das subfaixas exibe uma boa sensibilidade (usando diferença espectral) enterrada no ruído na faixa geral. O truque é determinar em qual subrange "confiar" quando.
Presumivelmente, o subintervalo "confiável" exibirá variabilidade a uma taxa entre cerca de 2Hz e 0,05Hz, enquanto os subfaixas "ruins" se comportariam de maneira mais aleatória, com a maior parte de sua variação em intervalos mais curtos.
Eu poderia criar algum tipo de algoritmo para suavizar os valores em uma resolução de segundo e depois calcular a variabilidade em intervalos mais longos, mas me pergunto se não existe um algoritmo "fixo" para esse tipo de coisa - algo com talvez um pouco de teoria por trás disso?
Alguma sugestão?
[Nota: Eu sei que, em teoria, é possível usar um FFT para extrair essas informações, mas isso parece usar um taco de beisebol para matar uma pulga. Talvez algo um pouco mais leve?]
Adicionado:
De certa forma (para usar uma analogia), estou tentando detectar um sinal de "banda base" em uma transmissão de RF (apenas o "RF" é frequências de áudio e a "banda de base" está abaixo de 8Hz). E, de certa forma, o "RF" é "espectro de espalhamento" - os sons que eu quero detectar tendem a gerar muitos harmônicos e / ou têm vários componentes de frequência separados; portanto, se uma banda do espectro é muito barulhenta, posso provavelmente faça uso de outro. O objetivo é determinar basicamente algumas métricas semelhantes ao SNR para as várias bandas de frequência, supondo que a maioria dos "ruídos" seja> 2Hz e meu sinal seja menor que 2Hz.
Tenho como entrada neste algoritmo as amplitudes brutas (soma das amplitudes de FFT em todas as frequências incluídas) para cada banda, medidas em intervalos de 8Hz.
(Deve-se observar que, embora eu não tenha feito nenhuma medição formal do SNR, o SNR geral em todo o espectro processado parece estar freqüentemente próximo ou abaixo de 1,0 - se você observar visualmente o envelope sonoro em uma ferramenta como o Audacity, nenhuma modulação do o envelope é perceptível (mesmo que o ouvido possa discernir claramente os sons da respiração), e é por isso que é necessário analisar as faixas para encontrar pessoas com SNR decente.)