Ceci est un détour par mon application de ronflement .
J'ai eu du mal à produire une autocorrélation du signal audio, pour voir si cela "corrélait" très bien avec le ronflement / la respiration. J'ai un algorithme simple (produit 1.0 comme élément zéro, ce qui est un bon signe), mais je me demande comment évaluer le résultat pour déterminer si l'autocorrélation est forte et, peut-être plus loin, comment l'utiliser pour séparer diverses sources sonores possibles.
Question n ° 1: Le RMS de l'autocorrélation (saut d'élément zéro) est-il une métrique de "qualité" aussi bonne, ou y a-t-il quelque chose de mieux?
Pour élaborer: je veux simplement une méthode numérique (vs "regarder" un graphique) pour distinguer un signal hautement autocorrélé d'un signal moins bien autocorrélé.
(Je ne sais pas vraiment assez pour savoir quelles autres questions poser.)
Quelques premiers résultats: dans certains cas, l'autocorrélation (RMS ou pic) montre un saut spectaculaire sur un ronflement - précisément la réponse que j'aimerais voir. Dans d'autres cas, il n'y a aucun mouvement apparent dans ces mesures (et cela peut être deux ronflements successifs avec les deux réponses), et dans des situations de bruit élevé, les mesures plongent réellement (légèrement) pendant un ronflement.
Mise à jour - 22 mai: J'ai enfin eu un peu de temps pour y travailler encore. (J'ai été retiré sur une autre application qui est littéralement une douleur.) J'ai alimenté la sortie de l'autocorrélation dans une FFT et la sortie est quelque peu intéressante - elle montre un pic assez dramatique près de l'origine quand un ronflement commence.
Alors maintenant, je suis confronté au problème de quantifier ce pic d'une manière ou d'une autre. Curieusement, les pics les plus élevés, en termes de magnitude absolue, se produisent à d'autres moments, mais j'ai essayé le rapport pic / moyenne arithmétique et cela suit assez bien. Alors, quelles sont les bonnes façons de mesurer le "pic" de la FFT. (Et s'il vous plaît , ne dites pas que je dois en prendre une FFT - cette chose est déjà proche d'avaler sa propre queue. :))
De plus, il m'est venu à l'esprit que la qualité de la FFT pourrait être quelque peu améliorée si je reflétais les résultats d'autocorrélation alimentés en miroir, avec zéro (qui est par définition de magnitude 1,0) au milieu. Cela mettrait la «queue» aux deux extrémités. Est-ce (peut-être) une bonne idée? L'image miroir doit-elle être verticale ou inversée? (Bien sûr, je vais l'essayer indépendamment de ce que vous dites, mais j'ai pensé que je pourrais peut-être obtenir des indices sur les détails.)
Planéité éprouvée -
Mes cas de test peuvent être divisés en gros dans la catégorie «bien élevé» et la catégorie «enfants à problème».
Pour les cas de test "bien comportés", la planéité de la FFT de l'autocorrélation baisse de façon spectaculaire et le rapport du pic à l'autocorrélation moyenne grimpe pendant un ronflement. Le rapport de ces deux nombres (rapport de pic divisé par la planéité) est particulièrement sensible, présentant une montée de 5 à 10 fois pendant un souffle / ronflement.
Pour les «enfants à problème», cependant, les chiffres vont exactement dans la direction opposée. Le rapport pic / moyenne baisse légèrement tandis que la planéité augmente en fait de 50 à 100%
La différence entre ces deux catégories est (principalement) triple:
- Les niveaux de bruit sont (généralement) plus élevés chez les "enfants à problèmes"
- Les niveaux audio sont (presque toujours) plus bas chez les "enfants à problèmes"
- Les «enfants à problèmes» consistent généralement en plus de respiration et moins de ronflements réels (et je dois détecter les deux)
Des idées?
Mise à jour - 25/05/2012: C'est un peu prématuré d'avoir une danse de victoire, mais quand j'ai réfléchi à l'autocorrélation sur un point, j'ai pris la FFT de cela, puis j'ai fait la planéité spectrale, mon schéma de rapport combiné a montré un bon saut dans plusieurs environnements différents. La réflexion de l'autocorrélation semble améliorer la qualité de la FFT.
Un point mineur, cependant, est que, puisque la "composante continue" du "signal" réfléchi est nulle, le résultat nul de la FFT est toujours nul, et cela casse un peu une moyenne géométrique qui inclut zéro. Mais sauter l'élément zéro semble fonctionner.
Le résultat que j'obtiens est loin d'être suffisant pour identifier les ronflements / respirations par lui-même, mais cela semble être une "confirmation" assez sensible - si je n'obtiens pas le "saut", ce n'est probablement pas un ronflement / respiration.
Je ne l'ai pas analysé de près, mais je soupçonne que ce qui se passe est qu'un sifflement se produit quelque part pendant le souffle / ronflement, et que ce sifflement est ce qui est détecté.