Привет, мне нужно уменьшить размер выборки аудиофайла wav с 44,1 кГц до 8 кГц. Я должен выполнять всю работу вручную с помощью байтового массива ... это для академических целей.Java - downsampling wav audio file
В настоящее время я использую 2 класса, раковину и источник, чтобы выталкивать и массивы байт. Все идет хорошо, пока я не доберусь до той части, где мне нужно уменьшить количество данных, используя линейную интерполяцию.
Поскольку я снижаю дискретизацию с 44100 до 8000 Гц, как я могу интерполировать массив байтов, содержащий что-то вроде 128 000 000 байтов? Прямо сейчас я вывожу 5, 6 или 7 байтов в зависимости от i% 2 == 0, i% 2 == 1 и i% 80 == 0 и выталкиваю среднее из этих 5, 6 или 7 байтов в новый файл ,
Результат - это меньший аудиофайл, чем оригинал, но он не может воспроизводиться на медиаплеере Windows (говорит, что при чтении файла есть ошибка), и есть много шума, хотя я слышу правильный трек позади шум.
Итак, чтобы подвести итог, мне нужна помощь относительно линейной интерполяционной части. Заранее спасибо.
Нам будет легче помочь найти ваши ошибки, если вы разместите код, который используете сейчас. –