To poboczna podróż z mojej aplikacji do chrapania .
Miałem problem z wytworzeniem autokorelacji sygnału audio, aby zobaczyć, czy to „koreluje” z chrapaniem / oddychaniem bardzo dobrze. Mam prosty algorytm (daje 1,0 jako element zerowy, co jest dobrym znakiem), ale zastanawiam się, jak ocenić wynik, aby ustalić, czy autokorelacja jest silna, a być może dalej, jak użyć go do oddzielenia różne możliwe źródła dźwięku.
Pytanie nr 1: Czy RMS autokorelacji (pomijanie elementu zero) jest równie dobrą miarą „jakości”, czy jest coś lepszego?
Aby rozwinąć: Chcę po prostu w sposób numeryczny (w przeciwieństwie do „patrzenia” na wykres), aby odróżnić sygnał silnie skorelowany od gorzej skorelowanego.
(Naprawdę nie wiem wystarczająco dużo, aby wiedzieć, jakie inne pytania zadać).
Niektóre wczesne wyniki: w niektórych przypadkach autokorelacja (RMS lub szczyt) pokazuje dramatyczny skok na chrapanie - dokładnie taką odpowiedź, którą chciałbym zobaczyć. W innych przypadkach nie ma widocznego ruchu w tych środkach (i mogą to być dwa kolejne chrapania z dwiema odpowiedziami), aw sytuacjach o wysokim poziomie hałasu pomiary faktycznie spadają (nieznacznie) podczas chrapania.
Aktualizacja - 22 maja: Nareszcie mam trochę czasu, żeby nad tym popracować. (Zostałem wciągnięty w inną aplikację, która jest dosłownie bólem). Podałem wynik autokorelacji do FFT, a wynik jest dość interesujący - pokazuje dość dramatyczny szczyt w pobliżu źródła, gdy zaczyna się chrapanie.
Więc teraz mam problem z kwantyfikacją tego szczytu. Co dziwne, najwyższe szczyty, pod względem wielkości bezwzględnej, występują w innych momentach, ale próbowałem stosunku szczytu do średniej arytmetycznej i to całkiem nieźle. Jakie są więc dobre sposoby pomiaru „szczytowości” FFT. (I proszę nie mów, że muszę wziąć FFT z tego - ta rzecz jest już blisko połknięcia własnego ogona. :))
Przyszło mi również do głowy, że jakość FFT mogłaby się nieco poprawić, jeśli odbijam lustrzanie wprowadzane wyniki autokorelacji, z zerowym (co z definicji 1,0 wielkości) pośrodku. To położyłoby „ogony” na obu końcach. Czy to (prawdopodobnie) dobry pomysł? Czy odbicie lustrzane powinno być pionowe czy odwrócone? (Oczywiście, spróbuję tego bez względu na to, co powiesz, ale pomyślałem, że może uda mi się uzyskać wskazówki na temat szczegółów.)
Wypróbowana płaskość
Moje przypadki testowe można z grubsza podzielić na kategorię „dobrze wychowanych” i „problematycznych dzieci”.
W przypadku „dobrze wychowanych” przypadków testowych płaskość FFT autokorelacji gwałtownie spada, a stosunek szczytowej do średniej autokorelacji wzrasta podczas chrapania. Stosunek tych dwóch liczb (stosunek pików podzielony przez płaskość) jest szczególnie czuły, wykazując 5-10-krotny wzrost podczas oddechu / chrapania.
Jednak w przypadku „problematycznych dzieci” liczby zmierzają dokładnie w przeciwnym kierunku. Stosunek szczyt / średnia nieznacznie spada, podczas gdy płaskość faktycznie wzrasta o 50-100%
Różnica między tymi dwiema kategoriami jest (głównie) trzykrotna:
- Poziomy hałasu są (zwykle) wyższe u „dzieci z problemami”
- Poziomy dźwięku są (prawie zawsze) niższe w „problematycznych dzieciach”
- „Dzieci z problemami” zwykle składają się z większego oddychania i mniej faktycznego chrapania (i muszę je wykryć)
Jakieś pomysły?
Aktualizacja - 25.05.2012: Trochę przedwcześnie jest mieć taniec zwycięstwa, ale kiedy zastanawiałem się nad autokorelacją o punkcie, wziąłem FFT, a następnie wykonałem płaskość spektralną, mój kombinowany schemat proporcji pokazał dobry skok w kilka różnych środowisk. Odzwierciedlenie autokorelacji wydaje się poprawiać jakość FFT.
Jednym drobnym punktem jest to, że ponieważ „składowa prądu stałego” odbijanego „sygnału” wynosi zero, zerowy wynik FFT jest zawsze równy zero, a ten rodzaj łamie średnią geometryczną obejmującą zero. Ale pomijanie elementu zerowego wydaje się działać.
Rezultat, który otrzymuję, jest daleki od wystarczającego do samodzielnego rozpoznania chrapania / oddechów, ale wydaje się, że jest to dość wrażliwe „potwierdzenie” - jeśli nie dostanę „skoku”, prawdopodobnie nie jest to chrapanie / oddech.
Nie analizowałem go dokładnie, ale podejrzewam, że dzieje się tak, że podczas oddechu / chrapania dochodzi gdzieś dźwięk gwizdka, a ten gwizd jest wykrywany.