2

オーディオをバイト値に変換できます。

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;


public class Audio_to_bytes {

    public static void main(String args[]) throws IOException {
        File WAV_FILE = new File("/home/cybersecurity/Desktop/scream2.wav");
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        AudioInputStream in = null;
        try {
            in = AudioSystem.getAudioInputStream(WAV_FILE);
        } catch (UnsupportedAudioFileException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }


        int read, i;
        byte[] buff = new byte[1024];
        while ((read = in.read(buff)) > 0) {
            out.write(buff, 0, read);
        }
        out.flush();
        byte[] audioBytes = out.toByteArray();


    }
}

悲鳴を含むオーディオを特定したい.そのためには、オーディオを実数に変換して、fftを適用できるようにする必要があります.誰でもこれを行う方法を教えてくれますか?

4

1 に答える 1

1

このコード スニペットを思いつき、テストしました。お役に立てば幸いです。以前に作成してバイトに変換した 4 つの float を (バイトとして) 割り当てています。次に、ByteBuffer の NIO FloatBuffer ビューを使用して、NIO がそれ以上の処理を行わなくても自動的に 4 バイトを浮動小数点数として返すようにします。

    ByteBuffer bb = ByteBuffer.allocate(4*4);
    bb.put(new byte[]{64,-112,0,0,66,-10, 22,-68, 66,9, 73, -43, 63,-114, 56, -38});
    bb.rewind();
    FloatBuffer floatBuffer = bb.asFloatBuffer();


    for(int i = 0; i < 4;i++){
        System.out.println(floatBuffer.get());
    }
于 2013-04-15T13:19:38.297 に答える