Jakie są dobre sposoby na wykrycie przesterowania sygnału w nagraniu?


32

Biorąc pod uwagę nagranie, muszę wykryć, czy nastąpiło przycięcie.

Czy mogę bezpiecznie stwierdzić, że nastąpiło przycięcie, jeśli jakakolwiek (jedna) próbka osiąga maksymalną wartość próbki, czy też powinienem poszukać serii kolejnych próbek na maksymalnym poziomie?

Nagrywanie może być pobierane z 16 lub 24-bitowych przetworników A / C i konwertowane na wartości zmiennoprzecinkowe w zakresie od . Jeśli ta konwersja ma postać dzielenia przez lub , to prawdopodobnie ujemne piki mogą być nieco niższe niż -1, a próbki o wartości -1 nie są obcinane?1...121512231

Oczywiście zawsze można stworzyć sygnał specjalnie w celu pokonania algorytmu wykrywania obcinania, ale patrzę na nagrania mowy, muzyki, fal sinusoidalnych lub szumu różowego / białego.


8
Należy pamiętać, że poziom obcinania nie zawsze jest cyfrowym maksimum. Jeśli obwód analogowy (lub nawet analogowa strona ADC) ma nieco niższy poziom przycinania niż maksimum cyfrowe, to wcześnie się zapisze. Jeśli przycina analogowo, a następnie przechodzi przez pewne filtrowanie, nie będzie to nawet linia prosta. Jakie scenariusze musisz wykryć?
endolith,

1
Nagrania są wykonywane za pomocą urządzenia dźwiękowego na PC (zwykle podłączonego przez USB). Przeważnie są to odpowiedzi na bodziec zamiatania lub MLS i służą do obliczenia odpowiedzi impulsowej w pomieszczeniu. Nie kontroluję sprzętu, więc obcinanie może wystąpić nawet przy wyjściu bodźca. Nie myślałem o tym wcześniej, ale cieszę się, że o tym pomyślałeś.
Han

Odpowiedzi:


30

Byłem w trakcie pisania odpowiedzi prawie dokładnie tak, jak u Yody . Jest prawdopodobnie najbardziej niezawodny, ale zaproponowałem inne rozwiązanie, więc masz kilka opcji.


Jeśli weźmiesz histogram sygnału, bardziej niż prawdopodobne będzie kształt dzwonka lub trójkąta, w zależności od rodzaju sygnału. Czyste sygnały będą miały tendencję do podążania za tym wzorem. Wiele studiów nagrań dodaje efekt „głośności”, który powoduje niewielką nierówność u góry, ale nadal wygląda nieco gładko. Oto przykład prawdziwej piosenki znanego muzyka:

Histogram

Oto histogram sygnału, który Yoda podaje w swojej odpowiedzi:

Histogram bez obcinania

A teraz sprawa ich przycinania:

Histogram z obcinaniem

Tę metodę można czasem oszukać, ale jest to przynajmniej coś, co można wrzucić do torby z narzędziami w sytuacjach, gdy metoda FFT wydaje się nie działać dla Ciebie lub stanowi zbyt wiele obliczeń dla twojego środowiska.


2
To szalony niesamowity efekt. Bardzo interesujące.
Kortuk

Cieszę się, że zasugerowałeś tę metodę. Powinienem sam to
załączyć

Mówię to szczególnie dlatego, że wydaje się to być najbardziej możliwą do wdrożenia metodą. Jest to stosowana forma innych podanych opcji, ale wygląda na to, że sygnał „błędu” jest znacznie wyraźniejszy.
Kortuk,

1
Równie dobrze może wziąć najpierw wartość bezwzględną sygnału i uzyskać gładszy jednostronny histogram
endolith

Palce mnie swędzą, żeby wypróbować to na moich sygnałach. Dzięki.
Han

20

Najprostszą odpowiedzią, jeśli masz do czynienia z krótkimi nagraniami, jest ich odsłuchanie i wykrycie „trzaskania” (krótkiego, wzbogaconego dźwięku) podczas odtwarzania. Jednak bardziej niezawodnym rozwiązaniem jest analiza widma częstotliwości nagrania.

Przypomnij sobie, że gdy sygnał zostaje obcięty na pewnym progu, lokalnie przypomina falę kwadratową w przyciętych obszarach. Wprowadza to wyższe harmoniczne w widmie częstotliwości, które nie byłyby tam pierwotnie. Jeśli twój sygnał jest ograniczony pasmem (większość sygnałów w świecie rzeczywistym) i próbujesz znacznie powyżej wskaźnika Nyquista, to jest to dość wyraźne jak dzień.

Oto krótki przykład demonstrujący to w MATLAB. Tutaj tworzę pasmowy sygnał o czasie trwania 1s, próbkowany z częstotliwością 1000 Hz, a następnie przypinam go pomiędzy ±0.8(patrz górny wykres na poniższym rysunku)

time = 0:0.001:1;
cleanSignal = sin(2*pi*75*time).*chirp(time,50,1,200);
clippedSignal = min(abs(cleanSignal),0.8).*sign(cleanSignal);

wprowadź opis zdjęcia tutaj

Widać wyraźnie, że widmo częstotliwości pierwotnego, nielippedowanego przebiegu jest czyste i dochodzi do zera poza pasmem (lewy dolny róg), podczas gdy w sygnale obciętym występuje ogólne niewielkie zniekształcenie widma (oczekiwane w przypadku obcięcia) i większość co ważne, wyższe harmoniczne / skoki / niezerowe udziały w widmie poza pasmem sygnału (prawy dolny róg).

Zasadniczo może to być lepsze podejście, ponieważ wykrywanie obcinania na podstawie wartości nie jest na ogół dokładne, chyba że sam zaprojektowałeś sprzęt i dokładnie znasz wartość progu.


1
Niektóre z moich sygnałów (szczególnie MLS) idą w górę do częstotliwości Nyquista. Ta metoda prawdopodobnie nie zawsze ma dla mnie zastosowanie.
Han

@yoda Z widmami w dłoni, jak zatem można powiedzieć, że widmo jest „brudne”, jak już wskazałeś? Jaki test można wykonać?
Spacey

9

Trochę tego zależy od metody zapisu. Wygląda na to, że używasz tylko 1 konwertera, co nieco upraszcza.

Powinieneś szukać czegoś powyżej pewnego progu, a konkretnie więcej niż jednego punktu obok siebie. Zazwyczaj konwertery A / D nie odczytują wartości maksymalnej, chyba że dokładnie ją przetestujesz, więc zdaj sobie sprawę, że maksymalna wartość może być niższa niż się wydaje.

Biorąc pod uwagę twoje parametry, szukałbym kolejnych sygnałów powyżej 0,98 lub poniżej -98, z drobnymi poprawkami, aby określić, jaki powinien być optymalny próg (nie obniżyłbym go poniżej 0,9). Mądrze może być wykrycie jednego na maksimum, a drugiego blisko nad czymś takim jak .8.

Powodem zignorowania 1 określonego pomiaru jest to, że często dochodzi do skoków, które w ogóle nie mają nic wspólnego z sygnałem. Zmniejszy się to w przypadku korzystania z jednego znanego dobrego konwertera A / D. Jest prawdopodobne, że jeśli korzystasz z szeregu detektorów lub obrazu, niektóre detektory będą złe, potencjalnie często się obcinając.


Bardzo praktyczne porady tutaj. Wraz z podejściem @ Kellenjb powinno to dać mi wystarczająco dużo, aby rozpocząć pracę nad implementacją.
Han

3

MLS (sekwencje o maksymalnej długości) są szczególnie trudne do analizy pod kątem wycinania. Ich współczynnik szczytu (= szczyt / wartość skuteczna) jest bardzo zbliżony do 1, który jest nawet trzy dB mniejszy niż dla fali sinusoidalnej. Wiele przetworników C / A zaprojektowano tak, aby przyjmowały falę sinusoidalną w najgorszym przypadku, a MLS odtwarzany z pełną amplitudą może z łatwością przyciąć wyjściowy obwód interpolacji przetwornika C / A.

Kolejnym problemem jest to, że przycięty MLS wygląda prawie identycznie jak niecięty, ponieważ amplitudy są prawie wszystkie + szczytowe w pierwszej kolejności. Również analiza PDF nie działa, ponieważ plik PDF MLS to po prostu dwa duże piki na krawędziach.

W typowym pomiarze odpowiedzi impulsowej pomieszczenia najbardziej prawdopodobnym punktem zaczepienia jest w rzeczywistości przetwornik cyfrowo-analogowy, wzmacniacz lub głośnik. Po przejściu przez pokój wygląda znacznie mniej jak MLS i dlatego łatwiej jest ocenić wycinek za pomocą metod opisanych powyżej.

W prawie wszystkich pomiarach akustycznych poziom szumu zależy od szumu własnego mikrofonu lub szumów tła, a nie od A / D. Dlatego optymalizacja wzmocnienia wejściowego w A / D nie jest bardzo ważna, a pozostawienie wystarczającej ilości miejsca przed przesterowaniem (około 10 dB) jest całkowicie w porządku.

Zazwyczaj dobrym pomysłem jest mierzenie za pomocą szeregu różnych poziomów wzbudzenia i sprawdzenie SNR pomiaru. Na niskich poziomach dominuje akustyczny szum tła, a na wysokich poziomach coś ogranicza, kompresuje lub przycina. Sztuką dobrego pomiaru jest znalezienie odpowiedniego miejsca pomiędzy nimi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.