I am reading a .wav audio file using Java AudioInputStream.The audio file is 16 bit PCM signed, with samplerate = 44100, framesize = 2, framelength= 114048. I managed to get the Audio data in the form of a byte array but I am not sure how much size should I assign to this byte array so that I can convert it to floatinf point values.
I am doing some audio manipulation using Goertzel algorithm which takes input of float array, something like “float[] x”. Below is some code fragment that I am using. Thanks in advance.
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fileIn);
}
while ( numBytesRead != -1) {
numBytesRead = audioInputStream.read(audioBytes);
// Logic goes here
floatValue = byteArrayToFloat(audioBytes);
}
I’m assuming from the above that you have only a single channel (2 byte samples * 1 channel = 2 byte frames).
First step is to get the data as a sequence of a 16-bit integral type, which is
shortin Java.Now how you convert that to
floats depends on how downstream functions expect the audio to be represented. For example if they expect floating point numbers >= -1 and <= 1, then you can do this:Unfortunately there are a lot of ways to represent audio.