Arka plan: Ben (ima bir iPhone uygulaması üzerinde çalışıyorum içinde birkaç diğer mesajlar ) bu bir uykuda olup belirler iken nefes / horlama "dinler" "Uyku laboratuvarında" için bir ön ekran olarak (uyku apnesi belirtileri varsa test yapmak). Uygulama prensip olarak horlama / nefes tespit etmek için "spektral fark" kullanır ve uyku laboratuarı kayıtlarına (aslında oldukça gürültülü) karşı test edildiğinde oldukça iyi çalışır (ca 0.85--0.90 korelasyonu).
Sorun: Çoğu "yatak odası" gürültüsü (fanlar, vb.) Birkaç teknikle filtreleyebiliyorum ve insan kulağının algılayamadığı S / N seviyelerinde solunumu güvenilir bir şekilde tespit edebiliyorum. Sorun ses gürültüsüdür. Arka planda çalışan bir televizyonun veya radyonun olması olağandışı değildir (ya da sadece uzaktan konuşurken birisinin konuşması) ve sesin ritmi nefes alma / horlama ile yakından eşleşir. Aslında, uygulamadaki geç yazar / hikaye anlatıcısı Bill Holm'un bir kaydını yürüttüm ve ritimde, seviye değişkenliğinde ve diğer bazı önlemlerde horlamanın temelinden ayırt edilemezdi. (En azından uyanıkken göründüğü kadarıyla uyku apnesi olmadığını söyleyebilirim.)
Yani bu biraz uzun bir atış (ve muhtemelen forum kurallarının uzatılması), ancak sesi nasıl ayırt edebileceğimize dair bazı fikirler arıyorum. Horlama seslerini bir şekilde filtrelememiz gerekmiyor (bunun iyi olacağını düşündüm), ama sadece sesle aşırı kirlenmiş "çok gürültülü" bir ses olarak reddetmenin bir yoluna ihtiyacımız var.
Herhangi bir fikir?
Yayınlanan dosyalar: dropbox.com'a bazı dosyalar yerleştirdim:
Birincisi rastgele bir rock müzik parçası (sanırım), ikincisi ise Bill Holm'un son konuşmasının kaydı. Her ikisi de (benim "gürültü" numunelerim olarak kullandığım horlamadan farklılaşıyor) sinyalin sesini engellemek için gürültü ile karıştırıldı. (Bu onları önemli ölçüde daha zor tanımlama görevini yapar.) Üçüncü dosya, ilk üçüncünün en çok nefes aldığı, orta üçüncüsü karışık nefes alma / horlama ve son üçüncüsü oldukça sabit olan horlama kayıtlarının on dakikadır. (Bir bonus için öksürük edin.)
Her üç dosya da ".wav" dan "_wav.dat" a değiştirildi, çünkü birçok tarayıcı wav dosyalarını indirmeyi zorlaştırıyor. İndirdikten sonra onları tekrar ".wav" olarak yeniden adlandırın.
Güncelleme: Entropinin benim için "hile yaptığını" düşündüm, ama çoğunlukla kullandığım test vakalarının yanı sıra çok iyi tasarlanmamış bir algoritma da ortaya çıktı. Genel durumda entropi benim için çok az şey yapıyor.
Daha sonra, toplam sinyal büyüklüğünün FFT'yi (birkaç farklı pencere işlevini kullanarak) hesapladığım (güç, spektral akı ve diğer bazı ölçütleri denedim) saniyede 8 kez örneklenmiş (ana FFT döngüsünün istatistiklerini alarak) bir teknik denedim. her 1024/8000 saniyede bir). 1024 numuneyle bu, yaklaşık iki dakikalık bir zaman aralığını kapsar. Horlama / nefes almanın ses / müzik ritminden dolayı buradaki kalıpları görebileceğimi umuyordum (ve aynı zamanda " değişkenlik " konusunu ele almanın daha iyi bir yolu olabilirdi ), fakat ipuçları varken burada ve orada bir kalıp var, dayanabileceğim hiçbir şey yok.
( Daha fazla bilgi: Bazı durumlarda, sinyal büyüklüğünün FFT'si, yaklaşık 0,2Hz'de güçlü bir zirve ve merdiven boşluğu harmoniklerine sahip çok farklı bir model üretir. Fakat model çoğu zaman neredeyse o kadar belirgin değildir ve ses ve müzik daha az belirgin hale getirebilir. benzer bir modelin versiyonları, bir değer için bir korelasyon değeri hesaplamak için bir yol olabilir, ancak 4. dereceden bir polinom için yaklaşık bir eğri uydurma gerektirecek ve bunu bir telefonda bir saniyede yapmak pratik görünmeyecek gibi görünüyor.)
Ayrıca, spektrumu böldüğüm 5 bireysel "grup" için aynı genlik FFT'sini yapmaya çalıştım. Bantlar 4000-2000, 2000-1000, 1000-500 ve 500-0'dur. İlk 4 grubun modeli genel olarak genel desene benzerdi (gerçekte "öne çıkan" bant yoktu ve daha yüksek frekans bantlarında genellikle ufak sinyaller kayboldu), ancak 500-0 bandı genellikle rastgele idi.
Ödül: Nathan'a ödülü vereceğim, yeni bir şey teklif etmemiş olsa da, bugüne kadarki en üretken öneriydi. Yine de, bazı iyi fikirler ortaya çıkarsa başkasına vermeyi isteyeceğim birkaç nokta var.