LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Music Production / Dither przy eksporcie do 16 bitów: zniekształcenia,...
Ten artykuł w innych językach:

Dither przy eksporcie do 16 bitów: zniekształcenia, modulacja szumu i noise shaping, pomiar

Dither przy eksporcie do 16 bitów: zniekształcenia, modulacja szumu i noise shaping, pomiar

Management Summary

Dither to bardzo cichy szum dodawany przy zapisie muzyki z mniejszą liczbą dostępnych poziomów głośności, na przykład w końcowym pliku 16-bitowym. Zastępuje regularne zniekształcenia zaokrągleń równiejszym szumem tła. Ma to znaczenie zwłaszcza przy cichym wyciszaniu i wygasającym pogłosie. Różne metody inaczej rozkładają szum; mniej szumu w wrażliwych pasmach słuchu może oznaczać więcej łącznie. Dither należy do końcowego zmniejszenia precyzji i nie naprawia wcześniejszych uszkodzeń brzmienia.

Spis treści
  1. Co zmieniają trzy podstawowe warianty
  2. Jak wykonano pomiar
  3. Cichy sinus może zostać mocno zmieniony bez ditheringu
  4. Dlaczego TPDF szumi równiej niż RPDF
  5. Noise shaping przenosi szum między pasmami
  6. Praktyczna kolejność eksportu
  7. Granice pomiaru
  8. Pytania i odpowiedzi
  9. Powiązane pomiary
  10. Źródła

Dither to bardzo cichy szum dodawany przy zaokrąglaniu sygnału audio do mniejszej głębi bitowej. Zapobiega powstawaniu powtarzalnego wzoru błędów związanego z muzyką. Ceną jest niewielki dodatkowy szum tła. Dither nie naprawia przesterowania ani nie dodaje miksowi mocy.

Plik PCM o głębi 16 bitów zapisuje każdą próbkę na jednym z 65 536 poziomów. Odstęp między sąsiednimi poziomami to jeden LSB, czyli najmniej znaczący bit. Przy pełnej amplitudzie równej 1 odstęp wynosi 1/32 768. Ciche wyciszenia i końcówki pogłosu mogą przechodzić przez zaledwie kilka takich poziomów. Zaokrąglanie ma tam większe znaczenie niż w głośnym refrenie.

Co zmieniają trzy podstawowe warianty

  • Bez ditheringu: ta sama wartość wejściowa zawsze trafia na ten sam poziom wyjściowy. Błąd może tworzyć dodatkowe tony związane z sygnałem.
  • RPDF: wartości losowe mają równomierny rozkład w zakresie szerokim na jeden LSB. Przy idealnym zaokrąglaniu bez przeciążenia średni błąd przestaje zależeć od sygnału. Ilość szumu nadal może się jednak zmieniać wraz z sygnałem.
  • TPDF: rozkład trójkątny obejmuje dwa LSB od minimum do maksimum. W typowym układzie bez późniejszego odejmowania ditheringu zarówno średni błąd, jak i jego moc nie zależą od wejścia. Dodany szum pozostaje w pliku dostarczanym do odtwarzania.

Te zasady dotyczą zaokrąglania, a nie zniekształceń już obecnych w nagraniu. Znaczenie ma podana siła szumu: dowolna ilość szumu o rozkładzie trójkątnym nie zapewnia takiego samego wyniku. Przeciążenie wyjścia również wykracza poza ten prosty model.

Jak wykonano pomiar

Pomiar kontrolny wykorzystał FFmpeg 7.1.5 na komputerze aarch64, próbki mono 44,1 kHz w 32-bitowym formacie zmiennoprzecinkowym i konwersję do 16-bitowego PCM ze znakiem. Częstotliwość próbkowania nie zmieniała się. Filtr miał postać aresample=osf=s16:dither_method=…. Opcja -cpuflags 0 wyłączała optymalizacje właściwe dla procesora.

Test obejmował 41 stałych poziomów od 0 do 2 LSB, po jednej sekundzie, dziesięciosekundowe sinusoidy 1 kHz o szczytach −60 i −96 dBFS oraz dziesięć sekund cyfrowej ciszy. Statystyki stałych poziomów wykorzystywały środkowe 0,8 sekundy. Analiza tonów i szumu obejmowała środkowe osiem sekund. Poziomy szumu to wartości skuteczne, czyli RMS, względem pełnej amplitudy. Nie są oceną głośności ani wynikiem odsłuchu.

Średni błąd i rozrzut dla stałych wejść: porównanie bez ditheringu, z RPDF i TPDF.
Średni błąd i rozrzut przy konwersji do 16 bitów, bez ditheringu, z RPDF i z TPDF.

Cichy sinus może zostać mocno zmieniony bez ditheringu

Przy −96 dBFS sinus sięgał niewiele ponad pół LSB. Po zaokrągleniu bez ditheringu zostały krótkie impulsy. Ton podstawowy 1 kHz znajdował się 3,67 dB poniżej zamierzonego poziomu. Trzecia harmoniczna przy 3 kHz leżała tylko 0,87 dB poniżej tego tonu. Przy −60 dBFS wszystkie pozostałe składowe od 20 Hz do 20 kHz łącznie leżały 38,33 dB poniżej tonu podstawowego.

Z RPDF lub TPDF ton podstawowy przy −96 dBFS odbiegał w tym teście od celu najwyżej o 0,04 dB. Nie oznacza to zniknięcia szumu. TPDF zastąpił wzór zaokrągleń zależny od sygnału znacznie równiejszym szumem tła.

Dlaczego TPDF szumi równiej niż RPDF

Dla stałych wejść odchylenie standardowe wyjścia RPDF wynosiło od 0 do 0,50 LSB. Odchylenie standardowe opisuje rozrzut wokół średniej. Dokładnie na poziomie całkowitym w tym teście nie powstawał szum. W połowie między dwoma poziomami rozrzut osiągał 0,50 LSB. Wygasający sygnał napotyka więc różną ilość szumu.

Z TPDF rozrzut dla tych wejść pozostawał między 0,49 a 0,50 LSB. Idealna wartość skuteczna całego błędu wynosi 0,5 LSB, czyli około −96,3 dBFS przy 16 bitach. W cyfrowej ciszy zmierzono −96,37 dBFS. Szum zostaje także w pauzach, ale jego poziom nie podąża za wejściem tak jak przy RPDF.

Noise shaping przenosi szum między pasmami

Noise shaping zawraca przefiltrowaną część błędu zaokrąglenia do konwersji. Może zmniejszać szum w pasmach, na które słuch jest bardziej wrażliwy, i zwiększać go gdzie indziej. Mniej szumu w jednym paśmie nie oznacza więc mniejszego szumu łącznie. Poniższe wartości opisują badane metody FFmpeg przy 44,1 kHz:

Metoda Cały szum, dBFS RMS 20 Hz do poniżej 4 kHz
TPDF −96,37 −103,84
TPDF z filtrem górnoprzepustowym −96,64 −109,17
Lipshitz −84,09 −120,68
F-weighted −77,84 −119,87
Shibata −72,10 −113,55

Lipshitz zmniejszył szum poniżej 4 kHz o około 16,84 dB w porównaniu z TPDF. Jednocześnie szum łączny wzrósł o 12,28 dB. TPDF z filtrem górnoprzepustowym zmienia rozkład częstotliwości dodawanego szumu; wymienione metody noise shapingu dodatkowo wykorzystują sprzężenie zwrotne błędu. Jeśli żądany filtr kształtujący nie jest dostępny dla wybranej częstotliwości próbkowania, FFmpeg może przejść na TPDF z filtrem górnoprzepustowym. Dlatego kontrola obejmuje także komunikaty ostrzegawcze.

Praktyczna kolejność eksportu

  1. Zachowanie nieprzetworzonego źródła i używanie 24 bitów lub 32-bitowego formatu zmiennoprzecinkowego do dalszego masteringu.
  2. Zakończenie EQ, limitowania i zmiany częstotliwości próbkowania przed końcową redukcją do 16 bitów.
  3. Jeden odpowiedni etap ditheringu dla tej redukcji. Bez jednoczesnego włączania ditheringu we wtyczce i oknie eksportu.
  4. Kontrola formatu, szczytów, początku i końca wyeksportowanego pliku oraz odsłuch wyniku.

Przykład FFmpeg jawnie wybiera TPDF i zapisuje nowy plik WAV w 16-bitowym PCM. -n zapobiega nadpisaniu istniejącego pliku wyjściowego. Wejście wymaga zapasu dla szczytów, aby uniknąć przeciążenia.

ffmpeg -n -i input.wav -af "aresample=osf=s16:dither_method=triangular" -c:a pcm_s16le output.wav

Resampler FFmpeg domyślnie nie dodaje ditheringu, dopóki metoda nie zostanie wybrana. Pole eksportu w FL Studio jest opisane dla 16-bitowego WAV i MP3. Stosuje kształtowany szum, którego większość leży powyżej 10 kHz. Podręcznik nie identyfikuje filtra, więc liczby z FFmpeg nie są pomiarem eksportu FL Studio. Przy eksporcie 24-bitowym i 32-bitowym zmiennoprzecinkowym to pole nie działa.

Granice pomiaru

Stałe wartości, sinusoidy i cisza wyjaśniają działanie konwersji. Nie ustalają słyszalności dla każdego utworu. Nie przeprowadzono odsłuchu ani testu eksportu FL Studio. Dodatkowa kontrola obecnej wersji FFmpeg z optymalizacjami CPU i bez nich nie odtworzyła wcześniej zgłaszanego przesunięcia składowej stałej o pół LSB. Sama architektura procesora nie wystarcza więc do przewidzenia takiego przesunięcia.

Pytania i odpowiedzi

Czy każda operacja na pliku 16-bitowym wymaga ponownego ditheringu?

Nie. Kopia zachowująca identyczne bity nie zmienia próbek. Wiele zmian poziomu, efektów i zmian częstotliwości próbkowania tworzy natomiast wartości pośrednie, które wymagają zaokrąglenia przy ponownym zapisie w 16 bitach. Znaczenie ma faktyczna zmiana wartości próbek.

Dlaczego unikać powtarzanego ditheringu?

Kolejny etap dodaje następny składnik błędu. Dwa niezależne składniki o jednakowej mocy mają łącznie około 3 dB więcej mocy niż każdy osobno. Nie jest to stały wzrost dla każdego łańcucha: zależność między sekwencjami szumu, filtrowanie i różne poziomy ditheringu zmieniają wynik. Plik roboczy o wyższej rozdzielczości pozwala uniknąć zbędnych powtórnych redukcji.

Czy dither przy 24 bitach zawsze jest bezużyteczny?

Test 16-bitowy nie daje uniwersalnej reguły. Teoretyczny błąd TPDF przy 24 bitach wynosi około −144,5 dBFS, zwykle znacznie poniżej szumu toru odtwarzania. O zastosowaniu ditheringu nadal decydują konwerter, format docelowy i przebieg pracy. Udokumentowane zachowanie pola FL Studio dotyczy konkretnego produktu.

Powiązane pomiary

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA do ochrony przed spamem.

Napisanie komentarza

Doświadczenia z innymi programami DAW i wtyczkami, odmienne wyniki pomiarów oraz pytania są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.