Bir sinyal olup olmadığını nasıl anlarsınız (sinyaliniz çok gürültü gibi göründüğünde)?


11

Bu yine horlama dedektörüm.

Orada bir şey olduğunda bir sinyal tespit etme konusunda oldukça iyi oldum - duvar soyulmuş bir horlamadan kayıtta bile duyamayacağınız nefes almaya kadar takip edebilirsiniz. Sorun şu ki, sinyalin algılanabilir seviyenin altına düştüğünü ve uygulamanın sadece "işitme" olduğunu söyleyemem. Ve ne yazık ki, horlama / nefes alma, basit bir otokorelasyon veya benzer aralık zamanlama şemasının çok yardımcı olmayacak kadar düzensizdir. (Ve aslında bazı durumlarda gürültünün nefes almaktan daha düzenli olması muhtemeldir.)

Peki, sinyal olmadığında anladığım için kaçırdığım herhangi bir püf noktası var mı? Görünüşe göre, burada "sinyal" çok gürültü gibi göz önüne alındığında, burada sert bir yere karşı olduğumu görünüyor.

(Ve belki de bu yaşadığım başka bir sorunla ilgilidir: Garip bir şekilde, oldukça yüksek olsa bile sinyal seviyesini doğru bir şekilde (veya yaklaşık olarak) ölçemiyorum. seviye bilgisi tür kayboluyor. Sulandırmak için bazı hileler arıyorum.)

Temel teknik

(Yoda için)

Ses sinyali örneklenir (genellikle çeşitli nedenlerle 8000Hz'de), daha sonra 1024 blokta FFTlenir. (Deneylerimde Hamming filtreleri ve çakışan bloklar çok az etkiye sahip gibi görünüyor, ancak bunlar daha sonra tekrar ziyaret edilebilir.)

FFT, "bantlara" (şu anda 5, düşük uca daha fazla ayrıntı yerleştirmek için hafifçe eğik) ayrılır ve her bandın "spektral farkı" ve seviyesi toplanır. Zirve sınırlı değerlerin uzun vadeli ortalamaları "eşikler" olarak kullanılır ve kabaca% 20 "eşik" oranını korumak için daha fazla sapma ayarları kullanılır.

Her "aşırı eşik" değerine 1 ağırlık verilir (eşiğin altında 0 ağırlık verilir), ancak daha sonra bu ağırlık, bantlara daha fazla ağırlık vermek için banttaki görünür "değişkenlik" (kabaca 2Hz'de) ile ayarlanır. daha belirgin sinyal taşıyan.

Bantların ağırlıkları toplanır ve daha sonra sonraki blokların toplanan ağırlıkları yaklaşık bir saniye içinde toplanarak çalışan bir "skor" elde edilir. Bu yine horlama başlangıç ​​/ ofsetini tespit etmek için çalışan ortalama eşikle (artı birkaç sezgisel tarama) karşılaştırılır.

Güncelleme

Aniden bana, algoritmamın sabit seviyeli bir sinyali (sinyal seviyesi problemime göre) etkili bir şekilde sürdürmesi durumunda, SNR'yi etkili bir şekilde ölçmenin yolunun, sinyal olmadığında gürültüyü ölçmek olduğu ortaya çıktı.

Uygun olarak, horlamalar aralıklıdır, aralarında çok sayıda "ölü hava" vardır. Ve zaten horlama zarflarını tespit ediyorum. Yani zarfın dışındaki herhangi bir şey (bir horlamanın sonu ile bir sonrakinin başlangıcı arasında) muhtemelen gürültü! Bu (bazı mütevazı doğruluk / tekrarlanabilirlik derecesi ile) ölçebilirim. (Elbette, yarım terbiyeli bir algoritma bulmak üç denemeyi aldı - gerçeklik asla teoriye uymuyor.)

Bu yüzden henüz tam cevabım yok ama ilerleme kaydettim.

(Yukarıdaki teknik bana SNR için oldukça iyi bir proxy verirken, hala gerçek sinyal seviyesini tahmin etmekte sorun yaşıyorum. "Göreceli seviye" göstergelerim, zorlukla duyulabilir bir nefes için ölçek dışı olabilir ve bir pencere tıkırtısı için so-so. Mutlak seviye için bir çeşit proxy'ye ihtiyacım var.)


"Bu yine horlama dedektörüm" - lütfen önceki sorunuza (muhtemelen ayrıntılı olarak tanımladığınız yere) bağlantı verebilir veya bu soruya dedektörünüzle ilgili bazı ayrıntılar ekleyebilir misiniz?
Lorem Ipsum

Yanıtlar:


5

Şimdiye kadar, sesteki güçlü bir periyodik örüntü ile horlamayı tanımlamış gibiydiniz. Bana aynı mülke sahip başka kaynaklar olabileceğini söylerseniz, horlamaya daha spesifik olan sinyalin bir özelliğine geçme ve odaklanma zamanı; ve kaydedilen sesin tınısına daha kesin bir şekilde bakmayı öneririm. Bir insan dinleyicinin horlamadan nefes almayı uzatabildiği göz önüne alındığında, geleneksel ses sinyali sınıflandırma yaklaşımına başvurabilirsiniz. Ses verilerinizdeki MFCC'ler ve Dalgalanma paternleri gibi özellikleri hesaplayın ve horlamayı nefes almayı ayırt etmek için bayes sınıflandırıcısını (veya daha karmaşık) eğitin.

Konuyla ilgili literatürü de gözden geçirmenin zamanı gelmiş olabilir ... Örneğin şunu buldum: http://web.itu.edu.tr/kamasak/pubs/pdf/pm7_8_007.pdf


Bir sorun, sesin doğasının kişiden kişiye ve hatta bir gece boyunca tek bir kişiye bile çok değişmesidir. Ama ipuçları için teşekkürler - onlara bakacağım.
Daniel R Hicks

Eğitim setiniz yeterince büyükse, makine öğrenme teknikleri kullanılarak bu hala mümkün olabilir.
Şubat'ta pichenettes

50'den fazla veri setim var. Ne yazık ki, bir sette mükemmel çalışan bir algoritma bir sonraki sette fena halde başarısız oluyor. Bazılarının TV arka planda gidiyor, bazılarında hava işleyicileri rumbling, vb vardır. Solunum / horlama zar zor duyulabilir veya boya soyma olabilir. Bir özne, konumlarını değiştirebilir ve horlamasının doğasını tamamen değiştirebilir. Bir tür kendini ayarlama şeması açıkça gereklidir.
Daniel R Hicks

sınıflandırma için hangi özellikleri kullanıyorsunuz?
Şubat'ta pichenettes

Öncelikle "başlangıç" ve "kaymayı" tespit etmek için sadece "spektral fark" ("spektral akı" olarak da bilinir). Ancak şu anki şemam spektrumu bantlara böler ve her bant o banttaki görünür sinyal gücüne göre (yaklaşık 1/2 Hz'de meydana gelen spektral farktaki değişim miktarı ile değerlendirilir) dayanır. Bu, önemli gürültü ile bile tüm ses aralığı boyunca solunum / horlamayı tespit etmek için iyi çalışır, ancak gerçek ses seviyesinin tüm göstergelerini etkili bir şekilde kaybeder. Ve sadece eşzamanlı toplam ses seviyesine bakmak gürültü sorunu nedeniyle çalışmaz.
Daniel R Hicks

0

Sabit bir egzersiz setini ayarlamak yerine, geçerli konuya, uyku evresine ve ses ortamına uyum sağlayabilen dinamik bir sınıflandırıcı oluşturmanız gerekebilir.


Ben de öyle düşünüyorum.
Daniel R Hicks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.