Я хотел бы прочитать аудиофайл с пониженной частотой от 22050 Гц до 8000 Гц.Размер буфера был 512 для 22050 Гц.Есть ли какое-либо решение для этого или любого другого подхода для чтения файлов WAV с пониженной дискретизацией в java?
Подход для чтения аудиофайла был реализован с использованием класса ReadExample из http://www.labbookpages.co.uk/audio/javaWavFiles.html, который работал правильно для22050 Гц оригинальное аудио.
Когда я уменьшил частоту дискретизации, используя librosa Python, и записал файл на частоте 8000 Гц, чтобы прочитать этот файл, используя метод ReadExample, он выдал исключение -
Error :WavFileException: Compression Code 3 not supported WavFileException: Compression Code 3 not supported
Process finished with exit code -1
код равен -
import java.io.*;
public class ReadExample
{
public static void main(String[] args)
{
try
{
WavFile wavFile = WavFile.openWavFile(new File(args[0]); //22050Hz filepath
wavFile.display();
int numChannels = wavFile.getNumChannels(); //numChannels = 1
double[] buffer = new double[512 * numChannels];
int framesRead;
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
do
{
framesRead = wavFile.readFrames(buffer, 512);
for (int s=0 ; s<framesRead * numChannels ; s++)
{
if (buffer[s] > max) max = buffer[s];
if (buffer[s] < min) min = buffer[s];
}
}
while (framesRead != 0);
wavFile.close();
System.out.printf("Min: %f, Max: %f\n", min, max);
}
catch (Exception e)
{
System.err.println(e);
}
}
}
Ожидаемым результатом было получение значений в буфере как обычно.