Witam Muszę zmniejszyć próbkę pliku audio WAV z 44,1 kHz do 8 kHz. Muszę wykonać całą pracę ręcznie z tablicą bajtów ... jest przeznaczona do celów akademickich.Java - downsampling pliku audio wav
Obecnie używam 2 klas, Sink and Source, do pop i push tablice bajtów. Wszystko idzie dobrze, aż dojdę do części, w której muszę zmniejszyć próbkę danych przy użyciu interpolacji liniowej.
Ponieważ próbuję z próbkowania w dół z 44100 na 8000 Hz, jak mogę interpolować tablicę bajtów zawierającą około 128 000 000 bajtów? Teraz pojawia się 5, 6 lub 7 bajtów w zależności od i% 2 == 0, i% 2 == 1 i i% 80 == 0 i wypycham średnią z tych 5, 6 lub 7 bajtów do nowego pliku .
Wynik jest rzeczywiście mniejszy plik audio niż oryginał, ale nie można go odtwarzać na Windows Media Player (mówi, że jest błąd podczas czytania pliku) i jest dużo hałasu, chociaż słyszę odpowiedni utwór za hałas.
Podsumowując, potrzebuję pomocy dotyczącej części interpolacji liniowej. Z góry dziękuję.
Ułatwi nam znalezienie znalezionych błędów, jeśli opublikujesz kod, którego teraz używasz. –