Pierwszym krokiem jest sprawdzenie, czy zarówno początkowa częstotliwość próbkowania, jak i docelowa częstotliwość próbkowania są liczbami wymiernymi . Ponieważ są liczbami całkowitymi, są automatycznie liczbami wymiernymi. Jeśli jeden z nich nie byłby liczbą racjonalną, nadal można byłoby zmienić częstotliwość próbkowania, ale jest to proces znacznie inny i trudniejszy.
22∗32∗52∗7227∗5332∗7225∗5
Poprzednie kroki należy wykonać bez względu na to, jak chcesz ponownie próbkować dane. Porozmawiajmy teraz o tym, jak to zrobić za pomocą FFT. Sztuką ponownego próbkowania z FFT jest wybranie długości FFT, które sprawią, że wszystko dobrze się ułoży. Oznacza to wybranie długości FFT, która jest wielokrotnością szybkości decymacji (w tym przypadku 441). Na przykład wybierzmy długość FFT 441, chociaż moglibyśmy wybrać 882 lub 1323 lub dowolną inną dodatnią wielokrotność 441.
Aby zrozumieć, jak to działa, pomaga to wizualizować. Zaczynasz od sygnału audio, który wygląda w dziedzinie częstotliwości mniej więcej tak jak na poniższym rysunku.
Po zakończeniu przetwarzania chcesz zmniejszyć częstotliwość próbkowania do 16 kHz, ale chcesz możliwie najmniej zniekształceń. Innymi słowy, po prostu chcesz zachować wszystko od powyższego obrazu od -8 kHz do +8 kHz i upuścić wszystko inne. To pokazuje poniższy obrazek.
Uwaga: częstości próbkowania nie są skalowane, służą jedynie zilustrowaniu pojęć.
25∗5
Jak możesz podejrzewać, istnieje kilka potencjalnych problemów. Przejrzę je i wyjaśnię, jak je pokonać.
Co robisz, jeśli Twoje dane nie są ładną wielokrotnością współczynnika dziesiętnego? Możesz łatwo temu zaradzić, wypełniając koniec danych wystarczającą liczbą zer, aby był wielokrotnością współczynnika dziesiętnego. Dane są wypełniane ZANIM zostaną FFT.
ll−1zera (należy pamiętać, że liczba próbek danych i liczba próbek wypełnienia muszą ZARÓWNO być dodatnią wielokrotnością współczynnika dziesiętnego - możesz zwiększyć długość wypełnienia, aby spełnić to ograniczenie), FFT 'wypełnianie danych, mnożenie domeny częstotliwości dane i filtr, a następnie aliasing wyników wysokiej częstotliwości (> 8 kHz) w dół do wyników niskiej częstotliwości (<8 kHz) przed upuszczeniem wyników wysokiej częstotliwości. Niestety, ponieważ filtrowanie w dziedzinie częstotliwości jest samo w sobie dużym tematem, nie będę mógł bardziej szczegółowo omówić tej odpowiedzi. Powiem jednak, że jeśli filtrujesz i przetwarzasz dane w więcej niż jednym kawałku, będziesz musiał zaimplementować Overlap-and-Add lub Overlap-and-Save, aby filtrowanie było kontynuowane.
Mam nadzieję, że to pomoże.
EDYCJA: Różnica między początkową liczbą próbek w dziedzinie częstotliwości a docelową liczbą próbek w dziedzinie częstotliwości musi być równa, aby można było usunąć tę samą liczbę próbek z dodatniej strony wyników, jak z ujemnej strony wyników. W przypadku naszego przykładu początkową liczbą próbek była szybkość decymacji lub 441, a docelową liczbą próbek była szybkość interpolacji lub 160. Różnica wynosi 279, co nie jest parzyste. Rozwiązaniem jest podwojenie długości FFT do 882, co powoduje, że docelowa liczba próbek również podwaja się do 320. Teraz różnica jest równa i możesz bez problemu upuścić odpowiednie próbki w dziedzinie częstotliwości.