Düşük frekanslar FFT'de daha güçlü mü?


15

Mikrofon girişinden FFT hesaplıyorum. Daha düşük frekansların her zaman daha yüksek frekanslardan daha fazla güce (daha yüksek dB) sahip olduğunu fark ettim.

  1. Verileri 24576 bayt (4096 * 6) kareye böldüm.
  2. Hamming penceresini uygula: input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
  3. FFTW üzerinden çalıştırın Process1D().
  4. Karmaşık sayılardan dönüştürün: output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
  5. 4096 baytlık bir FFT elde etmek için 6 değerin ortalamasını alın.
  6. Güzel resim boya (bir palete eşlenen renkler).

Ortalama alma (pt.5) FFT gürültüsünü azaltmak için yapılır.

Görüntü hem ses hem de mikrofon kapalıyken gösterildiği gibi, düşük frekanslarda daha fazla enerji (ve daha fazla gürültü) vardır. Bu sadece bir mikrofon / alt problemden daha fazlasını gösterir.

Sorularım:
1. Bu bekleniyor mu? Neden?
2. Bunu düzeltmenin standart bir yolu var mı? Neredeyse bazı Math.Tan () büyüsü ait olduğu yerden kaldırabilir.

Amacım, varsayılan olarak daha düşük frekanslar kazanmadan ilk 5 frekansı tanımlayabilmektir.

FFT


Bu düşük frekanslı gürültüye neden olan kırık pencere parçasının olup olmadığını görmek için lütfen önce doğru Hamming penceresini deneyin.
hotpaw2

@Tedd Hansen, "daha düşük frekanslar olmadan ilk 5 frekansı nasıl belirlediniz" - ağırlıklı 1/3 oktav bantlarından ilk 5 ??
denis

Yanıtlar:


12

Evet, bu çok bekleniyor. Gördüğünüz, " pembe " bir spektrum, yani mutlak bant genişliği başına sabit enerji olan " beyaz " ile karşılaştırıldığında göreli bant genişliği başına sabit enerji. Pembe sinyaller için 1-2kHz arasındaki enerji 2-4kHz ile aynıdır (her biri bant genişliğinin iki katını veya bir "oktav" ı temsil eder.

Çoğu doğal ses sinyalinin (Konuşma, müzik, film vb.) Pembe benzeri bir spektrumu vardır. Ayrıca çoğu akustik arkaplan gürültüsü (mikrofon gürültüsü, HVAC gürültüsü, hava basıncı dalgalanmaları, jenerik arkaplan) pembe olma eğilimindedir veya daha düşük frekanslara daha fazla çarpık olma eğilimindedir.

İnsan işitsel sistemleri de bu şekilde çalışır. İç kulakta ses sinyalleri, kabaca üçüncü bir oktav spektrumu ile aynı olan sabit nispi bant genişliği bantlarına ("Kritik Bantlar" olarak adlandırılır) bölünür.

Ses spektrumu verilerine bakmanın en iyi yolu, verileri logaritmik bir frekans ölçeğinde çizmektir.


"Doğal ses sinyallerinin pembe-benzeri bir spektruma sahip olduğu" ifadesi zaman ölçeğini dikkate almamaktadır. Uzun bir süre (~ 10 saniye) katılıyorum ve kesinlikle birkaç dakikadan fazla bu ifade doğru olma eğilimindedir. Ancak buradaki spektrumlar 0.55 saniyeden fazla hesaplanır. Girdi örneğin müzikse, çok daha tonal bir yapı beklerdim.
mtrw

2
"tonalite" spektrumun daha ince yapısını etkiler. Genel şekil (oktav başına enerji açısından) "üçgen ve çarpışma zili için solo" gibi bir şey olmadığı sürece müzik için çoğunlukla pembe olacaktır
Hilmar

1
mtrw: Kare dalga kesinlikle bir ton, ancak yüksek frekans harmonikleri hala 1 / f hızında düşüyor.
endolit

8

Adım 2'de, bir formül olmalıdır input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));burada, Ntampon numune sayısı, söz konusu olduğunda, 24576.

Adım 4 ve 5'de, dB değerleri yerine kare büyüklük değerleri üzerinde bin-bilge ortalaması alıyorum. Diyelim ki kare büyüklükleriniz var [4,6]. Onların ortalamasıdır 5, 10*log10(5) ~= 6.99. Ortalaması 10*log10(4)ve10*log10(6) bir 6.90.

İlk sorun, spektral sızıntıya neden olacağından ve düşük frekanslar DC hattından daha fazla kirlenmeye neden olacağından (kaçınılmaz olarak kötü bir tahmin) düşük frekanslara karşı önyargıya neden olabilir. İkinci sorun muhtemelen düşük frekanslarda bir fark yaratmayacaktır, ancak bence ölçümünüzün amacına yaklaşıyor.


fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]4610günlük10(5)(10günlük10(4)+10günlük10(6))/2

Yukarıdaki açıklamanızda, 4096 pencere genişliği (N) istediğinizi düşünüyorum, çünkü bu uygulanan FFT'nin genişliği. Bu pencerenin, her fft öncesinde dönüştürülmekte olan 4096 örneğe uygulanması gerekir.
Jacob

@Jacob - OP, 6 * 4096 puanlık FFT'yi hesaplıyor, ardından 4096 noktaya kadar azaltmak için 6 bitişik kutunun ortalamasını alıyor.
mtrw

5

1 / f gürültü birçok fiziksel, biyolojik ve ekonomik sistemde meydana gelir. Bazı araştırmacılar bunu her yerde yaygın olarak tanımlıyor.

pembe ve beyaz sesler

Doğrusal frekans dikey ekseni olan bir FFT spektrogramında pembe gürültü (solda) ve beyaz gürültü (sağda)


6
Soldaki gürültü kesinlikle pembe ama sağdaki biraz turuncu görünüyor :-)

1 / f gürültünün her yerde olduğu doğru olsa da, ses için iyi tasarlanmış bir analog ön uç genellikle düşük seviyelerde 1 / f gürültüye sahiptir, örneğin 10 Hz. İlgilenilen bantlarda beyaz gürültü hakimdir.
mtrw

4

Bu bekleniyor mu? Neden?

Birçok doğal sesin harmonikleri vardır , bu nedenle daha düşük temel frekanslar ve daha sonra temelin daha yüksek katlarında daha az enerji olacaktır. En solda çok fazla enerji anlamına gelen bir DC önyargısı olabilir. Başka bir etki, pencereleme işlevinizdir frekans tepkisini bozan .

Bunu düzeltmenin standart bir yolu var mı? Neredeyse bazı Math.Tan () büyüsü ait olduğu yerden kaldırabilir.

DC geçişi ile yüksek geçirgen bir filtre kullanarak başa çıkabilirsiniz. Basit bir uygulama, her numuneden uzun dönem ortalamasını çıkarmaktır (DÜZENLEME: ya da daha basit, daha düşük frekansları atın, örneğin FFT sonucunuzdan <50Hz). Farklı pencere işlevlerini de deneyebilirsiniz. pencereyi düzgün bir şekilde uyguladığınızdan emin olun (mtrw belirttiği gibi). Yanıttaki diğer herhangi bir doğrusal olmama durumu, bazı ideal girdiler ölçülerek ve bu eğriye normalleştirilerek düzeltilebilir.


Pencereleme işlevi frekans yanıtını etkilememelidir, değil mi?
endolit

@endolith: Verilerinizi pencereleme işlevi ile çarparsınız ve birleşik işlevin farklı bir yanıtı vardır. Bunu daha ayrıntılı olarak tartışan bağlantılı Wikipedia makalesini okuyun. Gerçek dünya örnekleriyle uğraşmanın gerçekliği, genellikle bir pencere (örn. Bir dikdörtgen) olmasıdır ve bu nedenle (sonsuz) kaynak sinyalinin frekans tepkisine yaklaşık olarak yaklaşabilirsiniz.
Guy Sirton

Belki de "frekans tepkisini" farklı düşünüyoruz. Bir sinyal sabitse ve ona bir pencere işlevi uygularsanız, hangi pencere işlevini kullanırsanız kullanın, yalnızca tüm frekansları eşit olarak etkileyen bir ölçek faktörüne göre farklılık gösteren spektrum aynı frekanslarda aynı genliklere sahip olmalıdır. Her bir frekans artışının genişliği farklı olacaktır, ancak artışların yüksekliği birbirine göre aynı olacaktır. Pencereleme işlevi, bazı frekansları diğerlerinden daha fazla azaltan bir filtre gibi davranmaz.
endolith

@ endolith: Sonsuz bir sinüs dalgası düşünün, şimdi bir cos ^ 2 penceresi ile çarpın. Orijinal frekansta hala bir bileşeniniz olacak, ancak genliği "kapalı" olacak ve pencereden yeni frekans bileşenlerine sahip olacaksınız. Buradaki ilk paragrafa bakın: en.wikipedia.org/wiki/Spectral_leakage
Guy Sirton

Evet, ama sonsuz sinüs dalgasının frekansı ne olursa olsun "kapalı" genlik aynı olacaktır, değil mi?
endolith
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.