Konvertieren Sie wav-audio-format byte-array floating point
Ich lese ein .wav-audio-Datei mit Java-AudioInputStream.Die audio-Datei ist 16 bit PCM unterzeichnet, mit samplerate = 44100, framesize = 2, framelength= 114048. Ich es geschafft, die Audio Daten in form eines byte-array, aber ich bin nicht sicher, wie viel Größe sollte ich zuweisen das byte-array, so dass ich es konvertieren zu floatinf Punkt-Werte.
Ich bin dabei einige audio-manipulation mit Goertzel-Algorithmus, die die Eingabe von float-array, so etwas wie "float[] x". Unten ist ein code-fragment, das ich verwende. Vielen Dank im Voraus.
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fileIn);
}
while ( numBytesRead != -1) {
numBytesRead = audioInputStream.read(audioBytes);
//Logic goes here
floatValue = byteArrayToFloat(audioBytes);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gehe ich davon aus der obigen, dass Sie nur einen einzelnen Kanal (2 byte-Proben * 1 Kanal = 2-byte-frames).
Erste Schritt ist, um die Daten als eine Sequenz von 16-bit-integral-Typ, die
short
in Java.Nun, wie Sie zu konvertieren, dass zu
float
s hängt davon ab, wie downstream-Funktionen erwarten, dass die audio-vertreten zu sein. Zum Beispiel, wenn Sie erwarten, dass floating-point-zahlen >= -1 und <= 1, dann können Sie dies tun:Leider gibt es eine Menge Möglichkeiten zum darstellen von audio.