Szukam formuły, która skutecznie kompresuje kształt fali dźwiękowej w celu ograniczenia pików. Nie jest to aplikacja „automatycznej regulacji głośności”, w której można kontrolować wzmocnienie wzmacniacza, aby utrzymać poziom głośności, ale raczej chcę ograniczyć („miękkie” obcięcie) poszczególnych pików. (Wiem, że to wprowadza harmoniczne, ale staram się analizować dane, a nie ich słuchać).
Moja (bardzo prymitywna) formuła to:
factor = (10 * average / level) + exp(-sqrt(0.1 * level / average))
Tam, gdzie poziom jest chwilowym poziomem dźwięku, średnia jest historycznym średnim poziomem dźwięku, a współczynnik jest mnożnikiem używanym do uzyskania „skorygowanego” poziomu ( współczynnik razy poziom ).
Ponadto, ten mnożnik jest stosowany tylko wtedy, gdy oblicza się do wartości mniejszej niż 1. W przeciwnym razie poziom nie zostanie skorygowany.
Celem jest ograniczenie skorygowanego poziomu do pewnej wielokrotności (około 15x przy tej formule) średniej historycznej. Ta formuła jest trochę potrzebna, ale wykazuje „spadek”, gdy liczby stają się większe. Oznacza to, że regulować poziom (czyli współczynnik razy poziom ) zwiększa się do punktu, wraz ze wzrostem poziomu rozliczony ale wtedy zamiast dzieje asymptotycznej, zaczyna się rzeczywiście coraz mniejsze. (W rzeczywistości pierwszy czynnik został dodany przede wszystkim, aby zapobiec zerowaniu formuły z bardzo wysokimi wartościami).
(Powodem, dla którego warto ograniczyć wartości w ten sposób, jest przede wszystkim to, że hałas przejściowy nie zakłóca poważnie średniej bieżącej poziomu dźwięku. Ale gdy analizujesz chrapania, „hałas przejściowy” jest dość znaczący, więc mogę go po prostu stłumić) .)
Czy ktoś może zasugerować coś lepszego? (Wygląda na to, że zachowanie asymptotyczne jest łatwe do wytworzenia, gdy tego nie chcesz, ale trudne, gdy tego chcesz.)
źródło
Odpowiedzi:
Dwa problemy tutaj: jak uzyskać wiarygodne oszacowanie poziomu i jak skompresować dane.
źródło