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?
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.
audio
algorithms
Han
źródło
źródło
Odpowiedzi:
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:
Oto histogram sygnału, który Yoda podaje w swojej odpowiedzi:
A teraz sprawa ich przycinania:
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.
źródło
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)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.
źródło
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.
źródło
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.
źródło