Próbkowanie audio

Począwszy od Androida 5.0 (Lollipop) repróbkowanie dźwięku w filtrach FIR pozyskanych z funkcji windowed-sinc przez Kaisera. Okna Cesar ma te właściwości:

  • Można ją łatwo obliczyć dla parametrów projektowych (stoppasm, fale, przepustowość przejścia, częstotliwość odcięcia, długość filtra).
  • Jest to niemal optymalne dla redukcji energii w paśmie awaryjnym w porównaniu z ogólnym energii.

Zobacz P.P. Vaidyanathan, Systemy Multirate i Filter Banks, s. 50 za dyskusje na temat Kaiser Window i jego optymalizowanie oraz związek z prolatem sferoidalnym Windows.

Parametry projektu są obliczane automatycznie na podstawie wewnętrznych kryteriów wyznaczania jakości i pożądanych współczynników próbkowania. Na podstawie zostanie wygenerowany filtr sinc. W przypadku muzyki: resampler dla częstotliwości 44,1–48 kHz i odwrotnie jest generowany z wyższym niż w przypadku dowolnej konwersji o określonej częstotliwości.

Resamery dźwięku zapewniają lepszą jakość dźwięku aby osiągnąć tę jakość. Urządzenia do repróbkowania mogą jednak wprowadzać niewielkie ilości marszu w paśmie częstotliwości i aliasów harmonicznych, co może powodować w paśmie przejścia, dlatego nie używaj ich niepotrzebnie.

Sprawdzone metody próbkowania i ponownego próbkowania

W tej sekcji znajdziesz sprawdzone metody, które pomogą Ci uniknąć problemów ze współczynnikami próbkowania.

Wybierz częstotliwość próbkowania, aby dopasować ją do urządzenia

Ogólnie najlepiej jest wybrać częstotliwość próbkowania dla danego urządzenia, zwykle 44,1 lub 48 kHz. Zastosowanie częstotliwości próbkowania większej niż Częstotliwość 48 kHz zwykle obniża jakość, ponieważ wymaga użyte do jego odtworzenia.

Proste ponowne próbkowanie stosunki (wielofazy stałe i interpolowane)

Resampler działa w jednym z tych trybów:

  • Naprawiony tryb polifazy. Współczynniki filtra dla każdej polifazy są wstępnie obliczone.
  • Tryb polifazy interpolowanej. Współczynniki filtra dla każdej polifazy muszą być interpolowana z dwóch najbliższych wyliczonych wstępnie polifaz.

Ponowne próbkowanie działa najszybciej w trybie stałej polifazy, gdy stosunek danych wejściowych współczynnik wyjściowy L/M (z pominięciem największego wspólnego dzielnika) ma M mniej niż 256. Na przykład przy 44 100–48 000 konwersji, L = 147, M = 160.

W trybie stałej polifazy częstotliwość próbkowania jest zablokowana i nie zmienia się. W interpolacji w trybie polifazy, częstotliwość próbkowania jest przybliżona. Podczas odtwarzania na urządzeniu o częstotliwości 48 kHz częstotliwość próbkowania dryf to zwykle jedna próbka w ciągu kilku godzin. Zwykle nie jest to problemem, ponieważ błąd przybliżony jest znacznie mniejszy niż błąd częstotliwości powodowany przez wewnętrzny kwarc oscylatory, dryf cieplny lub zakłócenia (zwykle dziesiątki ppm).

Podczas odtwarzania wybierz częstotliwość próbkowania o prostym współczynniku, np. 24 kHz (1:2) i 32 kHz (2:3) na urządzeniu o częstotliwości 48 kHz, częstości i proporcje są dozwolone przez funkcję AudioTrack.

Używaj upsamplingu niż zmniejszanie próbkowania,

Częstotliwość próbkowania można zmieniać na bieżąco. Szczegółowość taka zmiana jest wynikiem wewnętrznego buforowania (zwykle po kilkuset próbki), a nie próbek po kolei. Tego ustawienia można użyć w przypadku efektów.

Nie zmieniaj dynamicznie częstotliwości próbkowania, gdy: zmniejszanie próbkowania. Zmiana częstotliwości próbkowania po ścieżce audio zmiany na poziomie około 5-10% w stosunku do pierwotnej stawki mogą powoduje ponowne obliczenie filtra przy zmniejszaniu próbkowania (w celu prawidłowego odfiltrowania filtra) stosowanie aliasów). Może to zużywać zasoby obliczeniowe i w wyniku włączenia dźwięku jeśli filtr zostanie zastąpiony w czasie rzeczywistym.

Ogranicz próbkowanie do maksymalnie 6:1

Downpróbkowanie jest zwykle wyzwalane przez wymagania sprzętowe. Gdy Konwerter współczynnika próbkowania jest używany do próbkowania w dół, staraj się ograniczyć współczynnik próbkowania do nie więcej niż 6:1, aby zapewnić dobre aliasy; (np. nie może przekraczać wartości od 48 000 do 8000). Filtr długości są dopasowywane do współczynnika próbkowania, ale można zaoszczędzić więcej. przepustowość przejścia przy wyższych współczynnikach próbkowania, aby uniknąć nadmiernego zwiększając długość filtra. Nie ma podobnych problemów z aliasami dla nad próbkowaniem. Zwróć uwagę, że niektóre części potoku audio może zapobiec zmniejszeniu próbkowania większych niż 2:1.

Jeśli martwi Cię czas oczekiwania, nie próbkuj ponownie

Ponowne próbkowanie zapobiega umieszczeniu ścieżki audio w narzędziu FastMixer. co oznacza, że opóźnienia są znacznie większe ze względu na dodatkowe, większy bufor w standardowej ścieżce Miksera. Ponadto występuje niejawne opóźnienie względem długości filtra w próbkowaniu, chociaż jest to zwykle rzędu milisekundy lub mniej, który nie jest tak duży, jak dodatkowy buforowanie w przypadku standardowej ścieżki Miksera. (zwykle 20 milisekund).

Użycie dźwięku zmiennoprzecinkowego

Użycie liczb zmiennoprzecinkowych do przedstawienia danych dźwiękowych może znacznie poprawić jakość dźwięku w wydajnych aplikacjach audio. Oto możliwości liczby zmiennoprzecinkowej: zalety:

  • Szerszy zakres dynamiczny.
  • Spójna dokładność w całym zakresie dynamicznym.
  • Większa rezerwa, dzięki której można uniknąć przycinania podczas obliczeń pośrednich i przejściowych.

Choć obrazy zmiennoprzecinkowe mogą poprawić jakość dźwięku, mają pewne wady:

  • Liczby zmiennoprzecinkowe wykorzystują więcej pamięci.
  • Operacje zmiennoprzecinkowe wykorzystują nieoczekiwane właściwości, np. dodanie to nie ma powiązania.
  • W obliczeniach liczb zmiennoprzecinkowych może być czasami utrata precyzji arytmetycznej z powodu zaokrągleń lub algorytmach niestabilnych numerycznych.
  • Skuteczne korzystanie z funkcji zmiennoprzecinkowych wymaga lepszego zrozumienia, aby uzyskać dokładne i możliwych do odtworzenia wyników.

Dawniej modele zmiennoprzecinkowe były znane z braku dostępności lub powolnego działania. To jest ale również w przypadku mniej zaawansowanych i osadzonych procesorów. Nowoczesne procesory na urządzeniach mobilnych występują obecnie w technologii sprzętowej zmiennoprzecinkowej o wydajności jest podobna (lub w niektórych przypadkach nawet szybsza) niż liczba całkowita. Nowoczesne procesory obsługują również SIMD, (jedna instrukcja, wiele danych), co może jeszcze bardziej zwiększyć wydajność.

Sprawdzone metody dotyczące dźwięku zmiennoprzecinkowego

Te sprawdzone metody pomogą Ci uniknąć problemów z obliczeniami liczb zmiennoprzecinkowych:

  • Używaj zmiennoprzecinkowych podwójnej precyzji do rzadkich obliczeń, np. obliczanie współczynników filtrów.
  • Zwróć uwagę na kolejność działań.
  • Deklarowanie jawnych zmiennych dla wartości pośrednich.
  • Używaj nawiasów bez ograniczeń.
  • Jeśli otrzymasz wynik NaN lub nieskończoność, użyj wyszukiwania binarnego, aby odkryć gdzie został wprowadzony.

W przypadku dźwięku zmiennoprzecinkowego kodowanie formatu audio AudioFormat.ENCODING_PCM_FLOAT jest używany podobnie jak ENCODING_PCM_16_BIT lub ENCODING_PCM_8_BIT do określenia Dane ścieżki audio formatów reklam. Odpowiadająca przeciążenie metoda AudioTrack.write() pobiera tablicę zmiennoprzecinkową, aby dostarczyć dane.

Kotlin

fun write(
        audioData: FloatArray,
        offsetInFloats: Int,
        sizeInFloats: Int,
        writeMode: Int
): Int

Java

public int write(float[] audioData,
        int offsetInFloats,
        int sizeInFloats,
        int writeMode)

Więcej informacji

W tej sekcji znajdziesz dodatkowe materiały na temat próbkowania i zmiennych zmiennoprzecinkowych.

Degustacja

Częstotliwość próbkowania

Ponowne próbkowanie

Kontrowersje dotyczące dużej głębi bitów i kHz

Liczba zmiennoprzecinkowa

W interpretacji dźwięku w powietrzu pomocne są te strony w Wikipedii:

W tym artykule znajdziesz informacje o tych aspektach liczb zmiennoprzecinkowych, które mają bezpośredni wpływ na twórców systemów komputerowych: