tepe sınırlama / ses sıkıştırma formülü gereklidir


9

Etkili bir ses dalga formu zirveleri sınırlamak için bir formül arıyorum. Bu, bir ses seviyesini korumak için amplifikatör kazancını kontrol edecek bir "otomatik ses kontrolü" uygulaması değil, daha ziyade tek tek zirveleri ("yumuşak" kısaltmak) sınırlamak istiyorum. (Bunun harmonikleri getirdiğini biliyorum, ama verileri dinlemeye değil analiz etmeye çalışıyorum.)

Şimdiye kadar (çok kaba) formülüm:

factor = (10 * average / level) + exp(-sqrt(0.1 * level / average))

Burada seviyesi ani ses seviyesi, ortalama tarihsel ortalama ses düzeyi ve faktör "düzeltilmiş" seviyesi (üretmek için kullanılan bir çarpanı faktör katı seviyesi ).

Ayrıca, bu çarpan yalnızca 1'den küçük bir değeri hesapladığında uygulanır. Aksi takdirde seviye ayarlanmadan bırakılır.

Amaç, ayarlanan seviyeyi geçmiş ortalamanın bir katıyla (bu formülle yaklaşık 15x) sınırlamaktır. Bu formül ihtiyacım olan sorta, ama sayılar büyüdükçe bir "daldırma" sergiler. Yani, ayarlanan seviye (yani, faktör zaman seviyesi ) , ayarlanmamış seviyenin arttığı bir noktaya kadar artar, ancak asimptotik olmaktan ziyade, aslında küçülmeye başlar. (Aslında, birinci faktör öncelikle formülün aşırı yüksek değerlerle sıfıra gitmesini önlemek için eklenmiştir.)

(Değerleri bu şekilde sınırlamak istemenin sebebi, geçici gürültünün öncelikle ses seviyesinin çalışma ortalamasını ciddi şekilde etkilememesidir. Ancak horlama "geçici gürültü" analiz edilirken oldukça önemlidir, bu yüzden basitçe sustururum .)

Herkes daha iyi bir şey önerebilir mi? (Görünüşe göre, asimptotik davranış, istemediğinizde üretilmesi kolay, ancak bunu yaparken zor.)


Yanıtlar:


9

Burada iki sorun: seviyenin güvenilir bir şekilde nasıl tahmin edileceği ve verilerin nasıl sıkıştırılacağı.

  • "Tipik seviye" algılamanızı aykırı değerlere karşı sağlam hale getirmek için çalışma ortalaması yerine ortanca veya kantil gibi orijinal verilerde (sınırlı olmayan) sağlam istatistikler kullanın.
  • kxtanh(xk) bir sıkıştırma formülü olarak iyi çalışır ve aslında bazı ses devrelerinde (OTA'ları kullanarak) olan şeydir. Orijinal sinyalin dinamiklerini koruyan ve sadece geçici olanları kaldıran adaptif sıkıştırma elde etmek için, k düzleştirilmiş "ortalama" seviyeyi takip edin.C

misal

  • Mavi: orijinal sinyal
  • Yeşil: "Tipik seviye" tespiti olarak kayar pencerede mutlak değerin 2 katı
  • Kırmızı: tanh sıkıştırma (yukarıda yeşil ile çizilen seviyeye eşit k ile verilen formül)

Teşekkürler, bu umut verici görünüyor. Takacağım ve nasıl çalıştığını göreceğim.
Daniel R Hicks

1
Ben denedim ve (birkaç parmak kontrolleri temizlendikten sonra) iyi çalışıyor gibi görünüyor. Bununla ilgili tek sorunum, klips seviyesini veya herhangi bir şeyi susturmadan "diz" in keskinliğini ayarlamak için herhangi bir yol olmadığı görünüyor.
Daniel R Hicks

"Hareketli medyan" neden "hareketli ortalama" den daha iyi? Birçok yerde aykırı değerlere daha az duyarlı olduğunu okudum. Ama bunu gerçek verilerle göremiyorum . Bu soru hakkında bir fikrin var mı?
15:15, Basj
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.