Il s'agit d'une continuation d'une question précédente .
J'essaie d'analyser les sons de respiration et de ronflement, et bien que je puisse assez bien détecter le ronflement maintenant, la respiration est un plus grand défi.
J'ai appris que si je casse la plage de fréquences analysée (environ 4KHz, échantillonnée à environ 8KHz, avec une taille de trame de 1024) en environ 5 sous-plages, très souvent l'une des sous-plages présente une bonne sensibilité (en utilisant la différence spectrale) qui est enterrée dans le bruit dans la gamme globale. L'astuce consiste à déterminer la sous-gamme à laquelle «faire confiance» quand.
On peut supposer que la sous-gamme "digne de confiance" présenterait une variabilité à un taux compris entre environ 2 Hz et 0,05 Hz, tandis que les "mauvaises" sous-gammes se comporteraient de manière plus aléatoire, la plupart de leur variation étant à des intervalles plus courts.
Je pourrais bricoler une sorte d'algorithme pour lisser les valeurs à une résolution inférieure à la seconde, puis calculer la variabilité sur des intervalles plus longs, mais je me demande s'il n'y a pas d'algorithme "en conserve" pour ce genre de choses - quelque chose avec peut-être un minimum de théorie derrière cela?
Aucune suggestion?
[Remarque: je me rends compte que l'on pourrait, en théorie, utiliser une FFT pour extraire ces informations, mais cela ressemble à utiliser une batte de baseball pour tuer une puce. Peut-être quelque chose d'un peu plus léger?]
Ajoutée:
Dans un sens (pour utiliser une analogie), j'essaie de détecter un signal de "bande de base" dans une transmission RF (seul le "RF" est des fréquences audio et la "bande de base" est inférieure à 8 Hz). Et, dans un sens, le "RF" est un "spectre étalé" - les sons que je veux détecter ont tendance à générer beaucoup d'harmoniques et / ou ont plusieurs composantes de fréquence distinctes, donc si une bande du spectre est trop bruyante je peux probablement en utiliser un autre. Le but est de déterminer fondamentalement une métrique ressemblant au SNR pour les différentes bandes de fréquences, en supposant que la plupart du "bruit" est> 2 Hz et que mon signal est inférieur à 2 Hz.
J'ai en entrée dans cet algorithme les amplitudes brutes (somme des amplitudes FFT à toutes les fréquences incluses) pour chaque bande, mesurées à des intervalles de 8 Hz.
(Il convient de noter que, bien que je n'aie fait aucune mesure formelle du SNR, le SNR global sur le spectre traité semble être fréquemment proche ou inférieur à 1,0 - si vous observez visuellement l'enveloppe sonore dans un outil comme Audacity, aucune modulation du enveloppe est perceptible (même si l'oreille peut clairement discerner les bruits respiratoires. C'est pourquoi il est nécessaire d'analyser les bandes pour trouver celles avec un SNR décent.)